【发布时间】:2015-06-05 02:20:51
【问题描述】:
我希望在实时操作系统RTEMS 中分析一些代码。本质上,rtems 有一堆函数可以读取时间,其中最有用的是rtems_clock_get_ticks_since_boot。
这里的问题是,无论出于何种原因,报告的时钟滴答都与我们的状态机循环速率同步,5kHz,而处理器运行在大约200MHz(嵌入式系统)。我知道这一点,因为我记录了时钟时间,等了 1 秒,只有 5000 个滴答声过去了。
所以问题是:
如何从 RTEMS 获取实际的 CPU 滴答数?
PS。
clock() 来自 GNU C(有同样的问题)
有一个我一直在研究here 的指南,但我得到了impossible constraint in asm,这表明我需要使用一些不同的汇编器关键字。也许有人可以指点我类似的东西?
上下文
我想分析一些代码,所以本质上是:
start = cpu_clock_ticks()
//Some code
time = cpu_clock_ticks() - start;
代码运行时间少于 0.125 毫秒,因此 clock() 和其他 rtems 函数获得的 8khz 计数器不会削减它。
【问题讨论】:
-
在您推荐分析软件之前,该应用程序对时间敏感并且不能与分析器一起使用:(
-
您有备用的 GPIO 引脚吗?我们将示波器探头连接到 GPIO 引脚。将引脚初始化为无效。在函数开始时置位引脚,在函数结束时置低。在 o'scope 上测量脉冲宽度。
-
@ThomasMatthews 不会有任何我可以轻松访问的 GPIO。但也许我可以找到类似的解决方案。您应该将此添加为答案,包括更多细节,我会赞成。