我想知道您如何在裸机系统(ARM Cortex a8)上分析软件?以前我使用的是具有内置基准统计数据的模拟器,现在我想比较真实硬件的结果(在 BeagleBoard-Xm 上运行)。
我知道您可以使用 gprof,但是我有点迷茫,因为假设您必须在目标系统上运行 Linux?
我使用 Codesourcery 的 arm-none-eabi 交叉编译器构建可执行文件,目标系统正在运行 FreeRTOS。
我想知道您如何在裸机系统(ARM Cortex a8)上分析软件?以前我使用的是具有内置基准统计数据的模拟器,现在我想比较真实硬件的结果(在 BeagleBoard-Xm 上运行)。
我知道您可以使用 gprof,但是我有点迷茫,因为假设您必须在目标系统上运行 Linux?
我使用 Codesourcery 的 arm-none-eabi 交叉编译器构建可执行文件,目标系统正在运行 FreeRTOS。
仔细评估“分析”的含义。您确实在非常接近裸机的情况下进行操作,并且您可能需要承担一些由 gprof 之类的工具执行的工作。
你想计时函数调用吗?还是 ISR?如何在进入和退出被检查代码时切换 GPIO 线。数据记录器或示波器可以设置为触发这些事件。(根据我的经验,数据记录器更方便,因为我的可以配置为捕获这些事件的序列 - 允许我计算平均时间。)
您要计算执行次数吗?Cortex A8 配备了许多可以提供帮助的功能(如可配置的事件计数器):链接。您的 ARM 芯片也可能配备了其他可用的外围设备(取决于供应商)。不管怎样,看看上面的链接 - 新的 ARM 有很多很酷的功能,我没有像我想的那样玩!;-)
我已经设法让 ARM Cortex M 进行分析。由于 GNU ARM Embedded(启动板)工具不包含分析库,我添加了必要的胶水和分析功能。参考:见http://mcuoneclipse.com/2015/08/23/tutorial-using-gnu-profiling-gprof-with-arm-cortex-m/
我希望这有帮助。