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.

[参考译文] MSPM0G1507:如何为用于生产目的的 MSPM0G1507 固件映像 (Main+NONMAIN) 构建可靠的刷写脚本

Guru**** 2768365 points

Other Parts Discussed in Thread: MSPM0G3507, MSPM0G1507, UNIFLASH, MSPM0G1518

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1599333/mspm0g1507-how-to-build-a-reliable-flashing-script-for-mspm0g1507-firmware-image-main-nonmain-for-production-purposes

部件号: MSPM0G1507
Thread 中讨论的其他器件: UNIFLASH、MSPM0G3507、 MSPM0G1518

我需要为 MSPM0G1507 提供用于生产目的的固件映像。

固件映像包含两个部分:主存储器和非主存储器。

因此、应分两步刷写映像。

到目前为止、我一直使用 UniFlash 工具来实现此目的、因为 GUI 中有一个选项允许在刷写过程中擦除 NONMAIN 并再次写入该工具。

但对于量产应用、我需要 CLI 命令行功能来执行此刷写过程、方法是首先刷写主部分、然后分两步刷写非主部分。

您能帮我从哪里获得此类脚本或从哪种工具轻松生成吗?

我可以使用 单机命令行工具执行此操作吗?  

您是否建议交付两幅图像、一幅带有主部分、另一幅带有非主部分?

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

    尊敬的 Ahmed:

    我可以用 单机命令行工具来实现吗?  [/报价]

    您可以定义不同的擦除属性来执行 MAIN 或 NONMAIN 固件加载。

    用户可以自定义.ufsettings 文件中的 erase 属性。 示例如下:

    在该设置下、如果用户下载仅 NONMAIN 固件、它将仅擦除 NONMAIN 并对固件进行编程。

    您是否建议交付两幅图像、一幅带有主部分、另一幅带有非主部分?

    建议的流程是:

    擦除 MAIN — 编程 MAIN — 擦除 NONMAIN — 对 NONMAIN 编程。

    或者:

    擦除 NONMAIN — 对 NONMAIN 编程-(保持 MCU 不复位或重新加电)-擦除 MAIN — 对 MAIN 进行编程。 (如果在 NONMAIN 编程后 MCU 复位、则 NONMAIN 设置将生效、如果用户加密或禁用 SWD 连接、这可能会阻止 SWD 连接。)

    B.R.

    Sal

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

    感谢您  发送编修。

    我花了一些时间使用命令行实用程序 DSLite。  我能够执行刷写、但无法找到用于批量擦除或恢复出厂设置的独立命令。

     

    1 — 如何使用 DSLite 命令实用程序执行批量擦除和恢复出厂设置?

    仅对于批量擦除、我只尝试了以下命令、但失败了、等待目标停止的超时时间、尽管我在命令中指示了系统复位。 请检查以下日志:

    PS C:\ti\uniflash_9.1.0\deskdb\content\TICloudAgent\win\ccs_base\common\targetdb>..\..\..\DebugServer\bin\DSLite.exe flash -c .\MSPM0G3507.ccxml -r 1 -b MassErase -e
    DSLite 版本 20.1.0.3671
    配置调试器(首次启动时可能需要几分钟)...
    正在初始化注册数据库...
    正在初始化:CS_DAP_0
    执行启动脚本:CS_DAP_0
    正在初始化:Cortex-M0P
    执行启动脚本:Cortex-M0P
    正在初始化:sec_ap
    执行启动脚本:sec_AP
    正在连接...
    CORTEX_M0P:GEL 输出:存储器映射初始化完成
    失败:等待目标停止超时

    2-其次、您能否按照您发布的顺序 (main、然后 NONMAIN) 确认以下命令可靠地执行刷写步骤?

    我能否坚持使用这条简单的命令、而不是拆分为两条命令或将十六进制文件拆分为两个文件(对于 main 和 NONMAIN)?

    这是用于刷写 MAIN 和 NONMAIN 的命令:

    PS C:\ti\uniflash_9.1.0\deskdb\content\TICloudAgent\win\ccs_base\common\targetdb>..\..\..\DebugServer\bin\DSLite.exe flash -c .\MSPM0G3507.ccxml -s FlashEraseSelection=“Erase main 和 NONMAIN memory(请参阅上面的警告)“-e -f -v .\GFZProduction-Alligator.hex

    DSLite 版本 20.1.0.3671
    配置调试器(首次启动时可能需要几分钟)...
    正在初始化注册数据库...
    正在初始化:CS_DAP_0
    执行启动脚本:CS_DAP_0
    正在初始化:Cortex-M0P
    执行启动脚本:Cortex-M0P
    正在初始化:sec_ap
    执行启动脚本:sec_AP
    正在连接...
    CORTEX_M0P:GEL 输出:存储器映射初始化完成
    加载程序:.\GFZ18V-AlligatorProduction.hex
    正在准备...
    0x0 处为 65976 的 0
    65976 的 32752 在 0x0 时:49%
    65976 的 65504(0x0 时):99%
    0x41c00000 处 96 的 0 of 96:99%
    0 of 88 位于 0x41c00100:99%
    已完成:99%
    将 PC 设置为入口点。:99%
    验证程序:.\GFZ18V-AlligatorProduction.hex
    正在准备...
    0x0 处为 65976 的 0
    65976 的 32752 在 0x0 时:49%
    65976 的 65504(0x0 时):99%
    0x41c00000 处 96 的 0 of 96:99%
    0 of 88 位于 0x41c00100:99%
    已完成:99%
    INFO:CORTEX_M0P:.\GFZ18V-AlligatorProduction.hex 的程序验证成功
    成功

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

    您好、

    1-如何使用 DSLite 命令实用程序执行批量擦除和恢复出厂设置?

    用户应该在 GEL 文件中添加特殊行为以定义恢复出厂设置或批量擦除。 以下 E2E 可供您参考:

    2-其次、您能否确认以下命令按照您发布的顺序 (main 然后是 NONMAIN) 可靠地执行刷写步骤?

    不可以、它会擦除 MAIN 和 NONMAIN、但首先对 MAIN 进行编程。

    B.R.

    Sal

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

    嗨、 Sal Ye 

    “您应该在 GEL 文件中添加特殊行为以定义恢复出厂设置或批量擦除。 以下 E2E 论坛可供您参考:“

    E2E 的参考文献位于哪里? 您错过了该链接吗?

    “不可以、它会擦除 MAIN 和 NONMAIN、但首先对 MAIN 进行编程。“

    为什么这不可靠? 它会擦除这两个段、并且首先刷写主段、以遵循您之前提到的顺序:

    擦除 MAIN — 编程 MAIN — 擦除 NONMAIN — 对 NONMAIN 编程。

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

    您好、

    对不起,我忘记了链接:

     【常见问题解答】UNIFLASH:如何将 UniFlash 命令行接口与 MSPM0 器件配合使用(加载映像和读取存储器) 

    为什么这不可靠? 它会擦除两个部分、并首先闪烁主部分、以遵循您之前提到的顺序:

    您分享的流程是:擦除 MAIN — 擦除 NONMAIN — 编程 主要 -程序 NONMAIN

    程序顺序不遵循建议的顺序。

    B.R.

    Sal

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

    但是、以下情况通常被视为不良做法、因为我一直在 GUI 中使用该做法而不会出现问题?

    擦除 MAIN — 擦除 NONMAIN — 编程  主要  -程序  NONMAIN

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

    您好、

    这种顺序并不意味着错误。 这会增加事件发生的风险并导致 NONMAIN 为空。

    由于程序 main 需要很多时间、如果在 main 编程期间编程失败、则 NONMAIN 为空。

    擦除 NONMAIN 后立即对 NONMAIN 编程有助于降低风险。

    B.R.

    Sal

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

    感谢 Sal Ye 的 及时答复。

    最后一个问题是、 TIMSPM0G1507 闪存中是否有任何部分可以用于存储自定义用户数据(非主引导配置不适用于该特定部分)?

    更多详细信息:如果我禁用了应用调试访问、并同时使用非主配置对 MAIN 存储器扇区(mspm0g1507 为 128 个扇区)进行了写保护。 闪存中是否有单独的部分可以存储始终可以读取和写入但未应用引导配置的用户数据?

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

    您好、

    很遗憾、没有

    我的建议是、您可以保留 MAIN 128 个闪存扇区中的 1 个闪存扇区(或 8 个闪存扇区)不受 NONMAIN 保护。

    此外、我们有 MSPM0G1518/1519、它具有 16kB 数据闪存组、不受 NONMAIN 控制。

    B.R.

    Sal

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

    嗨、 Sal Ye 

    感谢您的回答。

    这对我们很有帮助!

    是的、我可以使 1 个闪存扇区不受保护、不对自定义用户数据进行写入。 此外、除了将受写保护的 NONMAIN 外、我还需要对所有其他 MAIN 扇区进行写保护。

    但还有一个额外的要求、我也能够重新刷写 MAIN 存储器(用户数据扇区除外)。 在我的当前设置中、可以使用启用的恢复出厂设置来完成此操作、但恢复出厂设置会擦除整个主闪存。 现在、我无法满足持久性用户数据的新要求、在执行 Re 刷写时不应擦除这些数据。

    你有一个想法,我可以放弃什么来实现持久的用户数据扇区,同时保持系统的安全?

    假设我有以下引导配置来满足我的读写保护要求:

    启动配置 政策/级别
    SWD 安全级别 1 级
    应用调试 禁用
    批量擦除 禁用
    恢复出厂设置 被启用
    BSL(引导加载程序模式) 禁用
    静态写保护 — MAIN 闪存 受静态保护、最后一个扇区 (包括用户数据)除外
    静态写保护 —  NONMAIN  闪存 静态写保护 (防止引导策略更改)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    如果恢复出厂设置、则无法保留闪存或非主闪存数据。

    因此、用户应在恢复出厂设置之前读回用户数据扇区。 以下是一些想法:

    1.使用密码启用应用程序调试、以便用户可以读回保留的闪存数据。 ->由于 MAIN 和 NONMAIN 受静态保护、因此可以使用密码读回代码区域、但除非恢复出厂设置、否则不能覆盖。

    2.启用 BSL 回读功能,使用带密码的 BSL 读取保留的闪存数据,然后执行恢复出厂设置。

    3.用户在 MCU 中有其他通信接口,指定一些命令读回保留的闪存,然后执行恢复出厂设置。

    B.R.

    Sal