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.

[参考译文] MSPM0G3519:EEPROM 仿真初始化问题

Guru**** 2933630 points

Other Parts Discussed in Thread: MSPM0G3519, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1652865/mspm0g3519-eeprom-emulation-init-issue

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

您好、  

我尝试在 MSPM0G3519 上使用 EEPROM 仿真(B 型)。 但是、我无法让它正常启动。

EEPROM 仿真的整个点是在复位时保留一些数据。 但是、我在 MSPM0 SDK 中找到的所有示例都是从 EEPROM 仿真初始化开始、它会擦除存储器。 因此、不会保留上次复位之前的数据。

我已经尝试了很多事情,但我无法让事情运行和保存数据从一个重置到另一个.

提前感谢您的帮助、

此致、

Adrien Thurin

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

    您是否尝试过未在调试器下运行? 如果您对闪存进行重新编程、它将擦除您预留的任何内容。

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

    我要测试的是启动一个调试会话、然后拔下调试器并使 MCU 复位。 然后将调试器插回、然后重新连接目标(随时不离开调试会话!)。 这样、闪存就不会被擦除、我应该会看到存储的数据。 但是、闪存为空白。

    另外、我可以在源代码中看到、在启动示例中的代码时、始终会调用 EEPROM init 函数、并且 init 函数会擦除闪存。 因此、在这些示例中、EEPROM 区域始终在开始时被软件擦除、这实际上是我的问题。

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

    尊敬的 Adrien:

    EEPROM 仿真(B 型)init 函数旨在默认设置分配的闪存区域的格式、以便在加电时擦除之前保存的数据。 要在复位期间保留数据、必须修改 SDK 库中的 EEPROM_TypeB_init () 函数、以防止在闪存已初始化时对其进行格式化。 为此、请执行以下操作:

    1. 查找库的 EEPROM_TypeB_init () 函数源文件(通常在 MSPM0 SDK 路径中的中间件部分下)。
    2. 默认情况下、初始化函数执行一个擦除和格式序列。 您需要在检查中包装格式化/擦除操作。 您应该只初始化全局变量、以跟踪现有闪存中已格式化的活动记录、而不是盲目运行格式序列。
    3. 检查 EEPROM DATA 存储体的前几个字节。 如果它包含有效的编程数据(例如,未读取 0xFFFFFFFF)、则绕过擦除并允许固件扫描和加载现有的活动组

    我还建议查看",="" roboto,="" arial,="" sans-serif;="" font-size:="" 16px;="" font-weight:="" 400;="" margin:="" 0px;="" text-decoration:="" none;="" border-bottom:="" 0px="" rgb(230,="" 232,="" 240);"=""> ",="" roboto,="" arial,="" sans-serif;="" font-size:="" 16px;="" font-weight:="" 400;="" margin:="" 0px;="" text-decoration:="" none;="" border-bottom:="" 0px="" rgb(230,="" 232,="" 240);"="">",="" roboto,="" arial,="" sans-serif;="" font-size:="" 16px;="" font-weight:="" 500;="" margin:="" 0px;="" text-decoration:="" underline="" 1px="" rgb(153,="" 195,="" 255);="" border-bottom:="" 0px="" 255);"="">带闪存的仿真 EEPROM(B 型)设计指南 、以便更清楚地了解 SDK 如何处理搜索和恢复组状态。

    ",="" roboto,="" arial,="" sans-serif;="" font-size:="" 16px;="" font-weight:="" 400;="" margin:="" 0px;="" text-decoration:="" none;="" border-bottom:="" 0px="" rgb(230,="" 232,="" 240);"="">-布赖恩

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

    您好、Brian、

    谢谢、我会对此进行测试并告诉您。

    同时、是否可以告诉 CCS 不要擦除专用于 EEPROM 仿真的闪存部分? 以便使测试更轻松。

    提前感谢、  

    此致、

    Adrien

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

    默认情况下、将 EEPROM 段放置在标准.cmd 文件内将告诉调试器对其进行编程并覆盖。 要阻止 CCS 在下载期间覆盖此内容、请从生成的.cmd 链接器文件中排除 EEPROM 部分。 或者、可以在工程设置中使用 SysConfig 取消选中“Linker File Generation“、创建自定义链接器脚本、并确保 EEPROM 存储器范围仅列为输入节、而不是要写入的输出文件。  

    这些都是一些建议,希望这可以在同时帮助!

    -布赖恩