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.

[参考译文] MSPM0L1306:保留64KB 闪存的最后一部分以存储永久信息

Guru**** 2442090 points
Other Parts Discussed in Thread: MSPM0L1306, UNIFLASH, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1320855/mspm0l1306-preserve-the-last-portion-of-64kb-flash-to-store-persist-information

器件型号:MSPM0L1306
主题中讨论的其他器件: UNIFLASHSysConfig

您好!

我想保留64KB 闪存的最后一部分(4KB)以存储持续信息。

有人知道 实现这一目标的方法吗?

我试图修改 mspm0l1306.cmd 以将闪存大小减半、前提是程序不会触及闪存的下半部分。

不过、每次我将程序加载到闪存时、似乎都会擦除整个闪存(64KB)、然后加载新映像。

我对闪存进行编程的方式是(在 MacOS 上):

#!/bin/bash
/Applications/ti/uniflash_8.4.0/dslite.sh -e -f -v my_program.out -c targetConfigs/MSPM0L1306.ccxml
有人能帮忙吗? 我的目标是在将图像加载到闪存中时不要触碰闪存的最后4KB。
此致、
吉米
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jimmy:

    如果您要下载的代码不是从0x00开始、

     请修改 cmd。 文件

    2.由于加载会执行批量擦除、如果您要保留此映像、请通过 SysConfig 使用 SWP

    B.R.

    佐伊

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

    似乎我没有"configuration NVM"选项卡?

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

    尊敬的 Jimmy:

    您 SysConfig 的版本比我旧、这就是为什么没有此选项卡的原因。

    对于 SysConfig、'nonmain'是'configuration NVM'

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

    现在、我将"main swp (其余扇区)"设置为0x0。

    目的是勿触摸64KB 闪存的后半部分。

    但是、当我加载映像时、似乎所有内容都仍然被擦除。 尝试了2种方式:

    (1)在 CCS Theia 中运行"Debug project"。

    (2)使用命令行加载映像- /Applications/ti/uniflash_8.4.0/dslite.sh  -e  -f -v  my_program.out  -c  targetConfigs/MSPM0L1306.ccxml

    两种方法都失败了。

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

    我添加了一个设置、该设置部分解决了我的问题、但没有完全解决。

    /Applications/ti/uniflash_8.4.0/dslite.sh -e -f -v  my_program.out -c targetConfigs/MSPM0L1306.ccxml  --设置  FlashEraseSelection=2
    如果我使用此脚本加载映像、我发现先前存储在地址0x7C00处的值已正确保留、但是地址0xF000处的值仍然会以某种方式被擦除。
    FlashEraseSelection=2表示: 仅擦除主扇区和 NONMAIN 必要扇区
    0。只擦除主存储器
    1.擦除 MAIN 和 NONMAIN 存储器(请参阅上文的警告)
    2.仅擦除 MAIN 和 NONMAIN 必要扇区(请参阅上文的警告)
    3.按范围擦除主存储器扇区(请在下方指定)
    4.请勿擦除闪存
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    抱歉、我的情况有误。

    添加"--setting  FlashEraseSelection=2"解决了我的问题。 我可以看到地址0x7c00和0xF000处的值已正确保留。

    我还有另一个问题:

    -如果我使用"--setting FlashEraseSelection=3",意思是"按范围擦除主存储器扇区(指定如下)",我该如何在命令行设置中指定范围?

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

    尊敬的 Jimmy:

    总之、

    • 有两种方法可以解决此问题。
    1. 设置静态写保护。 当您更改.cmd 且其"主 SWP (其余扇区)"被设置为0x0。 当您尝试下载时、请启用 NONMAIN 擦除 。 然后可以加载闪存并进行切换。 然后、您可以尝试下载从0x0000开始的正常代码。
    2. 范围擦除加载。 启用"按范围擦除主存储器扇区   "并通过 uniflash 设置地址  

    顺便说一下, "--setting FlashEraseSelection=3"是指"按范围擦除主内存扇区(请在下面指明)? 或者  "--setting FlashEraseSelection=4"。 实际上、我不熟悉命令行

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    FlashEraseSelection 值:
    0。只擦除主存储器
    1.擦除 MAIN 和 NONMAIN 存储器(请参阅上文的警告)
    2.仅擦除 MAIN 和 NONMAIN 必要扇区(请参阅上文的警告)
    3.按范围擦除主存储器扇区(请在下方指定)
    4.请勿擦除闪存