Flu*_*ffy 6 c c++ embedded arm bare-metal
我正在开发一个ARM cortex M4评估板,它是一个bare metal没有运行任何操作系统的应用程序.
现在我想测量CPU给定过程/算法的使用情况,最好的方法是什么?
我应该实施一个操作系统来衡量CPU具有此类需求功能的使用情况吗?
这个问题几乎可以解决.当您的裸机应用程序不在该流程/算法中时,它的作用是什么?测量一个或另一个或两者.如果你的裸机应用程序没有完全消耗这个算法中的cpu,那么你已经拥有了一个操作系统,只要你管理这个应用程序/函数的时间.您可以使用循环中相对于计时器的简单计数器中的多种方法来查看算法获取时间片与否时每个循环计数的数量.您可以简单地计算算法本身等.
我假设你说CPU意味着整个系统,因为你的性能严重依赖于你的代码和它所说的内容.如果根据时钟速率从cortex-m4上的闪存运行,您可能正在等待处理器周期等待指令或数据(并且当算法不燃烧时钟时,很容易得到错误的处理器性能概念).缓存掩盖/操纵该性能,如果您不小心并意识到它们正在做什么,它们很容易对性能产生很大影响.作为一个C++问题,您的编译器在性能和代码中扮演着重要角色,可以非常轻松地使代码运行速度或速度快几倍,而对命令行或代码的更改最少.
如果算法是isr的一部分,则处理器进入休眠状态,否则,您可以使用gpio引脚和范围techinique来了解运行与睡眠比率.