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.

[参考译文] LP-EM-CC2340R53:帮助将 MCUBoot + OAD 与 CC2340R53 (共享 SPI 总线)上的外部闪存集成

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1520279/lp-em-cc2340r53-help-integrating-mcuboot-oad-with-external-flash-on-cc2340r53-shared-spi-bus

器件型号:LP-EM-CC2340R53
主题:SysConfig 中讨论的其他器件

工具/软件:

您好:

我目前正在使用 MCUBoot (其第二个映像槽位位于外部闪存上)启用 OAD 固件更新。 我在培训过程中遇到了几个问题、希望获得一些指导。

系统概述

  • 频率 :定制硬件上的 CC2340R53

  • 外部闪存 :通过 SPI 连接(与另一个外设共享)

  • SDK 中找到 simplelink-lowpower-f3-sdk版本8.20.00.119

  • MCUBoot 基座 :mcuboot_app SDK 示例

1. MCUBoot 无法引导我的应用程序

我正在按照 这个 TI 教程 、并使用该basic_ble_oad_offchip示例来帮助配置我的应用以实现 MCUBoot 兼容性。 我已确认我的内存布局与工作示例非常相似。

在构建我的映像并使用imgtool生成 MCUBoot 兼容二进制文件后、MCUBoot 无法启动映像。 但是、如果我手动设置vector_table MCUBoot 内部的值、如下所示:

vector_table = 0x0 + 0x6000 + 0x100;


…成功跳转到我的应用程序。 这表明 MCUBoot 无法正确解析图像元数据来查找矢量表。 映像标题或签名步骤中是否缺少某些内容?

2. MCUBoot 中的外部闪存 GPIO 配置

我不确定 MCUBoot 如何知道将哪些 GPIO 用于外部 NVS。 根据我的理解:

  • TI_BOOT_USE_EXTERNAL_FLASHMCUBOOT_OVERWRITE_ONLY必须进行定义。

  • MCUBoot 似乎bsp_spi_lpf3.c取代了标准 SPI 驱动程序。

  • 在此文件中、GPIO 和外设配置采用了硬编码。

鉴于我的硬件使用不同的 GPIO 布局和共享 SPI 总线、我是否需要直接修改这些 SDK 源文件? 或者、是否有支持的方法可以通过特定于电路板的方式覆盖默认配置?

3.与 OAD 的共享 SPI 总线兼容性

由于我的外部闪存与另一个外设共享 SPI 总线、因此是否需要调整 OAD 服务或 MCUBoot 以安全地处理 SPI 总线共享? 是否有任何关于处理此问题的指导或示例代码?


总的来说、我很难找到有关 CC2340上 MCUBoot 和 OAD 环境中外部闪存配置的文档。 如果我错过了一些最佳实践或参考指南、如果有人告诉我正确的方向、我将不胜感激。

如果需要更多信息、请告知我。

提前感谢、
Alex Trujillo

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

    您好 Alex、

    1.如果要构建 MCUBoot 应用程序而不是使用预先提供的十六进制映像、请确保使用的是预期的 MCUBoot SysConfig 设置。

    0x76000是根据 basic_ble_oad_offchip 工程中 app_slot 大小的大小选择的(默认值、没有更改)、由*。cmd 文件确定并显示在结果的*。map 文件中。

    我正在使用 F3 SDK v8.40 、因此请确认您的 SDK 版本使用相同的闪存设置。  加载 MCUBoot 和 BLE5-Stack 应用后、我可以确认器件按预期运行。

    2. MCUBoot 故意不使用 SPI TI 驱动程序、以便可以为 BLE5-Stack 应用保留该驱动程序。  在中选择了 BSP_SPI_* IO  \source\ti\common\flash\no_rtos\extFlash\bsp.h、但如果更改引脚、则还需要根据器件数据表注意 bsp_spi_lpf3.c 中的*_PINMUX 值。

    3.检查 ext_flash.c、您将看到外部闪存 BSP_IOID_FLASH_CS 使用软件芯片选择。  因此、只要您 控制芯片选择引脚在任何时候仅保持启用一个外设、您就应该能够管理连接多个外设的 SPI 总线。

    BLE5-Stack 用户指南
    基本 BLE OAD 片外自述文件

    此致、
    Ryan