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.

[参考译文] MSPM0G3506:重新编程后无法保留 EEPROM 数据

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1434908/mspm0g3506-cannot-retain-eeprom-data-after-reprogram

器件型号:MSPM0G3506
主题中讨论的其他器件:SysConfig

工具与软件:

我正在尝试在闪存中模拟2kB 的 EEPROM A 类数据来存储一些校准数据。 如果数据放置在中断矢量表之后的地址0x00000400、则可以正确地存储和读取数据。 但是、为了在重新编程事件期间保留这些数据、我已将其放置在主闪存的开头、并适当地移动了中断矢量表。 但是、 任何对器件进行编程的尝试都将失败并显示"Error -1001"。 这是什么原因造成的? 我是否需要更改链接器脚本或启动文件?

我使用的是 CCS v12.8.1.00005、MSPM0 SDK v2.2.0.05和 SysConfig v1.21.0。

链接器文件:

闪存设置:

错误:

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

    任何 中断矢量表都不应从0x0000开始

    MSPM0 MCU 中的网络安全机制

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

    这是中断矢量表的唯一有效位置? 它无法在 BCR 或 BSL 中进行更改?

    或者、至少、是否可以擦除主存储器的多个范围、以便我可以保留 EEPROM 数据?

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

    是的、这是唯一的有效位置。

    要 擦除主存储器的多个范围、  

    • 对于代码、应有能够擦除指定范围的相关闪存 API。
    • 对于工具、可以在 IDE 或其他工具中设置擦除范围。

    您也可以将 EEPRPM 数据放在存储器的末尾。

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

    我在工具中看到了"按范围擦除主存储器扇区"选项、但我可以设置多个范围、例如0x0000-0x0400和0x0800-0xFFF8吗?

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

    很抱歉这么晚才回复。  

    不需要、这取决于工具/软件。 对于 CCS、您可能需要擦除两次。

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

    我明白了。 好像在前面的文章中一次对多个范围进行编程: CCStudio:关于使用 CCS 进行编程时的擦除范围规范-处理器论坛-处理器- TI E2E 支持论坛 

    也许 CCS 一天可以支持这个功能。

    我更希望将校准数据存储在主闪存的前半部分、因为它支持更多读取/写入周期、但更简单的方法似乎是将数据存储在最后两个扇区中。