TI中文支持网
TI专业的中文技术问题搜集分享网站

[FAQ] AM5748: MPU COUNTER_REALTIME 在几百天后达到饱和

Part Number:AM5748

勘误表文档:https://www.ti2k.com/wp-content/uploads/ti2k/DeyiSupport_DSP_sprz429m.pdf

描述了错误:i940

在连续运行几百天后(具体持续时间取决于主输入时钟 SYS_CLK1 频率,请参阅下表中的持续时间示例),MPU COUNTER_REALTIME 将在 0xBB8000000000 处饱和,并且不再产生中断。

除了系统复位之外,无法复位计数器。

请提供解决方案。

Cherry Zhou:

勘误表文档:https://www.ti2k.com/wp-content/uploads/ti2k/DeyiSupport_DSP_sprz429m.pdf

页面:94

描述了避免和解决所述问题的可能方法。

解决方案

1) 通过要求用户定期在饱和时间之前的某个时间对系统执行复位/重启来避免此问题。

2) 启用系统看门狗复位,使其在问题发生后过期,从而恢复正常。

3) 在需要连续运行的系统中使用 GP 计时器,而不是 COUNTER_REALTIME。

对于在 COUNTER_REALTIME 过期前无法复位的系统,唯一的办法是改为使用 GP 计时器。

可应用于 6.3 Linux AM57xx SDK 的 4.19 内核修补程序的上游反向端口:

https://patchwork.kernel.org/project/linux-omap/list/?series=512953

以上链接中将时钟源切换到 GP 计时器所需的所有 4 个修补程序的 zip:

4.19-counter_realtime_backport.zip

5.4 内核反向端口:

https://patchwork.kernel.org/project/linux-omap/patch/20210602104625.6079-1-tony@atomide.com/

https://patchwork.kernel.org/project/linux-omap/patch/20210602104625.6079-2-tony@atomide.com/

https://patchwork.kernel.org/project/linux-omap/patch/20210602104625.6079-3-tony@atomide.com/

https://patchwork.kernel.org/project/linux-omap/patch/20210602104625.6079-4-tony@atomide.com/

5.10 内核反向端口: 

http://lkml.iu.edu/hypermail/linux/kernel/2105.2/00585.html

http://lkml.iu.edu/hypermail/linux/kernel/2105.2/00586.html

注意:现在,我们从 COUNTER_REALTIME 切换到 GP 计时器,可以解决勘误表中 COUNTER_REALTIME 不再初始化的问题。

因此,一个快速高效读取计时器读数的常用解决方案:

Uint32 nowl = 0, nowu = 0;

asm volatile("mrrc p15, 1, %0, %1, c14" : "=r"(nowl), "=r"(nowu));

不再是可用的解决方案,因为默认系统时钟不再可用,这将返回一个无效指令。

赞(0)
未经允许不得转载:TI中文支持网 » [FAQ] AM5748: MPU COUNTER_REALTIME 在几百天后达到饱和
分享到: 更多 (0)