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.

[参考译文] MSPM0L1304:MSPM0 BSL 编程开发问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1612597/mspm0l1304-mspm0-bsl-programming-development-issue

部件号: MSPM0L1304

尊敬的 TI 团队:

我目前正在软件中开发 BSL 编程流程。 我要参考的文档是“MSPM0 引导加载程序“(slau887a.pdf)。

我的要求之一是擦除 NONMAIN 区域、然后使用所需配置对其重新编程。 我知道以下约束:不应在不重新编程的情况下擦除 NONMAIN 区域。

不过、我发现唯一可擦除 NONMAIN 的方法是使用“CMD 恢复出厂设置“命令、该命令也会擦除 MAIN 区域。 我想问是否有任何命令可以在不擦除 MAIN 的情况下仅擦除 NONMAIN 区域。

此外、在默认状态下、“CMD 存储器读回“命令不能用于读取我知道的器件内容。 因此、若要验证器件内容、只能使用使用使用 CRC32 的“CMD 独立验证“命令。 但是、此命令要求最小验证大小为 1024 个字节。

目前、我想通过 BSL 验证 NONMAIN 区域的编程内容、但 NONMAIN 区域仅为 512 字节。 在这种情况下、我似乎无法将“CMD Standalone Verification“命令与 CRC32 一同使用。 是否有任何其他命令或方法可用于验证 NONMAIN 区域的编程结果?

 

谢谢。

Steve。

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

    通常、在工厂大规模生产阶段对 NONMAIN 进行修改、使用 SWD 接口对 NONMAIN 进行一次编程。

    但还有其他使用 BSL 的方法、请使用 擦除 变量  4.3 引导加载程序内核命令中的命令

    您可以使用这两个命令设置非主地址、以便对非主地址进行编程、擦除、然后进行编程。

    www.ti.com/.../slau887a.pdf

    是否有任何其他命令或方法可用于验证 NONMAIN 区域的编程结果?

    编号 您可以通过 SWD 修改 NONMAIN 来启用 BSL 读取功能、也可以使用 SWD 对 NONMAIN 进行编程。

    但是、您仍然可以尝试使用 1kB 长度的独立验证来验证 NONMAIN 的 CRC、我不知道会发生什么、但您可以尝试。

    通过 BSL 进行验证不会损坏器件。

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

    尊敬的 Chi:

    现在、我要求只使用 BSL 来对 IC 进行编程、而不使用 SWD 接口。

    我知道 BSL 可用于对 NONMAIN 区域进行编程。 但是、对于擦除操作、“CMD 恢复出厂设置“命令会擦除 MAIN 区域和 NONMAIN 区域、“CMD 闪存范围擦除“命令要求最小擦除大小为 1024 个字节。 由于 NONMAIN 区域仅为 512 字节、因此我担心直接使用“CMD 闪存范围擦除“可能会损坏 IC。

    基于此、“CMD 独立验证“命令似乎也无法准确验证 NONMAIN 区域、对吗? 并且是否没有其他通过 BSL 仅验证 NONMAIN 区域的方法?

    Steve。

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

    这是一个恢复命令、将复位 NONMAIN 内容。

    如果要擦除非主存储器、则需要使用 ERASE 命令。

    由于 NONMAIN 区域仅为 512 字节、因此我担心直接使用“CMD 闪存范围擦除“可能会损坏 IC。

    根据硬件、它是一个 1KB 大小的闪存库、所以您可以在开发板上试用整个过程、我觉得可以、但我们没有在文档中添加这种操作。

    基于此、“CMD 独立验证“命令似乎也无法准确验证 NONMAIN 区域、正确吗? 是否没有其他通过 BSL 仅验证 NONMAIN 区域的方法?

    您仍然可以使用此命令来验证 NONMAIN、如果我们要验证 Nonmain、则必须验证 1KB、将其余字节视为 0xFF。

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

    嗨、Chi

    这是一个恢复命令、将重置非主内容。

    抱歉、根据文档中的说明、表明 NONMAIN 内容将被擦除。

    这是否意味着 IC 的 MAIN 区域和 NONMAIN 区域都将恢复为出厂默认状态?

    根据硬件的不同、这是一个 1KB 大小的闪存组、因此您可以在开发板上尝试整个过程、我认为这是可以的、但我们没有在文档中添加这种操作。

    因此、直接擦除包含 NONMAIN 区域的 1KB 块似乎是可以接受的、同时擦除额外的地址范围 0x41C00200–0x41C003FF 不会导致任何问题、正确吗?

    您仍然可以使用此命令来验证 Nonmain、如果我们要验证 Nonmain、则必须验证 1KB(考虑到其余字节为 0xFF)。

    好的、我将测试 CRC32 验证。

    感谢您的解释和帮助。

    Steve。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid=“503283" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1612597/mspm0l1304-mspm0-bsl-programming-development-issue/6215185

    抱歉、根据文档中的说明、表明 NONMAIN 内容将被擦除。

    这是否意味着 IC 的 MAIN 区域和 NONMAIN 区域都将恢复为出厂默认状态?

    [/报价]

    NONMAIN 内容将被擦除至 0xFF、您需要对其进行编程。

    您的理解是正确的。

    因此、直接擦除包含 NONMAIN 区域的 1KB 块似乎是可以接受的、并且一起擦除额外的地址范围 0x41C00200–0x41C003FF 不会导致任何问题、正确?

    不应导致任何错误。

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

    嗨、Chi

    它不应导致任何错误。

    遗憾的是、当我尝试使用“闪存范围擦除“命令来擦除 NONMAIN 区域时、它返回了 MSG 0x05、这表明擦除地址不受支持。

    查看“闪存范围擦除“命令的说明后、它确实不支持对 NONMAIN 区域进行操作。

    似乎擦除 NONMAIN 区域的唯一方法是使用“恢复出厂设置“、正确吗? 尽管这也会同时擦除主区域。

    谢谢。

    Steve。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    擦除 NONMAIN 区域的唯一方法似乎是使用“恢复出厂设置“、正确吗? 尽管这也会同时擦除主区域。

    感谢您提供反馈。

    因此、我们需要首先对 NONMAIN 进行编程、然后对 MAIN 区域进行编程。