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 加载应用程序

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1510448/lp-em-cc2340r53-application-not-getting-loaded-via-mcuboot

器件型号:LP-EM-CC2340R53
Thread 中讨论的其他器件:UNIFLASHSYSCONFIG

工具/软件:

e2e.ti.com/.../4527.main_5F00_freertos.ce2e.ti.com/.../app_5F00_main.c 

尊敬的团队:   

根据实验、我可以看到对于引导加  载程序、我需要将应用程序映像采用二进制格式(.bin)、仅用于 MCU 引导加载程序。 [请确认]

我的目标是要做 基本 Ble 示例应用   复位时由 TI 引导加载程序工程引导代码[mcuboot_LP_EM_CC2340R53_nortos_ticlang]加载。

 

我所做的步骤:

  1. 我修改了基本 BLE 应用、以便每1秒切换一次绿色 LED 及其原始功能。  我还附加了我修改的文件在基本 ble 应用程序切换绿色 LED 每1秒一次
  2. 首次从 CCS IDE 刷新应用程序时、我可以看到我的应用程序工作正常、并且 我能够看到绿色 LED 每秒闪烁一次。
  3. 编译给了我"basic_ble_LP_EM_CC2340R53_freertos_ticlang.out"、因为引导加载程序需要 bin 文件、我使用命令进行了转换
    1.  C:/ti/ccs1281/ccs/tools/compiler/ti-cgt-armllvm_3.2.2.LTS/bin/tiarmobjcopy basic_ble_LP_EM_CC2340R53_freertos_ticlang.out --output-target 二进制文件 basic_ble_LP_EM_CC2340R53_freertos_ticlang_no_cfg_withLed.bin --remove-section=.ccfg  
  1. 请注意 : 如果我  在上述命令中没有提供选项{--remove-section=.ccfg }、则.bin 生成的文件大小非常大 我不知道为什么? ]、、如何刷新 应用程序中存在的 cfg 区域数据

 

  1. 现在我需要对固件签名并向其添加 MCU-boot 标头和签名,这是通过 MCU 启动映像签名工具使用 下面给出的命令来完成的
    1. C:/ti/simplelink_lowpower_f3_sdk_8_40_00_61/tools/common/mcuboot/imgtool 符号--header-size 0x100 --align 4 --slot - size 0x3B000 --version 1.0.0 --- pad-header -- pad -- key C:/ti/simplelink_lowpower_f3_sdk_8_40_00_61/source/third_party/mcuboot/root-ec-p256.pem basic_ble_LP_EM_CC2340R53_freertos_ticlang_no_cfg_withLed.bin basic_ble_LP_EM_CC2340R53_freertos_ticlang_no_cfg_withLed_signed.bin

 

  1. 使用 uniflash 工具加载引导加载程序固件和基本 ble 签名映像 、如下所示。 请参阅下面的屏幕截图

 

  1. 加载后,我可以看到我的应用程序没有运行, 观察:在 CC2340R53 EVAL 板的绿色 LED 上闪烁几次后,红色 LED 始终亮起。

 

 请注意 :我没有修改 Basic BLE 应用程序示例的链接器命令脚本( lpf3_app_freertos.cmd )。  还会附加我与此电子邮件一起使用的示例应用程序项目

 

您能告诉我如何解决这个启动加载问题吗?

 

 方面

Ilan

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

    您好!

    1.要回答你关于.bin 的问题,你可以看到这个主题(链接):

    out 是在编译/链接过程之后从 TI 代码生成工具生成的输出。 使用 CCS 加载和调试程序时、该.out 文件会下载到目标上。 StellarisWare 示例的默认编译包括-g 编译选项、该选项保留了调试信息、因此是很大的.out 文件。 通常、在用户完成程序调试后、他们会删除-g 选项以从最终可执行文件中删除符号调试信息。

    因此、您可以使用.out、但建议使用.bin 来显著减小其大小

    2.有关如何将 BLE OAD 添加到工程的确切步骤(例如 Basic_BLE)、您可以按照 SimpleLink Academy 中有关 OAD 的说明(链接)进行操作。 如果步骤有任何问题、您可以尝试遵循本指南并返回。

    此致、
    Maxence

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

    谢谢,我关注的页面,做了更改 ,我需要闪存,我们被要求看看下面 参考链接    OAD_基本面 [低功耗蓝牙-无线下载(OAD)基础知识—用于 CC23xx 的 SimpleLink Academy]  

    我对  basic_ble_oad_onchip_LP_EM_CC2340R53_freertos_ticlang  类型感兴趣:  

    在演示过程中、会发出如下所述的警告。  

    警告:

    在比较带有标题的图像和不带标题的图像时、必须记住标题本身会占用空间。 图像代码部分的可用空间会缩小以容纳标头、而复位向量会被推回以容纳标头。 这些更改在链接器脚本(缩小应用空间)和 RTOS .cfg 文件(重定位复位矢量)中指定。

    我想了解更多信息  

    1. 链接器脚本中的更改,我 可以看到"lpf3_app_freertos.cmd",我希望这是链接器脚本,我们需要在这里查找哪些更改, w.r.t onchip OAD ?  

      2. RTOS .cfg 文件(重定位复位向量)。 - 在 "basic_ble_oad_onchip_LP_EM_CC2340R53_freertos_ticlang"项目中有这个文件

    3.同样、在片上 OAD 的同一文档中提到、具有片上 OAD 功能还需要另一个支持工程"basic_persistent_LP_EM_CC2340R53_freertos_ticlang"、但 SimpleLink Academy 关于 OAD 的链接(链接)。 您提供的内容没有提及此事吗?您能否提供这方面的更多信息。  

    方面

    Ilan   

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

    您好!

    1. 是的、lpf3_app_freertos.cmd 是链接器脚本/命令文件。 下面的一篇文章更详细地介绍了 TI 链接器命令文件如何工作来详细了解该文件(链接)。 编译具有片上 OAD 标志设置(OAD_APP_ONCHIP)的工程时、链接器脚本中会发生一些更改。
      1. 为 MCUBoot 引导加载程序定义空间。 此空间取决于是否启用了安全启动。
      2. 为持久应用定义空间。
      3. 将公共段(.text、.resetVecs、.rodata、...)设置为指向应用程序插槽而不是闪存
    2. 我不确定 RTOS .cfg 文件的含义。 如果讨论的是 FreeRTOSConfig、h 文件、这是在构建项目 syscfg 文件时由 SysConfig 工具生成的。 包含复位矢量的变量的名称可在的 SysConfig 中找到 TI 器件-器件配置-引导配置-应用程序矢量表 。 然后在下定义该变量 TI_freertos_config.c 、它是由 SysConfig 生成的文件。
    3. 持久应用负责通过 BLE OAD 下载新映像并将其放置在闪存中的正确位置。 它位于下<SDK_INSTALL_DIR>\examples\rtos\LP_EM_CC2340R53\ble5stack\basic_persistent\
      在讨论闪存布局时、此 SLA (链接)稍微介绍了持久应用程序。

    我希望我已经回答了你的所有问题。 如果你有更多,不要犹豫,问.

    此致、
    Maxence

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

    肯定会有一个看,同时仍通过文档 OAD 基础仍然有几个问题?  

    Q1: MCU 引导加载程序将没有标头根据我的理解而是图像标头在那里仅用于应用程序映像,请纠正我如果我的理解是错误的。 在上面的存储器分区图片中、描述了从闪存地址0x0000000开始的引导加载程序、 那么为什么文档中会这样说 地址0x0000000被图像标题占用?

    [摘录自 TI 文档]  默认情况下、引导 ROM 将跳转到地址0x00000000并查找矢量表、但这个区域现在被映像标头占用。 必须使用自定义 CCFG 来指示器件直接跳转到 MCUboot。

    Q2:你还能详细说明以下陈述是什么意思吗 ? MCU 启动和 应用程序映像的 CCFG 数据是否应相同 或有所不同

    [摘录自 TI 文档]  此外、MCUboot 和 CCFG 结构都连接在一起、因为两者都是器件成功启动所必需的。启动 ROM 和启动固件需要 CCFG、用于器件修整并确定程序执行从何处开始。

     

    问题3: 在 SDK 文件 "ccfg_app_ble.c"中找到该文件的位置、如何确认 该文件包含在引导加载程序或 OAD 示例工程中、我在 MCUBoot 或 basic_ble_oad_onchip_LP_EM_CC2340R53_freertos_ticlang 应用程序中都看不到该文件?

    [摘录自 TI 文档]   MCUboot 负责链接和定义 CCFG 结构、而不是像非 OAD 情况下那样的应用。 因此、CCFG 段无法由 OAD 修改、如果已定义、则工具链将其删除。

    [摘录自 TI 文档]   应  在应用程序中包含和链接文件 ccfg_app_ble.c? 不, Bootloader 链接 CCFG  : 作为一种失效防护机制, CCFG 是 Bootloader 的一部分。

    此致  

    Ilan  

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

    您好!

    1. 我认为这可能是 SLA 中的错误。 闪存地址0x00000000是 MCUBoot 引导加载程序的基地址、没有标头。 SLA 应该说的是"默认情况下、引导 ROM 将跳转到地址0x00000000并查找矢量表、但该区域现在被 MCUBoot 引导加载程序占用。 必须使用自定义 CCFG 来指示器件直接跳转到 MCUboot。"
    2. SLA 提到 MCUBoot 和 CCFG 结构都绑定在一起、原因是 这两种引导都需要使用 OTA 进行引导 。 您可以在技术参考手册(链接)第8节中找到一个流程图、该流程图介绍了如何使用 CCFG 来确定如何启动 MCUBoot。
    3. 我不确定 ccfg_app_ble.c 是什么、可能是 SysConfig 生成的文件、但信息已过期/已重命名。 我会尝试询问是否有人知道答案。

    此致、
    Maxence

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

    您好、Maxence、  

    感谢您提供有关该主题的所有意见。 我按照步骤转换了我的基本 BLE 示例、以具有 OAD 功能并对其进行了测试。  

    现在是时候根据我们的需求对其进行定制了。 我来介绍一下 MCU 引导内部设计、以便更好地理解、并在 单独的主题中提出说明

    此致

    Ilan