我继承了一个嵌入式项目,需要一些简单的,每个功能的性能分析。它由运行uClinux(2.6.17.7-uc1)的Coldfire(MCF5328)组成。
我不是Coldfire或uClinux(或Linux)的专家,所以请原谅我的无知。
在Windows中,我只需使用QueryPerformanceCounter
来访问x86高分辨率计时器。前后记录计数器并比较差异。
我了解到Linux在QueryPerformanceCounter上有很多变种:
甚至可以通过
访问时间戳计数器这些设备正在运行的uClinux版本中没有这些可用。因此,操作系统似乎没有高分辨率的计时器访问。
这是否意味着Coldfire本身不提供此类功能?或者uClinux端口的作者是否将它们排除在外?我可以使用硬件上的东西,以及如何使用它?
答案 0 :(得分:1)
鉴于你的内核有多大,你可能不支持高分辨率计时器。
如果您正在编写内核驱动程序,则API会有所不同。如果get_cycles()
被删除,则可能意味着您的CPU架构不支持循环计数器。由于你的内核很老,do_gettimeofday
可能是你能做的最好的,除了编写驱动程序直接查询一些定时器硬件。
答案 1 :(得分:1)
我最终使用了Coldfire上的四个DMA定时器之一。将定时器设置为自由运行的非中断生成计数器是一件简单的事情。这提供了12.5ns计数器(80Mhz)。