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.

[参考译文] CC2340R5:为什么 imgtool 中需要 PAD 参数、以实现双映像 OAD、但片上 OAD 不需要该参数?

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1516683/cc2340r5-why--pad-paramter-is-needed-in-imgtool-for-dual-image-oad-but-not-for-on-chip-oad

器件型号:CC2340R5

工具/软件:

我注意到 imgtool basic_ble_oad_dual_image 和 basic_ble_oad_on_chip 的分步后脚本有区别。 在  basic_ble_oad_dual_image 中、-pad 参数被添加到脚本中以添加图像尾部、但在 basic_ble_oad_on_chip 中则不是。

两个 OAD 工程需要不同的 MCUBOOT 配置、片上 OAD 使用 XIP、双映像使用 overwrite_only。 看起来 XIP 模式不需要为 OAD 执行映像尾部、但我不太理解为什么。 我认为两种 MCUBOOT 模式都需要验证位于图像预告片中的签名。 BLE5-Stack 用户指南指出、尾将驻留在不同的位置用于 XIP 和覆盖、但我在本用户指南和 https://docs.mcuboot.com/中找不到一节解释了为什么

我想理解的是、为什么需要填充映像以覆盖模式、而不需要填充 XIP? 如果 MCUBOOT 能够找到填充或未填充的签名、为什么无法覆盖模式也使用未填充的映像?

此致、

Shuyang

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

    您好、Shuyang、

    感谢您的联系。

    让我们看看你的问题,并尽快回来给你。

    BR、

    David。

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

    您好!

    在片上/XIP OAD 项目中、映像由 persistent 应用直接写入主槽位、无需 MCUboot 即可移动映像。 在双映像 OAD 或片外 OAD 工程中、主映像会在称为辅助映像的"临时存储"空间中下载新固件、并且在下一次下电上电时、MCUboot 会将映像从辅助映像复制到主映像中。

    之所以--pad有必要、是因为--pad它不仅会填充映像、还会添加复制映像所需的复制标志(双映像 OAD 和片外 OAD 都需要)。 您可以在有关将 OAD 添加到现有项目的 SLA 中看到此内容(链接)。

    我不知道有任何方法有这些复印标志没有--pad. 您可以 在此处查看 imgtool 的文档
    以下是文档对该选项的看法:

      --pad                           Pad image to --slot-size bytes, adding
                                      trailer magic

    如果这是绝对必要有这个没有填充的拖车魔术,客户可以尝试修改 imgtool python 脚本本身,但这可能是危险和困难的,我会建议简单地使用--pad.

    此致、
    Maxence

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

    您好、Maxence、

    感谢解释,现在我可以理解为什么-需要 PAD。 我还有一个问题、签名是在拖车区域还是在其他地方? 我的印象是签名驻留在尾部、但现在我猜不是、因为 XIP 模式映像没有此尾部、但它仍然可以检查签名?

    我也很好奇这个拖车的设计,为什么它被设计成放置在垃圾地址? 我的意思是,它不能只是附加到实际的 bin 文件的末尾像图像没有--垫? 这可以减小映像并节省 OAD 时间。 用户是否需要指定拖车地址的特定原因?

    此致、

    Shuyang

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

    您好!

    根据我今天与另一个客户进行的测试、签名不在尾随数据中、而是插入在固件和填充之间。

    MCUboot 文档没有指定该签名的确切位置以及如何手动添加它、因此有必要使用 imgtool 来插入/生成它。

    至于为何拖车在一个特定的地址,我不知道为什么它是必要的。 我认为、原因可能是为了更简单地找到报尾位置、而不必实施检测魔术的逻辑(参阅 MCUboot 文档中的报尾如何制作)、但我在 SLA、MCUboot 文档或 MCUboot 版本的源代码中找不到原因。

    我可以询问这是哪个客户吗? 如果客户足够大、且没有填充的需求对于他们的项目至关重要、我们可能会花时间尝试找到一种变通办法、即具有无填充的覆盖模式。

    此致、
    Maxence

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

    您好! 深入挖掘后的小更新。

    实际上、这不是 TI 实现 MCUboot 的限制、而是来自 MCUboot 本身:

    可选--pad参数将在映像上放置一个尾部、指示应将映像视为升级。 将此映像写入辅助插槽将导致引导加载程序升级到辅助插槽。
    - MCUboot imgtool 文档

    现在、为了让 MCUboot 使用辅助插槽升级主插槽、需要一个映像尾、并且只能通过设置--pad 设置来添加。

    此致、
    Maxence

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

    您好、Maxence、

    感谢大家的详细阐述、现在已经很清楚了。 我还没有收到更改拖车位置的请求、客户只是对它在文件尾的原因感到好奇。 考虑到变革需要努力、我认为我们目前只使用 MCUBOOT。

    此致、

    Shuyang