Other Parts Discussed in Thread: TMS320F28384D, SYSCONFIG
器件型号: TMS320F28384D
主题: SysConfig 中讨论的其他器件
尊敬的专家:
我最初计划使用 IPC 自由运行计数器(根据 TMS320F2838x 技术参考手册进行下文所述)来测量两个断点之间的执行时间。
16.5 自由运行计数器
器件中存在一个 64 位自由运行计数器、可用于为处理器之间的 IPC 事件打时间戳。 该计数器由 PLLSYSCLK 计时、并通过 SYSRSn 复位。 计数器实现为两个 32 位寄存器 IPCCOUNTERH 和 IPCCOUNTERL。 读取 IPCCOUNTERL 时、将保存 IPCCOUNTERH 的值。 对 IPCCOUNTERH 的后续读取将返回此保存的值。 因此、用户必须始终先读取 IPCCOUNTERL、然后接下来读取 IPCCOUNTERH。 此设计可防止由于两个寄存器读取之间的 IPCCOUNTERL 溢出而出现竞态条件。 自由运行的计数器仅在所有 CPU 上的仿真暂停(当调试器命中断点时)时停止。 如果任何内核正在执行、计数器将运行。
我的方法如下:我先停止两个 CPU ,然后执行待测 CPU ,直到它到达第一个断点,记录当时自由运行的计数器的值。 接下来、我独立地恢复 CPU 执行、直到到达第二个断点、再次捕获计数器值。 根据我的理解、第一个断点和第二个断点的计数器值之间的差值应该表示在这两个点之间执行指令所需的时间(以 CPU 周期为单位)。 (我还确认 IPC 计数器已停止,并且在捕获两个测量值期间没有继续计数。)
但是、与预期的帧时间相比、测量值与我的预期值不匹配。 经过一些进一步的测试后、我观察到 CPU 自由运行时计数器产生了预期的帧时间。 然而、当停止 CPU 并使用断点测量计数器时、记录的值偏离了预期的帧时间。 相对于计数器停止时、使用调试器停止 CPU 时是否可能发生延迟、这可能会影响断点之间的时序测量? 我非常希望能够深入了解这种差异的潜在原因、或者建议采用其他方法来准确测量两个断点之间的执行时间。
此致、
Marvin

