gpt4 book ai didi

c++ - Time Short Functions with cpu time 使用 RTEMS 操作系统

转载 作者:行者123 更新时间:2023-11-28 06:22:31 25 4
gpt4 key购买 nike

我希望在实时操作系统 RTEMS 中分析一些代码。本质上,rtems 有一堆读取时间的函数,其中最有用的是 rtems_clock_get_ticks_since_boot

这里的问题是,无论出于何种原因,报告的时钟滴答与我们的状态机循环速率 5kHz 同步,而处理器运行在 200MHz 左右(嵌入式系统).我知道这是因为我记录了时钟时间,等了 1 秒,只有 5000 个滴答声过去了。

那么问题是:

如何从 RTEMS 获取实际的 CPU 节拍?

附言。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、测试点或引脚(并且示波器探头可以连接到)。

这里的方法是向管脚发送一个脉冲。示波器可以设置为触发脉冲。一些更智能的示波器可以对脉冲宽度进行统计,例如平均时间和最长时间。

在我们的嵌入式系统上,H/W 团队非常友好地提供了 8 个测试点供我们使用。我们将引脚初始化为零。在要分析的代码的开头,我们将 1 写入引脚。在分析代码的末尾,我们将 0 写入引脚。这会产生脉冲或方波。

示波器设置为在上升沿触发。探针连接到引脚并运行程序。调整示波器,使整个脉冲在屏幕上可见。重新运行程序。当示波器触发时,测量脉冲宽度。这将是执行的实际时间。

关于c++ - Time Short Functions with cpu time 使用 RTEMS 操作系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29089344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com