ZHDZ012G December 2020 – June 2026 DRA829J , DRA829J-Q1 , DRA829V , DRA829V-Q1 , TDA4VM , TDA4VM-Q1
C71x:启用 L2 Scrubber 后,在 L2 回写失效操作期间存储器系统可能会挂起
启用 C71x L2 Scrubber 后,如果 C71x CPU 通过向 L2WBINV 寄存器写入“1”发出 L2 回写失效命令,则存储器系统可能会无限期挂起。如果 L2 Scrubber 在 L2 回写失效操作期间恰好处于活动状态,则 L2 Scrubber 机制与回写失效状态机逻辑之间的交互会导致发生这种情况。
请注意,此 SoC 上的其他内核不受影响,因为此问题仅与 C71x L2 控制器有关。
有两种方法可以防止发生此问题:
选项 A:软件保证在 C71x 运行期间,不会在任何上下文中以任何权限级别设置 L2WBINV。
选项 B:如果软件可能使用 L2WBINV 功能,或无法保证不使用该功能,则程序员应在引导时禁用 C71x L2 Scrubber(在复位后自动启用)。这可通过向 C71x 内 L2EDCFG 寄存器的 SCEN 字段(位 0)写入 0 来完成。一旦清除该位,Scrubber 将被禁用并保持禁用状态,直到 C71x 存储器系统复位。
如果应用程序希望 L2 内存保留静态数据和/或代码更长时间(超过 24 小时),则提供 L2 Scrubber 功能。在这些情况下,安全主管可通过以下方式定期启用 L2 Scrubber:
这将保证 L2 Scrubber 将在 1ms 内启动整个 L2 内存的清理。完成后,应先禁用 L2Scrubber,然后再恢复正常线程执行和/或启动任何 L2 回写失效操作。