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或类似的 MCU 具有单调增加的计数器

Guru**** 1997655 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/1448412/mspm0g1507-mspm0g1507-or-similar-mcu-to-have-monotonically-increase-counter

器件型号:MSPM0G1507
主题中讨论的其他器件:MSPM0G3507

工具与软件:

尊敬的 TI 工程师:

我们将 MCUBoot 用于引导加载程序。 对于以下功能组合、我们是必需的:

我们希望使用 MCUBOOT_SWAP_USE_MOVE 以及 MCUBOOT_DELAY_PROTECTION。

但是、根据 mcuboot 文档、不支持它。 (软件防回滚不适用于移动、仅适用于  MCUBOOT_OVERRIDE_ONLY。

我知道、MCUBOOT_DIRECT_XIP 在防回滚方面运行良好。 因为它始终会获取要执行的有效最高版本。

你有什么建议可以解决我们的痛苦吗?

我看到 mcuboot 文档提到了 MCUBOOT_HW_ROLLBAL_PROT。 我看了相关章节、不过现在 TI 芯片似乎没办法安全地去实施单调递增的计数器。

非常感谢您的帮助!

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

    您好、Tiger、

    您能否说明您使用的 SDK 版本以及您参考的示例或文档? 以便更好地了解您的要求。

    此致、

    Pengfei

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

    mspm0_sdk_2_02_00_05我发现最新的 SDK 之间没有区别。

    我们使用 MSPM0G3507示例工程作为参考。 我的问题实际上与 MCUBOOT 有关。 我问 Chatgpt,他们说,我需要改变 boot_go ()函数的实现与以下类似(未经验证,可能出错)

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    int boot_go(struct boot_loader_state *state, struct boot_rsp *rsp)
    {
    int swap_type;
    swap_type = boot_validated_swap_type(state);
    if (swap_type == BOOT_SWAP_TYPE_NONE) {
    // Compare versions before deciding to swap
    const struct image_version *primary_ver, *secondary_ver;
    primary_ver = &state->imgs[BOOT_CURR_IMG(state)][BOOT_PRIMARY_SLOT].hdr.ih_ver;
    secondary_ver = &state->imgs[BOOT_CURR_IMG(state)][BOOT_SECONDARY_SLOT].hdr.ih_ver;
    if (boot_version_cmp(secondary_ver, primary_ver) > 0) {
    BOOT_LOG_INF("Secondary image is newer. Proceeding with swap.");
    swap_type = BOOT_SWAP_TYPE_TEST;
    } else {
    BOOT_LOG_INF("Primary image is up-to-date. No swap needed.");
    }
    }
    // Existing swap logic...
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    关于 MCUBOOT_HW_ROLLBAL_PROT、我 曾引用: https://docs.mcuboot.com/design.html#hw-downgrade-prevention

    但目前的 M0G 似乎没有任何 OTP (ONT 时间程序)区域或类似的方法。

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

    您好、Tiger、

    我需要一些时间来深入了解这份文件、我将在本周之前提供反馈意见。

    此致、

    Pengfei

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

    您好、Tiger、

    MSPM0G3507器件不容易支持降级预防和交换机制的功能。 您在第一个 POST 中列出的当前 MCU 引导限制是正确的。

    您可以通过使用器件上的安全功能执行有效的一次性编程、但这更接近整个器件上的 OTP、而不是单个部分。

    我们的 G3519器件具有更多功能、具备双组、可轻松实现您请求的启动功能、并包含单调计数器。 使用 G3519、您可以拥有2个映像、并可更新和交换映像、从而通过硬件保持寻址。

    此致、
    Luke