我继承了一个嵌入式项目,它需要一些简单的、每个功能的性能分析。它由运行MCF5328的Coldfire (2.6.17.7-uc1)组成。
我既不是Coldfire的专家,也不是uClinux (或者Linux )的专家,所以请原谅我的无知。
在Windows中,我只需使用QueryPerformanceCounter来访问x86高分辨率计时器。记录计数器前后的差异,并进行比较。
我了解到Linux在QueryPerformanceCounter上有许多不同的版本:
甚至可以访问时间戳柜台
在此设备正在运行的uClinux构建中,所有这些都不可用。因此,操作系统似乎没有高分辨率的定时器访问权限。
这是否意味着Coldfire本身没有提供这样的功能?还是uClinux端口的作者将它们排除在外?硬件上是否有我可以使用的东西,以及如何使用它?
发布于 2011-06-21 18:37:46
最后,我在Coldfire上使用了四个DMA计时器之一。这是一个简单的事情,使计时器作为一个自由运行,无中断的生成,计数器.这提供了一个12.5ns计数器(在80 This )。
发布于 2011-06-17 23:47:11
考虑到您的内核有多老,您可能不支持高分辨率定时器。
如果您正在编写内核驱动程序,则API是不同的。如果get_cycles()被删除,这可能意味着您的CPU体系结构不支持循环计数器。因为您的内核很老了,所以do_gettimeofday可能是您所能做的最好的了,除了编写一个驱动程序来直接查询一些计时器硬件之外。
https://stackoverflow.com/questions/6392867
复制相似问题