您好!
我希望在解释 TMS570LC4357 TRM (SPNU563A)的"SECDED 初始化"部分时能有所帮助、该部分涉及到对 AXI 闪存的推测访问:

我对中止部分感到困惑、 因为如果我理解正确、AXI ECC 错误不会在 Cortex-R5F 上导致中止、而仅会导致 CPU 总线事件 (这在 本论坛博文中也进行了讨论)。 我知道这与其他具有 TCM 的 TMS570型号(并且它们自己的 TRMS 中的文本非常相似)形成对比。 但对于 TMS570LC4357、我的理解是、不可纠正的 AXI ECC 错误的影响仅是 CPU 总线事件、进而导致 ESM 组2.3事件和 NMI (前提是 CPU 事件总线和 FIQ 已启用)以及 nERROR 置位。 我是否正确理解了这一点、上面的这一部分文本是否不适用于 TMS570LC4357?
此外、由于我们的引导加载方案、我们很难保证闪存中不存在任何包含不可纠正 ECC 错误的未编程区域。 但是、我们至少可以保证当前正在执行的映像在两端填充到缓存边界、并且没有任何"漏洞"(例如、我们可以保证如果[0x40000、0x50000)是使用的闪存范围、则该范围内的所有闪存字都将使用有效 ECC 进行编程、 但超出该范围的闪存可能会被擦除、并且具有无效的 ECC)。 我想知道这是否足以防止推测读取到具有无效 ECC 的未编程区域、或者我们是否仍然容易受到此连续范围之外推测读取的影响、即使我们从未在程序中引用这些地址中的任何地址?
总之、我的具体问题是:
- 如果 CPU 事件总线和 NMFI FIQ (CPSR.F = 0)被启用、带有不可纠正 ECC 错误的推测 AXI 闪存读取对 TMS570LC4357有何影响? 是 ESM 组2.3、nERROR 置为有效、还是 NMI FIQ、而不管推测读取的数据是否被"使用"(与上面的 TRM 文本相反)?
- 在 TMS570LC437上、这种影响是否同时适用于推测数据读取和推测指令提取?
- 如果我们使用的闪存范围不包含任何未编程的"孔洞"、但在闪存使用区域之前和之后存在具有不可纠正 ECC 错误的未编程闪存、我们是否仍然容易受到 对这些未编程区域的推测读取?
- 是否有任何方法可以预测或限制这些推测读取的发生位置、或者我们是否需要将它们视为可以 真正访问闪存中任何位置的不可预测的内容? 除了使用 有效 ECC 对整个4MB 闪存范围的每个字进行编程之外、还有其他方法可以保证这不会成为问题吗? (例如、使用 MPU 规则?)
非常感谢您的澄清!