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:尝试生成闪存 ECC 双位错误

Guru**** 2589245 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1064917/tms570ls3137-trying-to-generate-flash-ecc-double-bit-error

器件型号:TMS570LS3137

大家好、

根据 SPNU499C 第5.4.2.5段的指令、我尝试通过向地址0xF00803F8发出64位读取来生成双位闪存 ECC 错误、并声明:

5.4.2.5 FMC ECC 检查的故意 ECC 错误
为了检查 FMC ECC、在 OTP 中放置了故意的单位和双位错误
功能。 TI OTP 组0中64位的任意部分位置 F008 03F0h 至 F008 03F7h 如所示
如图5-6所示、将生成单位错误。 TI OTP 组0位置中64位的任何部分
F008 03F8h 至 F008 03FFh (如
图5-6所示)将生成双位错误。

使用以下简单代码:

ecc = *(u64 *) 0xF00803F8;

按照本手册的说明、读操作后 ECC 实际上等于0x123456789ABCDEF0、所以读操作在正确的地址成功。 但是、nERROR 引脚未被激活、并且未 进入中断矢量0处本应生成的到组2高优先级(不可屏蔽)的 ESM 中断。

我出了什么问题吗?

谢谢。

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

    您好!

    0xF00803F8处的数据为0x123456789ABCDEF3、此数据的 ECC 为0x56、这是不正确的。  0x123456789ABCDEF3的正确 ECC 为0x50。

    当您在0xF00803F8处读取数据时、您将得到2位 ECC 错误、并且 ESM 3:7将被置位。 nERROR 引脚有效。

    请仔细检查闪存 ECC 是否已启用。

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

    您好!

    OTP 由闪存包装程序中的 SECDED 逻辑保护。 请使用以下命令启用它:

    flashWREG->FEDACCTRL1 = 0x000A060AU;

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

    您好 QJ、

    根据 SPNU499C 文档中的定义、FEDACCTR1与可纠正的单个位错误(ESM 事件1.6)有关。 根据您之前的帖子、我了解当出现不可纠正 的双位错误时、将触发 ESM 事件3.7、这正是我要查找的内容。

    是否有用于 不可纠正的双位错误激活的类似控制寄存器?

    否则、这里的逻辑是什么?

    谢谢。

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

    您好!

    无论 错误是1位还是2位 ECC 错误、FEDACTR1的 EDACEN 在闪存包装程序中启用 ECC 检测和校正。