问:IAR中程序执行时间计算 stm32

[复制链接]
9637|5
 楼主| 12812ty 发表于 2011-7-30 22:39 | 显示全部楼层 |阅读模式
1 按照cortex-m3手册的说法 一条指令的执行时间为12个时钟周期,举例,找出一段代码,进入调试状态 然后反汇编 得到代码结束地址0X8001d7c  开始地址0X800171E 那么指令的个数为(1d7c-171e)/4=407  总的执行时间则为 407*12(1/72)=67us (主频72M)   我这么有没有错?
2 IAR的仿真可以得到每段程序的执行周期 进而计算出时间 但是我不仿真的时候程序都是可以正常执行的  仿真的时候程序都停在RCC或者下载等等地方 不能正常运行 因此得不到时间  不知道仿真还需要改哪些地方 参考这里http://www.stmfans.com/bbs/viewthread.php?tid=2102&highlight=IAR

谢谢高手解答   最简单的方法还是用示波器吧?
drache2009 发表于 2011-7-30 23:03 | 显示全部楼层
还是得用示波器,仿真应该只是@数**算。还有用库函数和直接写寄存器也是有正差的。昨天用端口测,用的寄存器命令(输出高低电平)要快几个10左右ns。
307610084 发表于 2011-8-1 16:36 | 显示全部楼层
我也想知道……
香水城 发表于 2011-8-1 16:54 | 显示全部楼层
1 按照cortex-m3手册的说法 一条指令的执行时间为12个时钟周期,举例,找出一段代码,进入调试状态 然后反汇编 得到代码结束地址0X8001d7c  开始地址0X800171E 那么指令的个数为(1d7c-171e)/4=407  总的执行时间则为 ...
12812ty 发表于 2011-7-30 22:39


一条指令的执行时间为12个时钟周期?这是最长的指令吧,LZ再好好地仔细看看手册。

还有,你的计算中那个除以4是哪里来的?Cortex-M3很多指令只有2个字节。
香水城 发表于 2011-8-1 16:56 | 显示全部楼层
看一段程序的执行时间,最简单的方法是在这段程序前后分别放一条语句,翻转一个I/O口,用示波器看输出波形,就知道执行时间了。
 楼主| 12812ty 发表于 2011-8-2 19:04 | 显示全部楼层
5# 香水城
手册看错了···  cortex-m3的中断响应是12个时钟周期   执行指令的话最长是6个时钟周期 最短执行一条指令14ns(72MHZ主频) 这个和程序有没有跳转相关  看了香主的博客 flash中指令的时序分析 懂了
谢过
还是用示波器方便一些
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

42

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部