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.

[参考译文] RM48L530:启用 ECC 的推测取指令

Guru**** 2608865 points
Other Parts Discussed in Thread: RM48L530

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/754588/rm48l530-speculative-fetch-with-ecc-enabled

器件型号:RM48L530

您好!

我们在引导加载程序和应用程序中启用了 ECC、如今我们出现了 ESM 组3通道7错误(FMC 不可纠正的错误)。 我们已查看此链接 https://e2e.ti.com/support/microcontrollers/hercules/f/312/t/588269?RM48L952-Migration-from-RM44-causes-occasional-ESM-group-3-channel-7-errors-speculative-fetch。 通过对整个 ROM 进行完全编程(使用 IAR IDE,我使用了“linker->checks-> fill pattern 0xFFFFFFFF,fill address from 0 to 0x001FFFFF”),我们可以看到这个不可纠正的问题已经消失。 但我的一位同事仍然遇到组1通道6错误(FMC 可纠正的错误)。 我们不理解为什么他在填充整个 ROM 后仍然会遇到错误。

此致、

Tracy

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们看到的另一件事是、我们尝试了不同的填充模式、看看它是否有用。 最后,我们又使用了相同的->填充模式0xFFFFFFFF 设置一次。 我的同事不再有 FMC 错误。 现在,我想知道这是最后的解决办法,还是将来问题会再次出现。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Tracy、您好!

    在 RM48L530器件上、复位时不启用闪存错误检测和校正(SECDED)。 在启用 SECDED 前、所有闪存存储器空间(闪存组0至6)的 ECC 值必须被编程到闪存中。

    对具有无效 ECC 的位置的推测取指令(随后未使用)将为可纠正或不可纠正的错误设置 ESM 标志。 不可纠正的错误将无条件地导致 nERROR 引脚切换为低电平。

    使用链接器文件对 ECC 进行编程是避免此问题的一种方法。 另一种尝试方法是、在引导加载程序中使用 F021 API 对固件进行编程时、请一次对8个字节或16个字节进行编程。 在最后一次写入(固件结束)时,如果剩余的数据数是<8或<16但>8,请附加0x00或0xff。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 QJ Wang:

    感谢您的回复。  我们仍然想知道如何检查错误位置。 我们来看看 FUNC_ERR_ADDR (0x000B3398)和 UNC_ERR_ADD (0x00016673)。

    如果我们依赖 UNC_ERR_ADD 的地址、则它位于应用程序代码中。 我们的应用程序在 0x00040b23结束。 那么 ECC 错误发生的可能性、即使推测取指令也是在应用程序内。 我们假设它只应在应用程序地址之外发生、如果我们不填充整个闪存?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它位于0x000B3398。 UNC_ERR_ADD 是 ECC 错误位置的地址[22:3]。