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.

[参考译文] MSP430F5529:为数据保留闪存 — 在此期间不断擦除闪存

Guru**** 2583445 points
Other Parts Discussed in Thread: MSP430F5529

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1575319/msp430f5529-reserve-flash-for-data---keeps-erasing-flash-during

器件型号:MSP430F5529


工具/软件:

我更新了链接器文件、以便在闪存外仅为数据保留一些空间。  我使用大型代码模型、它会 首先将代码放置在 FLASH2 区域的 0x10000 处、这就是我从闪存段中刻出存储器的原因。  我可以看到我的应用程序写入存储器、当我通过存储器窗口中的显示器读回存储器时、它显示正确。  但是、当随后执行另一个调试会话时、存储器会被覆盖。

我已经尝试更新 (.json) 中的设置、并仅选择一个范围来擦除、但这似乎不起作用。

  闪存中          :origin = 0x4400、length = 0xB780 /*用于以 0xFB7F 结尾*/
  DataFlash        :origin = 0xFB80、length = 0x0400 /*保留 1024 字节*/
  FLASH2          :origin = 0x10000、length = 0x143F8 /*边界已更改以修复 CPU47 */
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在“Project->Properties->Debug->MSP430 Flash Settings->Erase Options“中、选择“Erase and Download necessary segments only“。

    未经请求:我认为 F5529 上的闪存段是 512 字节。 您可能应该在 0x200 边界上对齐 DataFlash(原点和长度)、以便以后可以将其擦除。

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

    我尝试了这个选项没有成功。  我在 512 边界上对齐。 下面是链接器文件中的区域定义。  我认为在 Project -> Properties -> Debug -> MSP430 Flash Settings -> Erase 选项中进行更改时、无法保存设置可能会出现问题。 此外、我没有您要谈论的确切路径来访问“MSP430 Flash Settings“。  我提供了屏幕截图。


      .DataFlash (NoLoad):{
        __DataFlash_start =.;
        。 =。 + DataFlash_Size;  /*保留 1024 个字节(DataFlash 长度)*/
        __DataFlash_end =.;
      }> DataFlash
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您现在的内存规格是什么样子的?

    您将无法在 0xFB80 和 0xFF80 之间容纳 512 字节对齐的 1024 字节区域(中断向量的开头)。 我预计您必须在 0xFA00 处开始该区域(将第二个段放在 0xFC00 处)。 您能否将其放在“高闪存“区域 (FLASH2) 中?

    我在 CCS 12.6.1 和 20.3.0 中尝试了“Needly segments only“选项、在关闭/重新打开 CCS 后、该选项似乎保持设置状态。

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

    我使用大型闪存模型、我的理解是、它首先利用 FLASH2 区域、所以我宁愿将其放在末尾的闪存区域中  我看不到中断向量的定义位置。  (INT00-RESET) 能告诉我这些是什么吗?  我将尝试移动它在该区域之前,如你建议,如果这是有效的。

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

    我把它放在 0xFA00、仍然无法解决问题。  需要注意的一点是、我更改为“Erase and download necessary segments only (Differential Download)“、当我再次启动调试会话时、它会恢复为默认值“Erase main memory only“。  因此、我仍然认为还有其他问题。  我会在这里剪切和粘贴屏幕截图、但它似乎不起作用。  也许我们可以设置缩放或其他设置吗?

    DataFlash_Size = 0x0400
      闪存中          :origin = 0x4400、length = 0xB600 /*为 0xBB80 */
      DataFlash        :origin = 0xFA00、length = 0x0400 /*保留 1024 字节*/
      FLASH2          :origin = 0x10000、length = 0x143F8 /*边界已更改以修复 CPU47 */
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我发现、即使在启动(几个)调试会话后、“必要的段“设置似乎也会保持(并被接受)。 CCS v12.6 和 v20.3 就是如此。

    我不确定我们在做什么不同。

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

    我们从这里去哪里?  我的设备无法正常工作。

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

    非邀约:我继续尝试、并开始遇到没有特定模式的验证错误。

    然后我发现了这个(旧)线程,建议使用 Erase Option “替换写入的内存位置,保留未写入的内存位置“。 这需要更长时间、但我没有遇到验证错误。

     https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1000801/msp430f5325-flash-memory-sections-being-erased-on-debugging-start-does-msp-fet-use-mass-or-segment-erase/3697285 

    如果你没有遇到这种症状,这个观察可能是没有意义的。

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

    在我的 lnk_msp430f5529.cmd 中、中断向量是使用以下几行形式嵌入的:  

    >  INT00          :origin = 0xFF80、length = 0x0002
    数据表 (SLAS590P) 表 9-1 中也指明了这些条件。
    它们就在闪存空间的中间、有时会让事情变得尴尬。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    【抱歉,我错过了您的帖子。】

    我们似乎在以某种方式做事情。  

    1) 你提到编辑.json ;这是什么文件? 我在 Project 中处理.cmd 文件以及 Project -> Properties。 我想知道您是否要编辑一些 CCS 生成的文件。

    2) 您提到您的 MSP430 闪存设置路径与我的路径不同。 你的是什么?

    3) 如何调用调试器? 在 CCS v20.3 中、我找到了 3 种不同的方法、但都没有更改闪存设置。 (我不记得 CCS 曾经自行更改闪存设置。)

    4) 您使用的是哪个 CCS 版本? 我一直在假设 v20.3。

    您可以使用“插入->图像“(位于论坛编辑框底部)来插入图像。

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

    1)。 我不再更改.json、它是由工具自动创建的。

    2)。 首先、不要选择该路径、除非您首先通过点击“Debug/Play"按钮“按钮使用调试器连接到目标、否则该文件不存在。

    在 main 中停止后、从菜单中选择“Run"->"Debugger Properties"->"MSP430“ Properties"->"MSP430 Flash“ Flash Settings"“ Settings"。“。</s>“   然后将弹出一个屏幕/对话框、您可以在其中更改建议的设置。  更改设置后、右下角有一个保存和关闭按钮、可按下该按钮。

    3)。 点击绿色的播放/调试选项。  要启动 CCS、我双击图标。   

    4)。  版本:20.3.0.14__1.9.0

    在我的浏览器中插入图像不起作用。  我把文件名和路径放在“url/file"中“中单击“确定“、没有任何反应。  

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

    1) 我刚刚在另一个论坛看到了这一点。 这个人正在编辑.theia/launch.json、设置将被忽略/覆盖。 声称此行为是 v20.3.0 的新行为

     https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1574337/mspm0g3507-issue-when-i-flash-or-start-a-debug-session-in-ccs-the-entire-flash-is-being-erased-even-though-the-configurations-that-work-in-uniflash-and-ccs-operate-expectedly 

    2) 在 main() 中停止后、程序已加载、因此太晚了。 您在 “项目“->"属性“属性“->"调试“调试“->"MSP430 闪“ 闪存设置“->"擦“擦除“选项中看到了什么? (我在这里没有我的设备,因此我无法调查运行选项是什么。)

    3) 我不熟悉这个图标,但我会看到,如果我能找到它。 [编辑:我通常使用右键单击->调试项目。 我还在(我想)Run(运行)菜单中找到了 2 个项目。]

    在“插入->图像“中、您是否单击了“上载“? (这个词本身就是一个“按钮“。)

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

    我无法键入所有内容、也无法在此处插入图像。  我们可以设置缩放吗?

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

    2a) 我找到了“Run"->"Debug Properties"“ Properties";“;当“当我对“Flash Settings“进行更改时、它们似乎反映在“Project Properties“中(按预期)。 但是、设置它们还为时已晚。

    运行->调试属性:

    项目->属性:

    【编辑:已删除重复图像】

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

    我返回到 CCS 版本 20.1、现在如果我在 Explorer 窗口中突出显示工程、然后在菜单中显示“Project"->"Properties",“,然后“然后在“在底部、底部有一个“Debug",“,供、供您点击。 然后、顶部有一个称为“Category"的“的下拉框、您可以在这里选择 MSP430 Flash Settings。  选择“Erase and download necessary segments only“(仅擦除和下载必要的片段)、然后单击“Save"(“(保存(保存)  现在、它会按预期保存和运行。  上述所有内容后、我认为最新版本的 CCS 软件存在问题、比如您在此链前面提供的链接、其他人也遇到了同样的问题。

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

    这听起来是进步。

    我的 CCS 声称与您的 CCS 相同 (WAS): 20.3.0.14___1.9.0、但不知何故我们看到了不同的行为。

    但我不会与成功争论。