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.

[参考译文] MSPM0G3507:如何在闪存上保留块

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1381432/mspm0g3507-how-to-reserve-a-block-on-flash

器件型号:MSPM0G3507

工具与软件:

根据 freertos_builds_LP_MSPM0G3507_RELEASE_ticlang_2_00_00_03、我们希望在闪存上保留特定块以进行保存
产品关键数据、并且此块无法在闪存映像上被擦除。

MSPP0G3507是否支持该功能以允许我们访问保留的闪存块、有什么示例可供参考?

谢谢。

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

    您好 ROI、

    是的、可以。

    我们在 NONMAIN 闪存中提供选项来阻止使用特定闪存区域进行闪存写入、最小大小为1KB。

    如果启用它、则不能通过刷写映像擦除它。 我想没有相关示例、但您可以使用静态写保护功能检查 NONMAIN 区域。

    更简单的方法是、您可以分配闪存映像擦除地址范围、并让其避开 产品 关键 数据范围。

    B.R.

    SAL

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

    尊敬的 Sal:

    我在查看技术文档上的 NONMAIN 区域时发现此区域由 BCR 和 BSL 使用、因此您建议的方式是将自定义数据"附加"到

    BCR_Config 或 BSL_Config 但不会创建新的 NONMAIN 区域?

    如果我在上文的理解是正确的、我在 TI 资源中找到了一个示例- flashctl_nonmain_memory_WRITE_LP_MSPM0G3507_nortos_ticlang

    但会显示如下所示的错误日志、我的 CCS 上是否有任何配置错误?

    Cortex_M0P:GEL 输出:内存映射初始化完成
    Cortex_M0P:文件加载程序:存储器写入失败:闪存编程器:错误、在不擦除的情况下尝试 NONMAIN 写入!
    Cortex_M0P:GEL:文件:C:\projects\workspace_v12\flashctl_nonmain_memory_WRITE_LP_MSPM0G3507_nortos_ticlang\Debug\flflashctl_nonmain_memory_WRITE_LP_MSPM0G3507_nortos_ticlang.out:加载失败。

    谢谢。

    ROI

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

    您好 ROI、

    闪存应首先擦除、然后将新数据加载到闪存。 因此、您应可靠地擦除 NONMAIN。 或者、旧数据将被保留、这可能会导致意外结果。

    同时、NONMAIN 是一个特殊特征、用于控制器件接口访问权限的任务、因此如果用户擦除 NONMAIN 而不加载新数据、则器件将被永久锁定且不能解锁。

    至于 CCS 中的错误、您应该将调试行为更改为擦除 NOMAIN 闪存区域。 下面是一个 exapmle:

    B.R.

    SAL

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

    顺便说一下、我建议用一种更简单的方法来完成它。

    使用 cmd 文件为一些临界数据保留一个特殊的闪存。 然后选择"按范围擦除主存储器扇区"以避免保留的闪存区域。

    顺便说一下、最小擦除大小为1KB、因此您应为此至少保留1KB。

    B.R.

    SAL

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

    尊敬的 Sal:

     我在项目中检查 cmd 文件、如下所示。

     如果我要为关键数据保留1KB、我是否需要修改 cmd 文件、以便  首先将闪存长度从0x00020000更改为0x0001FC00?

    CMD 文件:   

    小程序

    Flash (RX):origin = 0x00000000、length = 0x00020000  -> 0x0001FC00
    SRAM (rwx):origin = 0x20200000、length = 0x00008000
    BCR_CONFIG (R):origin = 0x41C00000、length = 0x00000080
    BSL_CONFIG (R):origin = 0x41C00100、length = 0x00000080

    }

    谢谢。

    ROI

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

    您好 ROI、

    是的、正确。 然后、您可以将0x1FC00 -0x20000分配为新的闪存区域、以安装一些要保留的数据。

    提供了编译器格拉默指南、可帮助您实施这些指南。

    https://www.ti.com/tool/ARM-CGT?keyMatch=TI%20CLANG 

    B.R.

    SAL