Coldfire上的高分辨率计时器(MCF5328)

时间:2011-06-17 23:42:28

标签: embedded uclinux coldfire

我继承了一个嵌入式项目,需要一些简单的,每个功能的性能分析。它由运行uClinux(2.6.17.7-uc1)的Coldfire(MCF5328)组成。

我不是Coldfire或uClinux(或Linux)的专家,所以请原谅我的无知。

在Windows中,我只需使用QueryPerformanceCounter来访问x86高分辨率计时器。前后记录计数器并比较差异。

我了解到Linux在QueryPerformanceCounter上有很多变种:

  • clock_gettime / RES
  • getnstimeofday
  • ktime_x

甚至可以通过

访问时间戳计数器
  • get_cycles

这些设备正在运行的uClinux版本中没有这些可用。因此,操作系统似乎没有高分辨率的计时器访问。

这是否意味着Coldfire本身不提供此类功能?或者uClinux端口的作者是否将它们排除在外?我可以使用硬件上的东西,以及如何使用它?

2 个答案:

答案 0 :(得分:1)

鉴于你的内核有多大,你可能不支持高分辨率计时器。

如果您正在编写内核驱动程序,则API会有所不同。如果get_cycles()被删除,则可能意味着您的CPU架构不支持循环计数器。由于你的内核很老,do_gettimeofday可能是你能做的最好的,除了编写驱动程序直接查询一些定时器硬件。

答案 1 :(得分:1)

我最终使用了Coldfire上的四个DMA定时器之一。将定时器设置为自由运行的非中断生成计数器是一件简单的事情。这提供了12.5ns计数器(80Mhz)。