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:SDK7.2 OAD 片上使用 SimpleLinkConnect 失败。

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

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1277821/cc2340r5-sdk7-2-oad-on-chip-fails-with-simplelinkconnect

器件型号:CC2340R5
主题中讨论的其他器件:UNIFLASH

你好。

我在以下 SDK7.20示例配置中使用 Uniflash 尝试使用 OAD:

-basic_ble_oad_onchip_LP_EM_CC2340R5_freertos_ticlang、

-basic_persistent_LP_EM_CC2340R5_ freertos_ticlang、

-mcuboot_LP_EM_CC2340R5_nortos_ticlang、

flash_map_backend.h 的地址更改如下。

UniFlash

因此、当我启动 OAD onchip 应用程序、然后使用 SimpleLinkConnect 开始更新时、我会收到一条错误消息、显示"OAD 复位服务失败"、更新失败。

然后、当我重置它时、它会连接到持久应用程序、当我启动更新时、它会成功。

我不明白第一次更新失败的原因。

此外、此配置是否有任何预期的配置设置?

**环境

Android 版本11
SimpleLink Connect 1.2.2版

此致、

真崎市

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

    您好、Masaki

    感谢您联系我们。

    请先帮我解决几个问题:

    1. 查找公共地址值。 为此、请连接您的电路板、转到 Uniflash -存储器并搜索 存储在地址为0x4E000058的特殊寄存器中的6字节长值。 请告诉我它的价值是多少。                                                                                
    2. 您能否尝试将 persistent 和 based_ble_oad 项目中的默认地址模式更改为具有公共 ID 的 RPA、然后重试?

    此致、

    大卫。

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

    尊敬的 David:

    感谢您的答复。 我只是在度假、所以我的回复被延迟了。

    1.我在问题发生时查看了公共地址。 则为0xF1AED70C 0x0000A434

    2.当我在带有公共 ID 的 RPA 环境中试过10次后,连续10次出现"OAD 重置服务失败"。
       此外,当我在公共广播环境中尝试10次时,出现了6次"OAD 重置服务失败"。

    在使用带有公共 ID 环境的 RPA 时、似乎总是失败的。

    此致、

    真崎市

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

    您好、Masaki、

    您能在以下方面帮助我吗?

    1. 如果可能、请与我共享十六进制和 bin 文件、以尝试重现问题。
    2. 请在不修改 flash_map_backend.h 的情况下重试、并告诉我您是否遇到了同样的问题。

    此致、

    大卫。

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

    尊敬的 David:

    感谢您的答复。

    1. 没关系。 分享时、我应该将二进制文件和十六进制文件粘贴在此论坛上吗?

    2.如果我不更改 FLASH_MAP_backend-h.h、则可在 basic_persistent_LP_EM_CC2340R5_freertos_ticlang 中启动 persistent_app、

      但我不知道如何在 basic_ble_oad_onchip_LP_EM_CC2340R5_freertos_ticlang 中启动基本 BLE 项目。

      如果您知道、请告诉我如何在不更改 FLASH_MAP_backend.h 的情况下启动 Onchip 的基本 BLE 项目。

    此致、

    真崎市

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

    您好、Masaki、

    因此、在不链接 flash_map_backend.h 的情况下、它以 basic_ble 引导。

    在构建相应的工程后、我正在使用 SDK 中的以下文件。

    e2e.ti.com/.../oad.zip

    您能否尝试在使用 Uniflash 再次刷写文件之前擦除闪存?

    此致、

    大卫。

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

    尊敬的 David:

    我通过 oad.zip 确认了此问题

    结果如下。

    Android 11 + SimpleLinkConnect 1.2.2:

    使用 Basic_ble_project 成功了10次中的5次、使用持久应用程序成功了5次


    此外、我手头有 Android 8、因此已经签出了。

    Android 8 + SimpleLinkConnect 1.2.2:

    使用 Basic_ble_project 成功了10次中的5次、使用持久应用程序成功了5次

    我想重现 oad.zip 环境。 在 mcuboot_LP_EM_CC2340R5_nortos_ticlang.hex 中将出现差异。

    这个差异看起来位于 flash_map_backed.h 中、

    oad.zip 的预期值是主地址0x00032000 0x4A000、辅助地址0x00006000、0x2C000

    但无法创建相同的文件。 但是、无论哪种方式、Basic_ble_project 中都发生了错误。  

    附加带有已修改的 FLASH_MAP_OAD.h 后端文件。 请确认、

    e2e.ti.com/.../oad-with-changed-flash_5F00_map_5F00_backend.zip

    此致、

    真崎市

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

    您好、Masaki、

    我可以使用您与我共享的文件成功实施 OAD。

    在本例中、我没有修改 FLASH_MAP_backend-h。

    您在 Basic_ble_project 中遇到了哪些错误? 出现"OAD Reset Service Failed"(OAD 重置服务失败)消息? 这只在第一次 OAD 发生时还是在多次尝试后发生?

    感谢您提供有关不同 Android 版本的信息、我将对其进行查看。

    Br、

    大卫。

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

    尊敬的 David:

    您是否可以共享 FLASH_MAP_backend-hate.h? 我认为这些值彼此不同、即使我们没有更改。

    这是我的 flash_map_backend-h。

    e2e.ti.com/.../flash_5F00_map_5F00_backend.zip

    可以。 只要 Basic_ble_project 失败、就会显示"OAD Reset Service Failed"消息。
    此外、这仅发生在第一个 OAD 上、不会发生在后续 OAD (当时是 Persistent_App)上、并且更新会成功。

    此致、

    真崎市

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

    您好、Masaki、

    这是我正在使用的 flash_map_backend.h。 它来自 \examples\nortos\LP_EM_CC2340R5\mcuboot。

    也可以是 Android 版本。 您是否有一个具有较新版本的版本(可能为12个)?

    我已经在 IOS 和 Android 13上尝试过。

    e2e.ti.com/.../flash_5F00_map_5F00_backend.h

    此致、

    大卫。

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

    艾希、大卫

    很抱歉耽误了回复。

    感谢您提供 FLASH_MAP_backend-h。

    在我的 SDK 环境中、没有 flash_map_backend.h、 \examples\nortos\LP_EM_CC2340R5\mcuboot。

    我做了 grep 但是 flash_map_backend.h 只在中找到 \source\third_party\mcuboot\ti\source\mcuboot_app。

    在 David 的环境中、是否有两个或更多 flash_map_backend.h 文件直接位于 \?

    我正在检查客户是否可以为我提供 Android 12。 因此结果可能会稍晚出现。

    此外,iPhone8 Plus/iOS 16也出现了这个问题。

    我认为我的操作方法有问题。 有区别吗?

    1.  构建并创建十六进制和二进制文件

    basic_ble_oad_onchip_LP_EM_CC2340R5_freertos_ticlang、

    basic_persistent_LP_EM_CC2340R5_ freertos_ticlang、

    mcuboot_LP_EM_CC2340R5_nortos_ticlang、

    2.将 basic_ble_oad_onchip_LP_EM_CC2340R5_freertos_ticlang_v2.bin 保存到 Firebase 存储。

    3. 将 Firebase URL 设置为 SimpleLink 的固件更新 URL ( 我也尝试了 Git 示例二进制文件)。

    4. 使用 UniFlash 擦除 CC2340R5。

    5. 使用 Uniflash 刷写十六进制文件和二进制文件。

    6. 通过 SimpleLink Connect 与基本 BLE 项目配对。

    7. 选择在 Firebase 中注册的容器并启动更新。

    8. 成功或"OAD 重置服务失败"

    9. 从步骤4重新开始。

    此致、

    真崎市

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

    您好、Masaki、

    1. 至于 flash_map_backend-h.h、您可以加载项目( \examples\nortos\LP_EM_CC2340R5\mcuboot\mcuboot\ticlang)入 CCS。 我想这就是你几天前提到的问题。 是否可以在不进行修改的情况下重试、是否仍直接引导至永久性应用程序?

    2. 您是否尝试过使用应用程序中的默认 basic_ble_oad_onchip_LP_EM_CC2340R5_freertos_ticlang_v2.bin 选项? 您会得到相同的结果吗?                                                                                                                                    
    3. 最好尝试使用较新的 Android 版本。

    此致、

    大卫。

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

    尊敬的 David:

    感谢您的支持。  

    1.我对此有错误的理解。

    我还提取了 flash_map_backend.h \examples\nortos\LP_EM_CC2340R5\mcuboot。

    此外、我卸载了 SDK 并清除了 CCS 工作区一次、但持久性应用程序仍会首先启动。

    2.是的。 它成功一次、但如果我擦除并重试、它将重新出现。

    对于给您带来的不便、我深表歉意、但是否可以使用以下步骤来收集转储文件?

    由于持久应用程序启动、我认为至少在该区域会有差异、可能还有其他原因导致出现"OAD 重置服务失败"。

    e2e.ti.com/.../dump.txt

    ① 使用 Uniflash 和闪存擦除以下内容

    mcuboot_LP_EM_CC2340R5_nortos_ticlang.hex

    basic_persistent_LP_EM_CC2340R5_freertos_ticlang.bin

    basic_ble_oad_onchip_LP_EM_CC2340R5_freertos_ticlang_v1.bin

    ② 激活 mcuboot_LP_EM_CC2340R5_nortos_ticlang 工程、并按从 TargetConfigurations 启动所选配置。

    ③ 运行中按连接目标

    ④ 按 MemoryBrowser 查看

    ⑤ 右键单击"MemoryBrowser"并按"Save Memory"

    ⑥ 将文件类型设置为 TI-TXT 文件并继续到下一步

    ⑦ 选择 Add Range (添加范围)并将 Start Address (起始地址)设置为0x00000000、将 Length (长度)设置为0x0007FFFF。

    ⑧ 完成并生成转储文件

    此致、

    真崎市

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

    您好、Masaki、

    感谢您提供详细信息。 为以防万一、您还可以使用 Uniflash 更快地从相同的 UI 导出存储器转储。

    至于结果、除了0xFFFF 前最后5个内存行之外、我具有几乎一样的值。

    只是为了确保我们再次走上正确的道路:

    1. 问题仍然存在:使用 SimpleLinkConnect 的第一个 OAD 显示错误、显示"OAD 重置服务失败"且更新失败。 然后、应用程序引导到持久应用程序、接下来的更新是否成功?
    2. 在上一个主题中、您提到:"是的。 它一次成功、但如果我擦除并重试、它将重新出现。" 您的意思是、第一个 OAD 现在 可以正常工作(没有 OAD 重置服务失败)、但在您断开并重新连接后、持久应用程序将立即显示?

    e2e.ti.com/.../exported_2D00_image.txt

    Br、

    大卫。

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

    尊敬的 David:

    我从未尝试过 Uniflash 的转储。 感谢您提供信息。

    是的、我也比较了转储、我觉得没有什么特别的问题。

    此外,其他成员建立了孵化和收到十六进制,但十六进制是相同的一个构建在我的环境中

    此外,我尝试更新 iPhone 13迷你与 IOS 16.6.1和像素5与 Android 12 ,但问题是重现的。

    _

    1. 是。 出现"OAD 重置服务失败"错误后、持久应用程序将启动、下一次更新 将成功。

    2. 在第一次尝试更新成功后,在第二次尝试启动更新时,可能会出现"OAD 重置服务失败"。

    但是、情况并非总是如此。 有时我有连续的失败和连续的成功。

    -1. 首次尝试:更新成功

    -2. 擦除和第二次尝试:持久应用程序启动时出现"OAD 重置服务失败"错误。 持久应用程序的更新已成功完成。

    -3. 擦除和第三次尝试:更新成功

    -4. 擦除后第四次尝试:持久应用程序启动、显示"OAD 重置服务失败"错误。 持久应用程序的更新已成功完成。

    -5 重复1~4

    我有一个问题、David、您在使用什么 SDK? 我将使用 simplelink_lowpower_f3_sdk_7_20_00_29。

    此外、Git 的默认 URL 版本是7.10、与 David 相同、对吗?

    此致、

    真崎市

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

    您好、Masaki、

    感谢您提供的信息。

    我正在使用相同的 SDK simplelink_lowpower_f3_sdk_7_20_00_29和映像版本7.10.00.23_1.0

    当尝试使用 OAD_ONCHIP_v1版本进行更新时、是否也会发生这种情况?

    我认为下一步是通过调试代码来搜索导致"OAD 重置服务失败"的原因。

    为此、我建议进入调试模式并连接目标、 该线程 提供了有关如何执行该操作的详细信息。

    我也会在最后继续努力。

    如果您有任何其他建议来加快此过程、请告诉我。

    Br、

    大卫。

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

    你好,David

    可以。 OAD_ONCHIP_v1通常作为 v2时就会出现此问题。

    我懂了。 我会检查它。

    此致、

    真崎市

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

    您好、Masaki、

    明白了。 我正在努力为明天提供答案。  

    Br、

    大卫。

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

    你好,David

    很抱歉这么晚才回复。

    我一直在做其他的任务。 我现在来看一下。

    此致、

    真崎市

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

    尊敬的 David:

    我已在"Debug"中检查了问题。

    我发现了一些东西、所以我会告诉您。

    出现"OAD 重置服务失败"时、持久应用程序似乎位于系统 ROM 中。

    换句话说、我认为持久应用无法启动。

    ① ble_onchip 程序计数器(使用 Uniflash 刷写后)。  这将引导并在待机模式下睡眠。

    ②  ble_persistent 程序计数器(在与 SimpleLinkConnect 通信时运行更新时)。 这将引导并在待机模式下睡眠。

    ③ ble_persistent 程序计数器(当"OAD 复位服务失败"时)、 其外观在系统 ROM 中类似。

    此外,当我调试③和替换 PC , SP, SCB > VTOR 与持久应用程序的价值,它成为②.

    所以我认为错误 μ ③只有在重置后启动 persistent 应用时才会发生。

    我将对系统 ROM 进行更多研究。

    此致、

    真崎市

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

    您好、Masaki、

    感谢您提供详细信息并耐心调试。

    我的主要困难是我无法重现"OAD 重置服务失败"、因此我正在寻找可能导致它的东西。 但是、在几个 OAD 之后、我发现加载过程偶尔会卡住、但没有 OAD 复位。

    我认为此处的问题与 mcuboot 有关、这将解释持久应用无法启动的原因。 我将再次与我的团队分享并进一步审查。 我希望在本周就这方面有一个答案。

    此致、

    大卫。

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

    尊敬的 David:

    我明白了。 感谢您的持续支持。

    此外、发生错误时的 BOOTSTA 值为0xBA。 这似乎正在转换到串行 ROM 引导加载程序。

    此致、

    真崎市

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

    您好、Masaki、

    为了排除 SimpleLink 应用、您认为您可以尝试改用 BTool 吗?

    为此、您需要:

    1. 使用 host_test 项目刷写另一个 CC2340R5。
    2. 打开 BTOOl ( \tools\ble5stack\btool)
    3. 转到无线下载和加载 OAD 映像。                                                                                  

    谢谢

    Br、

    大卫。

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

    尊敬的 David:

    我从未尝试过 BTool。

    我会检查它。

    此致、

    真崎市

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

    尊敬的 David:

    无法使用 BTool 重现此问题。

    SimpleLinkConnect 的最新版本1.3.2已在上周发布、但当我查看该版本时、发现没有出现这个问题。

    "OAD 重置服务失败"是已解析的识别、

    ・SDK simplelink_lowpower_f3_sdk_7_20_00_29
    -basic_ble_oad_onchip_LP_EM_CC2340R5_freertos_ticlang
    -basic_persistent_LP_EM_CC2340R5_freertos_ticlang
    -mcuboot_LP_EM_CC2340R5_nortos_ticlang
    ・SimpleLinkConnect1.3.2 (在 IOS16上进行了测试)
    ・Uniflash 8.4.0.4458

    那么、对于之前的 FLASH_MAP_backend-h.h、您能不能解释为什么会因环境而异?

    即使在卸载并重新编译 SDK 之后、我也无法获得相同的地址。

    此致

    真崎市

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

    您好、Masaki、

    我在 David 不在办公室时处理此线程。

    无法使用 BTool 重现此问题。

    SimpleLinkConnect 的最新版本1.3.2已在上周发布、但当我查看该版本时、发现没有出现这个问题。

    [/报价]

    您是否正确理解使用 BTool 或 SimpleLinkConnect v1.3.2时 OAD 工作正常?  如果是、则似乎是移动应用程序中的问题。

    此致、

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

    你好,克莱门特

    可以。 BTool 和 SimpleLinkConnect、1.3.2中未发生问题。

    仍然有关于 FLASH_MAP_backend-h.h 的问题、但可以通过进行一些修改来启动、因为这会偏离目标文件的内容、

    我想把这个问题标记为已解决。

    谢谢你。 大卫和 克莱门特

    真崎市