This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
ESM 组2-通道36:指"36 FMC -不可纠正的 ECC 错误(组7访问)"。 导致通过- esmActionFatal ();处理高级中断(导致一个 while 真条件终止处理器)。 也会将 ERROR 引脚置位。
ESM 组3-通道7:指"FMC -不可纠正的 ECC 错误:总线1和总线2接口(不包括地址奇偶校验错误和访问组7时的错误)"。
这些通道没有中断响应、因为它们保留用于基于 CPU 的诊断、可以直接生成中止到 CPU。
不过、在系统启动 c_int00函数的旧测试中、有一个测试会通过从 BANK0 - OTP 读取来强制发生故意的 ECC 错误(TRM 的第5.4.2.5节)。 此函数专门查看此错误是否为了通过测试而向 ESM 组3 -通道7发出了信号。
此外、对于 ESM 组3-通道7: FMC -不可纠正的错误:总线1和总线2接口:
的说明 总线2 、访问 OTP 空间和 ECC 空间时、闪存包装程序本身会检测到 ECC 错误。 不存在数据中止 . 仅向 ESM 发送错误。 nERROR 引脚生效。
总线2 处理 OTP 组0和组7。
相同的测试时、它会自动跳闸。 我不会实现完全系统复位 .
我认为这是因为第3组事件不会生成高级中断,这意味着它们不会由我们的处理程序(esmActionFatal ()))处理;这是正确的吗?
但是有发送至 ESM 组3 -通道7和 nERROR 引脚信号。 我们目前未 在我们的应用的硬件中使用 nERROR 引脚。
最后一个问题是、会是什么 如果在 BANK7访问时检测到不可纠正的 ECC 错误、则为预期行为 ?
我想、由于处理了组7、因此不会生成 CPU 数据中止 总线2。 是这样吗?
那么行为会是什么呢? ESM Group 2- Channel 36 (ESM 组2-通道36)是信号还是 ESM Group 3- Channel 7 (ESM 组3-通道7)?
如果第一个选项正确、则将调用处理程序 esmActionFatal ();、从而终止处理器。 nERROR 引脚生效。
如果第二个选项正确、则不会调用处理程序、因为组3事件不会生成中断。 nERROR 引脚生效。
如果同时发生这两种情况、则会调用处理程序 esmActionFatal ();、因为组2中断导致处理器中断、并且会断言 nERROR 引脚。
非常感谢您的支持。
Martin Estorninho Blochre
尊敬的 Martin Estorninho Blochre:
我对延迟答复深表歉意。
您是否仍然受困于此问题? 如果是、那么我可以立即尝试处理它、并尽快尝试提供我的更新。
——
谢谢、此致、
Jagadish。
嗨、Jagadish、
首先,我在第一个评论中提到 ESM 组时犯了一个错误。 在"ESM Group 2 - Channel 36"中、我指的是"ESM Group 1"。
我认为 BANK7的 ECC 保护由一个不同的寄存器控制、而不是 FEDACCTRL1 (BANK0)、而是 EECTRL1 (BANK7)。 我在 HALCOGEN 上找不到任何用于打开 BANK7的 ECC 检查的配置。 我想这必须通过配置 EECTRL1手动完成、我就是这么做的。
为 BANK7打开 ECC 保护。 我设法了解了使用 F021 API 函数在 BANK7 (EEPROM 仿真)上注入不可纠正的 ECC 故障后的行为。 n ESM 组1 -通道36上生成一个中断、允许用户决定如何处理该中断以及相应的错误引脚响应。
谢谢。
Martin Blochre