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.

[参考译文] MSPM0L1227:如何通过应用程序擦除/写入闪存

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1467721/mspm0l1227-how-to-erase-write-flash-by-application

器件型号:MSPM0L1227

工具与软件:

您好!

 

我的客户希望在用户应用运行期间更新(擦除和写入)闪存中的一些数据。

你能告诉他们如何做到这一点吗?

 

为了擦除/写入闪存中的数据、他们认为要将用于擦除/写入闪存的程序分配至闪存中的一个存储体、并将擦除/写入的数据区域分配至另一个存储体。

您能告诉他们如何将代码分配到每个不同的银行吗?

 

以下步骤是否正确?

首先、将闪存1/2的地址和 Device_Linker.cmd"中内存处的内存组0/1地址分频。

之后、将程序(.text)分配给一个存储体、并将要更新的数据区域分配给另一个存储体。

 

但是、即使他们修改了.cmd 文件、它也将在构建时被自动覆盖、所以您告诉他们正确的过程会很有帮助。

 

是否有通过擦除/写入一个组上的程序来擦除/写入另一个组的示例?

 

谢谢。此致、

英明

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

    你好、英明、

    您的客户正尝试将哪些数据存储在闪存组中? 当然可以将一个闪存存储体指定为您的应用存储体、一个指定为您的数据存储体、只需在链接器中指定为应用保留一个地址范围、然后将应用放在该存储体中、并以类似的方式指定另一个存储体的地址范围用于数据、然后确保您的应用程序仅在该存储器区域内写入数据。

    因此、您在上面列出的过程通常是正确的。 为了防止在构建时覆盖.cmd 文件、您需要转到.syscfg 文件、转到工程配置文件选项卡、然后取消选择链接器文件生成选项。 然后、您需要手动将链接器文件放置到主项目目录中。

    至于写入和擦除闪存的示例、我建议您查看 SDK 中的 FLASHCTL 示例。 只要您向 flashctl 发出的命令使用"数据"存储体地址、该存储体就只会与该数据存储体进行交互。 示例中、我们尚未明确概述将一个组用作数据库、但您只需要将一个特定组中的地址用于数据、这会起作用。