【问题标题】:Profiling on baremetal embedded systems (ARM)在裸机嵌入式系统 (ARM) 上进行分析
【发布时间】:2012-01-31 23:19:17
【问题描述】:

我想知道您如何在裸机系统 (ARM Cortex a8) 上分析软件?以前我使用的是内置基准统计的模拟器,现在我想比较真实硬件的结果(在 BeagleBoard-Xm 上运行)。

我知道你可以使用 gprof,但是我有点迷茫,因为假设你必须在目标系统上运行 Linux?

我使用 Codesourcery 的 arm-none-eabi 交叉编译器构建可执行文件,并且目标系统正在运行 FreeRTOS。

【问题讨论】:

    标签: c profiling arm beagleboard bare-metal


    【解决方案1】:

    我已经设法让 ARM Cortex M 进行分析。由于 GNU ARM Embedded(启动板)工具不包含分析库,我添加了必要的胶水和分析功能。 参考: 见http://mcuoneclipse.com/2015/08/23/tutorial-using-gnu-profiling-gprof-with-arm-cortex-m/

    我希望这会有所帮助。

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面更改meta.stackexchange.com/questions/8231/…,则仅链接答案可能会失效
    • 要批评或要求作者澄清,请在他们的帖子下方留言。
    • Erich,这仍然是 2020 年的解决方案吗?
    【解决方案2】:

    仔细评估“分析”的含义。您确实在非常接近裸机的情况下运行,并且您可能需要承担一些由 gprof 之类的工具执行的工作。

    您想为函数调用计时吗?还是 ISR?如何在进入和退出被检查代码时切换 GPIO 线。数据记录器或示波器可以设置为触发这些事件。 (根据我的经验,数据记录器更方便,因为我的可以配置为捕获这些事件的序列 - 允许我计算平均时间。)

    您要计算执行次数吗? Cortex A8 配备了许多可以提供帮助的功能(如可配置的事件计数器):link。您的 ARM 芯片也可能配备了其他可用的外围设备(取决于供应商)。不管怎样,看看上面的链接 - 新的 ARM 有很多很酷的功能,我没有像我想的那样玩! ;-)

    【讨论】:

    • 我在想是否可以使用任何分析工具(如 gprof)来收集有关各种数据的信息,如时钟周期、调用图、每个函数花费的时间、调用量。但是,如果我能获得从开始到结束运行应用程序所需的时钟周期,我很高兴。你给我的链接很好,我会调查的,谢谢!
    • 您好,我的时钟周期计数器工作正常,但是我想知道是否可以使用 PMU(性能监控单元)对某个功能进行计时?我还有一个flyswatter 2调试器,也许可以用来做点什么?我需要购买数据记录器或示波器来计时硬件吗?我从来没有用过这些,而且它们很贵!
    • 这是一款价格合理的逻辑分析仪。它对我来说效果很好:nci-usa.com/frame_products_overview.htm。一些 PMU 统计数据可以导出到 ETM - 从那里可以使用 Flyswatter 的 JTAG 接口访问它们。 (我只是猜测)。
    • 对于简单的函数调用时序,您可以考虑使用 PMU 的时钟计数器编写。将时钟计数保存在函数顶部,然后在函数末尾进行比较。这应该可以让您合理估计其间发生的时钟计数。我不认为监控时钟计数寄存器的开销会以任何显着方式影响您的函数时序。
    猜你喜欢
    • 2013-07-12
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多