打印

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

[复制链接]
8178|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个字节。

使用特权

评论回复
5
香水城| | 2011-8-1 16:56 | 只看该作者
看一段程序的执行时间,最简单的方法是在这段程序前后分别放一条语句,翻转一个I/O口,用示波器看输出波形,就知道执行时间了。

使用特权

评论回复
6
12812ty|  楼主 | 2011-8-2 19:04 | 只看该作者
5# 香水城
手册看错了···  cortex-m3的中断响应是12个时钟周期   执行指令的话最长是6个时钟周期 最短执行一条指令14ns(72MHZ主频) 这个和程序有没有跳转相关  看了香主的博客 flash中指令的时序分析 懂了
谢过
还是用示波器方便一些

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

42

帖子

1

粉丝