打印

如何用JLINK ULINK JTAG 查看 KEIL /MDK 某条指令执行时间

[复制链接]
1600|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
方法一:

为了保证在MDK中读取正确的程序运行时间,必须对仿真器的跟踪项进行设置。

以ULink2为例:

沙发
monkeypony|  楼主 | 2015-5-26 15:23 | 只看该作者
(1)在工程的“ Option  for Target ..”目标选项界面中,选择标签“Debug”,进行调试设置界面,选择使用“Cortex-M3-ULIK2”作为仿真器,然后点击右侧的“Settings”按键,进入ULINK设置界面。

使用特权

评论回复
板凳
monkeypony|  楼主 | 2015-5-26 15:24 | 只看该作者
(2)点击标签“Trace”进入跟踪设置界面,将“Core  Clock:”右侧的编辑区输入你的CPU的频率,例如你的实际CPU运行频率为72MHz。

使用特权

评论回复
地板
monkeypony|  楼主 | 2015-5-26 15:24 | 只看该作者
(3)“Core  Clock”的值决定MDK以什么频率来计算指令周期,因为“Core  Clock”的默认值为10MHz,因此如果不修改这个值的话,MDK计算每条指令的运行时间是按10MHz频率来计算的。只有修改为实际使用的频率值,才能得到正确的指令周期。

  (我用的是芯片型号: stm32f100CB  它的系统时钟为24MHZ)

使用特权

评论回复
5
monkeypony|  楼主 | 2015-5-26 15:24 | 只看该作者

使用特权

评论回复
6
monkeypony|  楼主 | 2015-5-26 15:25 | 只看该作者
(4)回到kei 调式界面,可在Keil调试时左边,看到Proect Workspace下的Internal 看到sec即是时间,执行断点调试,即可计算时间了。

开始 执行写flash 前: 注意时间为Internal ->sec :2.13051933

执行完flash 写命令后,注意时间为Internal ->sec :2.15888279
比较一下前后差值: 即为写flash的时间:0.02836346s= 28.3546ms !!!

使用特权

评论回复
7
monkeypony|  楼主 | 2015-5-26 15:55 | 只看该作者

使用特权

评论回复
8
monkeypony|  楼主 | 2015-5-26 21:48 | 只看该作者

使用特权

评论回复
9
monkeypony|  楼主 | 2015-5-26 21:48 | 只看该作者
方法二:通过示波器查看;(我用JTAG 没有实时跟踪语句执行时间,可以用这种方法)

在测试语句先后加上 置位某一管脚 电平的方法 ,通过设置断点,示波器捕捉 高电平 的持续时间---如上图 代码部分

使用特权

评论回复
10
麦可可| | 2015-6-19 19:11 | 只看该作者
可以看到指令运行的时间,收藏了,谢谢楼主的分享。

使用特权

评论回复
11
zhangbo1985| | 2015-6-19 19:13 | 只看该作者
monkeypony 发表于 2015-5-26 15:24
(2)点击标签“Trace”进入跟踪设置界面,将“Core  Clock:”右侧的编辑区输入你的CPU的频率,例如你的实际 ...

这个界面的截图的在哪呢?实际操作时找不到“trace”的啊。。

使用特权

评论回复
12
zhangbo1985| | 2015-6-19 19:16 | 只看该作者

明白了,还是这样看的啊。。

使用特权

评论回复
13
tongbu2015| | 2015-6-21 21:37 | 只看该作者
monkeypony 发表于 2015-5-26 15:23
(1)在工程的“ Option  for Target ..”目标选项界面中,选择标签“Debug”,进行调试设置界面,选择使用“ ...

这个地方需要选择好编译器的型号的,很重要的。

使用特权

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

本版积分规则

133

主题

715

帖子

0

粉丝