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.

[参考译文] CC1352P7:CC1352P7 MCUBoot 覆盖+外部闪存更新未引导新固件 (SDK 8.31.x.x)

Guru**** 2769955 points

Other Parts Discussed in Thread: CC1352P7, SYSCONFIG, UNIFLASH

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1607482/cc1352p7-cc1352p7-mcuboot-overwrite-external-flash-update-not-booting-new-firmware-sdk-8-31-x-x

器件型号: CC1352P7
Thread 中讨论的其他器件: SYSCONFIG、UNIFLASH

尊敬的 TI 支持团队:

我正在使用进行固件更新 MCUBoot 亮起 CC1352P7 并且希望得到澄清和指导、因为即使配置和编译步骤显示正确、我目前仍忙于运行时行为。

根据我们之前在另一个主题中的讨论、我被建议使用 mcuboot 示例工程、我尝试了该方法、但遇到了一些问题、我在下面提到了几个问题。 附加上一个讨论主题以供参考。

Point right 上一个主题讨论链接

下面是我的设置和我所面临的问题的摘要。

器件和 SDK
  • 频率 : CC1352P7

  • SDK 中找到 :simplelink_cc13xx_cc26xx_sdk_8_31_00_11(专门从 7.41 更新为使用 MCUBoot Sysconfig)

  • 工程 :简单中心(BLE 中心角色)

MCUBoot 配置 (SysConfig)

我已在中启用 MCUBoot entral.syscfg 并进行了配置、请参阅屏幕截图:

image.png

 

中使用了相同的配置  mcuboot.syscfg 。 (请参阅屏幕截图)

image.png

 

刷写流程

  1. 闪存中 mcuboot 工程 使用 UniFlash(一次)

  2. 闪存中 中央项目 (已签名的映像)

  3. 更新:

    • 新固件通过 UART 发送

    • 存储位置 外部闪存偏移 0x0

    • 设备已重新启动


编译后步骤(来自 MCUBoot 示例文档)

 
//post-build steps for simple_central.syscfg

${CG_TOOL_ROOT}/bin/tiarmobjcopy -O ihex ${BuildArtifactFileName} ${BuildArtifactFileBaseName}.hex
${CG_TOOL_ROOT}/bin/tiarmobjcopy -O binary ${ProjName}.out ${ProjName}_main.bin
${CG_TOOL_ROOT}/bin/tiarmobjcopy -O binary ${ProjName}.out ${ProjName}-noheader.bin  --remove-section=.ccfg
${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_INSTALL_DIR}/tools/common/mcuboot/imgtool sign --header-size 0x80 --align 4 --slot-size 0xB0000 --version 1.0.0 --pad-header --pad --key ${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_INSTALL_DIR}/source/third_party/mcuboot/root-ec-p256.pem ${BuildArtifactFileBaseName}-noheader.bin ${BuildArtifactFileBaseName}.bin
  • 已签名 central.bin即我通过 UART 发送的信号
  • .ccfg按照建议排除

  • 全有符号二进制(包括填充)从偏移量开始写入外部闪存 0x0

发现问题

重新启动后:

  • 频率 始终引导旧固件

  • 新固件为 从未执行

  • 无碰撞或复位循环

  • 行为表明 MCUBoot 静默拒绝更新映像

我有几个疑问,下面提到:

  1. 我的观察甚至是在启用后进行的 启用外部闪存 在 mcuboot.syscfg 或 simple_central.syscfg 中、它使用来自内部闪存的主映像和辅助映像。 这是否也是您的行为?
  2. 在中启用 MCUBoot 之后  entral.syscfg 、应:

    • 我们是否需要同时刷写这两者  mcuboot +中央项目

    • CAN 仅中央项目 闪存?

  3. 引导加载程序在高闪存地址的逻辑放置 (在主要和辅助之后)对于 CC1352P7 正确、即使首先执行 MCUBoot 也是如此?

  4. 辅助映像基地址 在 SysConfig 中、在覆盖模式下使用外部闪存时仅占位符?

  5. --header-size 0x80考虑到该值在 SysConfig 中不可见、对于 CC1352P7 MCUBoot 集成是否正确?

  6. MCUBoot 是否需要 任何额外的标志或 API 调用 从应用程序中将外部映像标记为待处理、还是偏移处的有效已签名映像0x0足够?

  7. 有任何问题 已知限制或额外步骤 对于 MCUBoot 覆盖+ CC1352P7 上的外部闪存?

我非常感谢:

  • 确认此流程适用于 CC1352P7

  • 缺少配置或运行时要求

  • 最小值 参考流程 专门针对 CC1352P7 上的覆盖+外部闪存

感谢您的支持。

此致、
Rajnish Singh

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

    尊敬的 Rajnish:  

    这里就以下主题进行了更多讨论: CC1354P10:所需协助:MCUBoot 样片在 TI RTOS 上无法正常工作 — 低于 1GHz 论坛 — 低于 1GHz - TI E2E 支持论坛

    顺便说一下、您是否确定通过 UART 传输的映像已正确刷写到外部闪存中? 如果您愿意、您还可以使用该软件刷写外部闪存: GitHub - TexasInstruments/flash-Rover:直接从主机读取和写入 TI CC13xx/CC26xx 器件上的外部闪存

    此致、

    Arthur

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

    尊敬的 Arthur:  

    感谢您的答复、

    我正在休假、现在已恢复这项任务的工作。

    我已经浏览过下面的主题、尝试 按照本文中的建议修改为 simple_central 工程、并在尝试更改引导加载程序基本地址时遇到错误请参阅随附的屏幕截图、同时更改引导加载程序基本地址时、mcuboot 或 mcuboot_blinkey 工程中也会出现相同的错误。

    此处还有关于以下主题的讨论: CC1354P10:需要帮助:MCUBoot 样片在 TI RTOS 上无法正常工作 — Sub-1 GHz 论坛 — Sub-1 GHz - TI E2E 支持论坛[/报价]

    我已经证实了这一点 .bin 文件已正确刷写到外部闪存中。

    此外、在浏览 MCUBoot 文档时、我发现 CC1352P7 没有 TrustZone 功能(请参阅随附的屏幕截图)。

    1. CC1352P7 是否能够在没有 TrustZone 功能的情况下运行 MCUBoot?
    2. 更改引导加载程序基地址时为什么会出现引导加载程序地址错误?
    3. 此外、您还没有清楚我的听力疑问、我是否还需要将 MCUBoot 配置添加到 simple_central 工程中? 或单独 MCUBoot 能够在刷写 MCUBoot +应用程序工程时进行启动。

    期待您的答复、

    此致、

    Rajnish Singh

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

    尊敬的 Rajnish:

    1. CC1352P7 是否能够在没有 TrustZone 功能的情况下运行 MCUBoot?
      1. 是的。 请使用 TZ_Disabled 构建配置。
    2. 更改引导加载程序基地址时为什么会出现引导加载程序地址错误?
      1. 我不明白这个问题。  
    3. 此外、您还没有清楚我的听力疑问、我是否还需要将 MCUBoot 配置添加到 simple_central 工程中? 或单独 MCUBoot 能够在刷写 MCUBoot +应用程序工程时进行启动。
      1. 不可以、该配置应由 MCUBoot 工程拥有。

    谢谢、

    Marie H

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

    尊敬的 Marie:

    感谢您的答复、

    更改引导加载程序基址时为什么会出现引导加载程序地址错误?
    1. 我不明白这个问题。  
    [/报价]

    请参阅随附的图、

    在 mcuboot.syscfg 中执行设置时遇到此错误(通过引用该线程 CC1354P10:需要帮助:MCUBoot 示例在 TI RTOS 上无法正常工作)。 只需要了解这个错误。  

    也没有找到有关如何运行的任何正确的流程文档 MCUBoot 项目  CC1352P7 指定 OVERWRITE MODE 同时使用 外部闪存 移动数据。

    如果有任何可用资源、请分享。

    您也没有明确我的专家的疑问、我是否还需要将 MCUBoot 配置添加到 simple_central 工程中? 或单独 MCUBoot 能够在刷写 MCUBoot +应用程序工程时进行启动。
    1. 不可以、该配置应由 MCUBoot 工程拥有。
    [/报价]

    好的、明白了、因此我将按照下面所述执行的后续步骤。 请多多指教。  

    1.我将构建 MCUBoot 在 CC1352P7 中使用 Uniflash 进行工程和闪存

    2.从 mcuboot.syscfg 中删除 mcuboot 一节并进行编译 简单中心 将生成已签名和已排除的 cfg 的工程  .bin 然后刷写相同的文件 .bin Uniflash 来编写该文件

    此致、

    Rajnish Singh

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

    尊敬的 Rajnish:

    我认为图像上传失败、我看不到。

    在我看来、在 SysConfig 中选择 Overwrite 和“Enable External Flash“应该是唯一需要的步骤。

    您的 CCF(器件配置)应仅在 MCUBoot 工程中定义。 我不知道 Simple Central 是否允许您从 SysConfig 中删除 ccfg。 如果没有、我建议从 SysConfig 中删除该文件。 或者、我认为您可以指示 oad 映像工具在生成 bin 文件时删除 CCFG。

    顺便说一下、即使主要主题是如何使用信任区域、此 SLA 也可能对您有所帮助: https://dev.ti.com/tirex/explore/node?isTheia=false&node=A__AUd0E-3BcdL8ziAQwp75QQ__com.ti.SIMPLELINK_ACADEMY_CC13XX_CC26XX_SDK__AfkT0vQ__LATEST&placeholder=true 

    谢谢、

    Marie H

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

    尊敬的 Marie:

    感谢您的答复、

    您的 CCF(器件配置)应仅在 MCUBoot 工程中定义。 我不知道 Simple Central 是否允许您从 SysConfig 中删除 ccfg。 如果没有、我建议从 SysConfig 中删除该文件。 或者、我认为您可以指示 oad 映像工具在生成 bin 文件时删除 CCFG。

    是的、在编译后步骤中、我也使用同样的方法来删除使用 oad 映像工具的 cfg。

     

    本文档也未解释如何使用 mcuboot 与外部闪存存储器。

    在我看来、在 SysConfig 中选择“覆盖“和“启用外部闪存“应该是唯一需要的步骤。

    好的、我将再次检查、然后告诉您。

    此致、

    Rajnish Singh