主题中讨论的其他器件:UNIFLASH
我尝试导出以下存储器范围、但每次尝试时都会出现错误。

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.
我尝试导出以下存储器范围、但每次尝试时都会出现错误。

将程序映像定位到闪存后、程序开始执行。 如果闪存 ECC 被启用、读取一个具有无效 ECC 值的位置将生成一个错误或者数据中止。
从屏幕截图中可以看出、代码大小为0xAD640。 在该地址之外、闪存内容为0xFFFFFFFF、ECC 值也为0xFFFFFFFF、这不是闪存数据的有效 ECC 值。 因此、当您尝试从未使用的闪存中导出数据时、您会失败。
如果您的代码中未启用闪存 ECC、则不会看到此问题。 您可以通过注释 sys_startup.c 中的以下指令来禁用闪存 ECC:
// _coreEnableFlashEcc_();
您可以使用链接器 cmd 文件计算和编程整个闪存的 ECC、因此您可以读取未使用的闪存位置、并且不会获得 ECC 错误。
请参阅此链接、了解如何使用链接器 CMD 文件生成 ECC:
http://software-dl.ti.com/hercules/hercules_docs/latest/hercules/How_to_Guides/HowToGuides.html
擦除闪存后、Uniflash 和 CCS 不会对 ECC 进行编程。 ECC 空间也被擦除。 当您从被擦除的扇区读取数据时、您将获得 ECC 错误。
闪存 API Fapi_issueAppedCommandAppiAddress (sector_erase、..) 擦除闪存扇区及其对应的 ECC 空间。 您可以使用链接器 cmd 文件将 ECC 编程到整个闪存。