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.

[参考译文] TMS570LS3137:我们能否仅禁用 RAM ECC、而在 TMS570LS3137中启用闪存 ECC

Guru**** 1999175 points
Other Parts Discussed in Thread: TMS570LS3137
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/911101/tms570ls3137-can-we-disable-ram-ecc-only-but-enable-flash-ecc-in-tms570ls3137

器件型号:TMS570LS3137

您好,

我们的代码正在生成 ECC nERROR 引脚已置为有效(板载红色 LED 亮起)、且 MCU 拒绝启动。 现在由于项目很复杂,我们不能确定错误是由于 RAM ECC 还是代码的闪存 ECC 部分正在从 RAM 中执行。  

我们能否在 TMS570LS3137中禁用 RAM ECC 但启用闪存 ECC

是否存在特定的 ECC 错误 SFR,我们可以在其中检查 ECC 错误的来源(闪存或 RAM)

以下是为 RAM 和闪存启用 ECC 的代码

SYS_STARTUP.c

/*启用 CPU 事件导出*/
/*这允许 CPU 发出检测到的任何单位或双位错误的信号
*通过其 ECC 逻辑访问程序闪存或数据 RAM。
*

_coreEnableEventBusExport_

MRC P15、#0x00、r0、C9、C12、 0x00
ORR r0、r0、#0x10
MCR P15、#0x00、r0、C9、C12、 0x00
BX LR

/*为闪存访问启用 CPU 指示的 ECC 错误响应*/
flashWREG->FEDACCTRL1 = 0x000A060AU;


/*为 ATCM (闪存访问)启用 CPU ECC 检查*/

_coreEnableFlashEcc_

MRC P15、#0x00、r0、c1、c0、 0x01
ORR r0、r0、#0x02000000
DMB
MCR P15、#0x00、r0、c1、c0、 0x01
BX LR

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    _coreEnableRamECC_()和 _coreDisableRamECC_()在 sys_core.asm 中定义。

    发生闪存或 RAM ECC 错误、ESM 状态寄存器中的相应位将被置位。  

    请参阅表6-36和表6-34。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您仍应尝试通过读取 CPU 的中止地址和中止状态寄存器来了解 ECC 错误(和中止)的来源。 对于 RAM ECC、当 RAM 访问未初始化的位置时、通常会发生此错误。

    您是否在启动序列中自动初始化 CPU SRAM?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    感谢这个问题的领导。

    我们以前有3个版本的硬件板,我们在其中启用了 RAM ECC 和闪存 ECC,但这3个板和5个交付构建都启用了 ECC,我们从未遇到过问题。

    我们执行了增量固件更改、硬件也是第4次迭代。 硬件上的某些引脚是否有可能导致 RAM ECC 或闪存 ECC。

    谢谢、诚挚的问候

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    找出根本原因的最佳方法是从 CPU 的中止状态和地址寄存器开始。 很难猜测导致 ECC 错误的固件/硬件变化。