ZYNQTTC:分辨率计算

描述

我试图在ZYNQ上在Linux上标出我的应用程序,但是我总是看到我的应用程序的运行时间为0。

为什么会发生这种情况?

解决方案

对于非常简单的应用程序(例如“Hello World”),应用程序的整个运行时寿命可能低于ZYNQ TTC(ZYNQ Linux的主系统计时器)的最小分辨率。

如下图所示,三重计时器计数器由CPUY1X计时。

考虑CPU1X时钟运行在111MHz。
按照ZYNQ TRM,这个值可以在2-655 36之间(它必须是2的功率)。

默认情况下,Cadence TTC模块将此预标量值设置为2048。
预缩放后,16位计数器的时钟为111/2048=54.9kHz。
这意味着计数器在一秒钟内计数高达54199个值。

也就是说,每个计数增加大约在18US。

计数器是16位(0xFFFF=65535)。

所以,实际上需要1.209秒才能计数到0xFFFF。
注释

改变预缩放器值是用户的责任。

请注意,在更高的分辨率下,Linux可能会错过时间包,从而影响整个系统的时序。
编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-07-30 17:27:05 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它