你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如何使用CYCLECOUNTER快速的测量执行时间?

[复制链接]
麦克泰技术 发布时间:2021-1-8 13:30

Cortex-M3/M4/M7内核中有一个DWT单元(Data Watch and Trace Unit),其中包含了一个时钟周期寄存器,频率跟CPU的时钟相同。IAR EWARM的C-SPY调试系统基于该寄存器实现了一个64位的循环周期计数器CYCLECOUNTER,能够精确的测量程序的执行时间,并且可以与C-SPY宏结合,成为开发人员非常有用的一个工具。

7 O9 H8 K( @9 y8 R+ ^6 Y, H
CYCLECOUNTER的显示

在IAR EWARM进入调试后,从View->Register打开寄存器窗口,在窗口的下拉选项中选择“CPU Registers”。与CYCLECOUNTER相关的还有3个寄存器:CCTIMER1, CCTIMER2和CCSTEP。当指令单步执行并停止时,这4个寄存器的值都会更新。CCSTEP是前一次停止到这一次停止中间的时钟周期,CYCLECOUNTER、CCTIMER1和CCTIMER2显示累积的时钟周期。


9 q- Q0 n* V: Y

CYCLECOUNTER和CCTIMER1/CCTIMER2的区别在于,CCTIMER1/CCTIMER2的值可以被用户修改,而CYCLECOUNTER和CCSTEP的值不能被用户修改。测量执行时间的最简单方法之一是使用用户断点读取这些值。

1.png ! O* W# k$ U9 `" J% J
寄存器窗口获取执行时间9 B- }+ b" z$ W# T4 d

当你想要测量源代码中从一点到另一点的执行时间时,你必须记住CYCLECOUNTER的前一个值,并获得新的值,然后通过减去CYCLECOUNTER的值来计算执行时间。

2.png

当程序在开始断点处停止时,CCTIMER1的值应该被清除为零。当程序在停止断点处停止时,这个值就是执行时间。C-SPY有两个周期计数器CCTIMER1和CCTIMER2来测量执行周期。

3.png
6 B7 O+ R: {" J* ?: n7 l
C-SPY宏自动测量
& X/ ^+ _; Y% u6 m) L2 u

C-SPY有一个宏系统,可以用来使测试过程更有效。这些宏可以使用CYCLECOUNTER和CCTIMER自动测量执行时间。例如,可以实现两个宏函数:“Clear_TIMER1”和“Dump”,分别用于清除CCTIMER1和显示CCTIMER1、CYCLECOUNTER到Debug log窗口。

4.png

将这两个宏函数保存到文本文件“cycle.mac”,然后打开IAR EWARM的工程选项设置,从Debugger->Setup选择这个宏文件。

5.png

在此之后,在你想要测量执行周期的地方设置两个断点。选择View -> Breakpoints打开Breakpoint窗口。

6.png

在Breakpoints窗口中,选择开始断点并右键单击该断点。然后选择[Edit. .],并在Expression输入:Clear_TIMER1()。

7.png

选择停止断点并右键单击该断点。然后选择[Edit. .],并在Expression输入:Dump()。

8.png

在这些设置之后,我们就可以开始执行了。当开始执行时,消息显示在Debug log窗口中。此外,还可以复制和粘贴输出消息。

9.png
4 }6 y& c, j  W( ]1 m) u
收藏 1 评论1 发布时间:2021-1-8 13:30

举报

1个回答
Kevin_G 回答时间:2021-1-11 11:19:29
有用

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版