Coldfire上的高分辨率计时器MCF5328

问题描述

我继承了一个嵌入式项目,该项目需要一些简单的按功能进行性能分析。它由运行uClinux(2.6.17.7-uc1)的Coldfire(MCF5328)组成。 我不是Coldfire或uClinux(或Linux)的专家,所以请原谅我的无知。 在Windows中,我只需使用“ 0”即可访问x86高分辨率计时器。记录前后的计数器并比较差异。 我了解到Linux在QueryPerformanceCounter上有很多变体: clock_gettime / res getnstimeofday ktime_x 甚至可以通过以下方式访问时间戳计数器 get_cycles 这些设备在运行该设备的uClinux上均不可用。因此,似乎操作系统没有高分辨率计时器访问权限。 这是否意味着Coldfire本身不提供此类功能?还是uClinux端口的作者遗漏了它们?我可以使用硬件上的某些东西,如何使用?     

解决方法

        考虑到内核的年龄,您可能不支持高分辨率计时器。 如果要编写内核驱动程序,则API是不同的。如果将“ 1”存根,则可能意味着您的CPU体系结构不支持循环计数器。由于您的内核很老,因此writing2ѭ可能是您所能做的最好的事情,而无需编写驱动程序直接查询某些计时器硬件。     ,        我最终在Coldfire上使用了四个DMA定时器之一。使计时器成为自由运行,不中断生成的计数器是一件简单的事情。这提供了一个12.5ns的计数器(在80Mhz)。