在闪存被擦除后、为什么闪存内容不变为0xFFFFFFFF?
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.
在闪存被擦除后、为什么闪存内容不变为0xFFFFFFFF?
您好!
Flash 存储器受单纠错双纠错(SECDED)保护。 此保护由 CPU 内部的 SECDED 电路实现。 对于基于 TMS570LC43x 和 RM57Lx ARM Cortex-R5的 MCU、默认情况下会永久启用 CPU 内的 SECDED 逻辑。 但对于 基于 TMS570LSx ARM Cortex-R4F 的器件、闪存 ECC 在默认情况下不启用、并且必须由应用启用。
每 64位数据有一个8位 ECC。 闪存区域的 ECC 存储在闪存本身中、并映射到 一个从0xF0400000开始的区域、用于主闪存组0。
当闪存被擦除时、它的 ECC 区域也被擦除。 两个区域中的内容都是0xFFFFFFFF、这意味着 ECC 区域对于主闪存区域中的内容(0xFFFFFFFF)具有错误的 ECC 值(0xFF)。 当从闪存区域读取数据时、SECDED 逻辑将检测 ECC/数据错误并纠正单位错误。 这就是 CCS 浏览器中的一些内容被翻转的原因。
一种解决方案是使用链接器 CMD 文件生成 ECC。 请参阅我关于使用 Linker CMD 文件生成 ECC 的说明: