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:减少 MCUBoot 启动时间

Guru**** 2538960 points
Other Parts Discussed in Thread: SYSCONFIG, UNIFLASH, CC2340R5

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1521488/cc2340r5-mcuboot-boot-time-reduction

器件型号:CC2340R5
Thread 中讨论的其他器件:SYSCONFIGUNIFLASH

工具/软件:

您好论坛、

我正在将 OAD 与项目集成。 SDK 8.10.02.01。 我观察到引导时间约为~4.5 秒至 5 秒。 您能否建议一种将其切开至~2-2.5 秒的方法。  

我曾因类似问题而访问过论坛、似乎“禁用 GPIO 调试“可以解决问题、但我不确定如何解决。 我的理解是、禁用 GPIO 意味着断开我所做的调试引脚(我认为是这样)。

我使用 SDK 中的 MCUBoot 十六进制文件、并使用示例工程中的 persistent。

此致  

Vaibhav

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

    您好!

    MCUboot 十六进制文件默认启用 GPIO led 调试、这会导致红色 LED 在出现故障时闪烁、绿色 LED 在成功时闪烁。 此闪烁最多需要 3 秒 MCUboot 时间、可以通过自行构建 MCUboot 工程并删除闪烁代码来禁用。

    MCUboot 工程位于的 SDK 中{SDK_INSTALL_PATH}\examples\nortos\LP_EM_CC2340R53\mcuboot您可以通过删除 blinkLed(GREEN_LED, 3, 500); mcuboot_app.c 文件第 143 行的指令来删除闪烁代码。

    默认情况下、MCUboot 工程配置为片上 OAD 升级方法 (XIP)。 如果将来希望使用另一种方法(如片外或双映像)、您可以按照 关于 MCUboot 的用户指南关于 MCUboot 的 SLA 来更改该方法、以了解 MCUboot 配置的正确地址、并在 MCUboot 工程 SysConfig 文件中设置这些地址。 如果您需要帮助进行设置、请随时回复此主题。

    此致、
    Maxence

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

    您好、Maxence、

    感谢您的支持、大家可能知道 MCUBoot 将在每次复位或每次启动时验证映像、这在我看来是不需要的、因为它考虑了主要的启动开销时间。 是否有任何解决方法? MCUBoot 应仅验证一次、并且从下一次复位或启动开始不应验证。

    谢谢

    Vaibhav

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

    您好、

    TI SDK 中的 MCUboot 工程基于 开源 MCUboot 工程。 该工程不支持仅验证映像一次、因为这违反了 MCUboot 的安全模型。 您可以完全禁用映像验证、但这将使任何人都能够通过 OAD 上传固件映像、从而使您的器件不安全。

    此致、
    Maxence

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

    您好、

    我尝试了使用此修改的 OAD(注释 blinkLed(GREEN_LED, 3, 500);)。 我面临的问题是、虽然我能够 OAD 新映像、但只有 persistent 加载了。 请告诉我可能出了什么问题。

    此致

    Vaibhav  

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

    您好、

    我不确定我是否理解您的问题。 刷新后是否能够引导至固件? 您可以通过 OAD 发送新映像吗? 它是否会在 OAD 完成后引导至新映像?

    此致、
    Maxence

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

    我可以通过 OAD 发送新映像、但每次引导至持久映像。  

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

    可能是您将持久应用程序和固件刷写到了错误的地址。 您能否在刷写前发送 uniflash 的屏幕截图、是否可以尝试交换用于持久应用和固件的地址?

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

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

    您好、在屏幕截图中、您没有刷写固件。 您的 uniflash 应该看起来像这样(有关 MCUboot 的 SLA 屏幕截图)

    您应确保 MCUboot 二进制文件是第一个元素、因为它应该在地址 0x0 处刷写。

    我强烈建议通读此 SLA、并在新工作区中遵循片上示例、熟悉 MCUboot。

    此致、
    Maxence

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

    你(们)好  

    我甚至尝试了这种方式,但它仍然只是加载到持久  

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

    您好、

    您能给我展示用于 MCUboot 的 SysConfig 内容吗? 它看起来像这样吗?

    您是否也可以尝试与上一个屏幕截图完全相同的设置、但使用 MCUboot 片上的 hexfile 代替您自己构建的 hexfile、告诉我它是否起作用、以便了解问题是否来自 MCUboot 二进制文件?

    此致、
    Maxence

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

    您好、

    我在 SysConfig 中看不到该选项

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

    您好、

    是否有任何更新?

    此致

    Vaibhav

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

    您好!

    很抱歉、我完全没收到您的回复。
    让我惊讶的是、您没有 MCUboot 选项。 您的 SDK 或 SysConfig 版本可能比我的版本旧。 您可以转到工程的属性、然后转到 常规>产品 、然后告诉我的版本 SDK 中找到 以及使用的版本 其中概述了 SysConfig 您使用的是什么?

    此致、
    Maxence

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

    你(们)好

    来吧!

    此致

    Vaibhav

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

    您好!

    您的 SDK 和 SysConfig 版本已使用 1 年、我怀疑最近添加了 SysConfig 中的 MCUboot 设置。 我要尝试更新 SDK、方法是在此处下载它的 链接、然后创建一个新的工作区、从新 SDK 导入 MCUboot 工程、删除 LED 闪烁指令、然后查看它是否正常工作。

    此致、
    Maxence

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

    你(们)好

    我已更新至 8.40.02。 并注释 LED 延迟。 它仍在加载到持久应用程序

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

    您好!

    您是否也可以尝试与上一个屏幕截图完全相同的设置、但使用 MCUboot 片上的 hexfile 代替您自己构建的 hexfile、告诉我它是否起作用、以便了解问题是否来自 MCUboot 二进制文件?

    您可能引导到持久应用程序的原因之一是,持久应用程序版本号高于应用程序的编号。 你能把你的图像发送给我这个线程,这样我就可以看看标题值,看看我是否可以解决我这边的问题?

    此致、
    Maxence

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

    您好!

    是的、它处理 MCUboot 片上的 hexfile 正常工作。 我无法在公共论坛上分享图像。 您能告诉我如何检查我将检查和确认的映像版本吗

    此致

    Vaibhav

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

    您好!

    对固件签名时、版本号位于 MCUboot 添加的接头中。 如果您查看 MCUboot 文档中的 MCUboot 映像头结构、它应该是十六进制文件的第 6 个和第 7 个字、也就是十六进制文件的地址 0xA0。 xxd file.hex | head -n 20如果您在 Linux 或 WSL 上安装了 xxd、则可以使用来检查此值、或者您可以使用所需的任何十六进制编辑器(Windows 上的 HxD 很旧,但很可靠)

    另一种可能是您的固件映像未正确签名、这会导致固件映像验证失败。 可能有许多原因,你是否更改了用于签署固件的私钥?

    您能告诉我固件的编译后步骤吗? 您可以通过在 CCS 中右键点击工程、然后转到 Properties、Build 并最后创建步骤来找到它们。 这是它会看起来像:

    至于发送您的固件,您可以在此论坛上向我发送朋友请求,并通过私人消息向我发送文件。 但请继续在这里讨论这个问题、而不是在私人消息中讨论、因为您的问题可能会帮助其他人Smile

    此致、
    Maxence

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

    您好、Maxence、

    下面我附加了 persistent.bin 和 app.bin 的 snap。 如果我在地址 0xA0 处理解正确、我们在两个文件上都有 0xFF。

    下面是编译后处理步骤的屏幕截图

    此致

    Vaibhav  

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

    您好、抱歉我错了、正确的地址是映像版本 0x14。 持久应用程序的映像版本为 0.1.0、固件映像版本为 1.0、因此这不是问题所在。

    您发送的第二个屏幕截图是 MCUboot 工程的构建步骤、但我需要更新固件的编译后步骤Sweat smile

    我真的建议您以私人消息的形式向我发送您的固件、以便我可以自行调试问题。

    此致、
    Maxence

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

    您好、Maxence、

    我认为应用映像不存在问题、因为它使用的是 TI 提供的 MCUBoot 十六进制文件。  

    此致

    Vaibhav

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

    是否可以尝试在不使用永久映像的情况下刷新固件? 您可以将加载地址设置为 0x6000。 它是否引导至您的映像?

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

    您好、

    我尝试仅加载 MCUBoot 和应用程序文件。 似乎无法启动映像。

    此致

    Vaibhav

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

    您好、

    您是否看到红色 LED 快速闪烁 3 次? 如果是、则表示 MCUboot 拒绝了映像。 您能否将您的固件以私人消息形式发送给我、以便我可以在我这边进行调试?

    此致、
    Maxence

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

    您好、  

    我没有看到红色 LED 闪烁、但它持续亮起。 请告诉我如何秘密共享应用程序代码?

    此致

    Vaibhav

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

    您好、

    您可以在 E2E 论坛上添加我为朋友、然后发送私人消息。

    此致、
    Maxence

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

    您好、Maxence、

    是否有任何更新?

    此致

    Vaibhav

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

    您好、

    我还在研究它

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

    您好!

    我发现 MCUboot 解决方案无法启动到您的固件问题。 默认情况下、映像以 0x32000 作为其基地址的方式链接。 但是、在 MCUboot 中、将辅助映像地址指定为 0x43000 而不是 0x32000。 虽然 MCUboot 在此映像中引导时不会出现问题、但固件本身将无法正常工作、因为放置不正确。

    在您的案例中、解决方案是将 MCUboot SysConfig 设置更改为这些设置、并使用 UniFlash 进行闪存、其偏移如下:

    使用这些设置、我能够引导到您的映像中。

    此致、
    Maxence

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

    您好、Maxence、

    感谢您的解决方案。 现在正在加载应用程序。 但现在在执行 OAD 时遇到问题、在执行 OAD 时、链路在配对之前会被终止。 这是重复的。 我使用的是 SDK 8.40.02。

    此致

    Vaibhav

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

    您好、

    是否有任何更新? 请

    此致

    Vaibhav

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

    您好、

    很抱歉、我完全没收到您的消息。 执行 OAD 时、您的链接应该会终止、因为该应用必须重置并切换到持久应用、但它应该在开始广播时快速重新连接、因为中央器件会记住配对数据并初始化 OAD。 执行 OAD 时、您可以从 BTool 发送完整的日志吗? 您是否尝试过以另一种方式执行 OAD、例如使用 simplelink 应用程序?

    此致、
    Maxence

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

    您好、Maxence、

    确切地说、它应该会复位并切换和 快速重新连接  但它似乎不是,我 得到错误“bleNoResources “.. 我使用了 SDK 中给出的示例代码: 8.40.02. 我向您发送了所有示例文件以及 BTool 日志的私人消息。

    我将附加 2 个日志文件    1. OAD_FAIL_3.log  即故障日志

    2. OAD_POST_FAIL.log  这是我重试的时候。

    我已经使用过

    1.example 中的“host_test_app.hex"(“(预(预编译)。

    2.示例中的“mcuboot_onchip_LP_EM_CC2340R5_nortos_ticlang.hex"(“(预(预编译)

    3. OAD_ON_CHIP 和持久示例代码项目

    此致

    Vaibhav

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

    您好!

     仅 当主机应用超过其最大活动连接数时、gapInit_connect 函数才返回 bleNoResources。 您是否记得在某处更改此值? 您是否已在 BTool 中连接到多个设备? 如果是、您能否仅使用您尝试更新的器件尝试继续 OAD。

    如果您使用主机测试、mcuboot onchip、oad_on_chip 和 persistent 示例的默认未更改文件、应该不会有任何问题、因为这是预期的默认设置。 您可以尝试从 此处开始关注或重新关注有关 MCUboot 的 SLA、也许您在第一次尝试时错过了一个步骤。

    此致、
    Maxence