您好!
在闪存被擦除并且(引导加载程序)程序被加载后-所有未使用的内存都很好地为空(0xFFFF)。 但是、为 ATCM 接口启用 SECDED 逻辑(执行 _coreEnableFlashEcc_函数)会导致这种情况(CCS 存储器浏览器的屏幕截图):

在链接器文件中、指定了一个16位存储器部分、其中 应在引导加载程序接受并加载应用软件后保存安全密钥值:
m_safety_key (R) :origin=0x00014000 length=0x00000002
SAFETY_KEY :type=NoLoad >M_SAFETY_KEY
然后、在源文件中有常量易失性变量 U16_KEY、由 #pragma DATA_SECTION (U16_KEY、"SAFETY_KEY)定义。
读取数据 地址导致数据中止-双位错误检测。 正如您在上面的屏幕截图中看到的,安全密钥的位置是???,因此会发生中止。
是否因为闪存 ECC 存储器中没有计算这些位置的正确 ECC 值? 如果是-为什么?
2.为什么在启用 SECDED 逻辑后未使用的闪存不是0xFFFF?
此致、
Tomas