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:内部开发的移动应用中的 FOTA OAD 流程

Guru**** 2535750 points
Other Parts Discussed in Thread: CC2340R5

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1545362/cc2340r5-fota-oad-flow-from-internal-developed-mobile-application

器件型号:CC2340R5


工具/软件:

我正在 Android 中开发移动应用程序、将启用从应用程序到 CC2340R5 模块的 FOTA。 为此、我要遵循网站 BLE-Stack OAD 配置文件—SimpleLinkTm 低功耗 F3 SDK BLE5-Stack 用户指南 9.11.00 文档中定义的所有步骤、  

发送映像标头后、响应作为 OAD_SUCCESS(“00")“)来提供。

在我请求的块大小的响应之后。 响应为 F0(240 字节)。

现在、如果我尝试将映像拆分为 240 个块、并通过添加 4 个字节的标头来进行发送、那么在第一个数据包之后、我会得到错误响应为[12 03 00 00 00](OAD_BUFFER_OFL)

如果我将块拆分为 236 字节的块、那么它将接受并发送 797 个数据包中的 793 个数据包。 在 794 个数据包上、响应为 [12 03 00 00 00](OAD_BUFFER_OFL)

我还附上了屏幕截图供您参考。

我的问题是为什么会这样呢? 图像文件的最后一个是否有任何额外的字节、我们必须单独处理?   

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

    您好!

    您能否向我们提供有关您的情况的更多详细信息?
    据我所知、您正在使用支持蓝牙的 PC 上的桌面 Java 软件通过 OAD 更新 CC2340R5 的固件、对吗?

    下面是您可以同时尝试的一些调试步骤:
    -当您尝试使用 Java 应用程序从我们的 SDK 更新 basic_ble OAD 示例时,您是否看到了相同的行为? 以下 指南说明了如何设置此 OAD 示例 以尝试该调试步骤。
    -除了此示例之外,您是否知道您是否能够通过手机使用我们的 SimpleLink Connect 应用程序更新您的固件?

    此致、
    Maxence

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

    您好!

    感谢您的答复、

    实际上、我目前正在开发一个向连接的 CC2340R5 模块执行 OAD(无线下载)的 Android 应用。 我想概述我所遵循的流程以及上传图片时遇到的问题:

    1. 我首先从模块中请求块大小。

    2. 该模块以“F0"(240 字节)进行响应。

    3. 然后发送图像标头的前 64 个字节。

    4. 模块以“响应00"、指示 OAD_SUCCESS

    5. 我将映像文件拆分为数据包、每个数据包包含 236 字节 图像数据的总和(即,每个数据包总共 240 字节、包括 4 字节标头)。

    6. 得到所选.bin 文件的响应 有 797 个数据包 增加。

    我继续使用适当的 4 字节标头发送每个数据包。 该模块正确地确认每个数据包并提供下一个预期的块编号作为响应。

    但是,当我发送 数据包编号 794 、我收到  OAD_BUFFER_OFL(缓冲区溢出)响应。 即使数据包大小和序列看起来正确、这也会持续发生。

    -此外,我已经尝试了 SimpleLink Connect 应用程序,我发现它的工作非常好。

    您能否告知可能导致此问题的最大图像块数或内部缓冲区大小存在任何限制或配置参数?

    任何有关如何解决或进一步调试此问题的指导都会非常有用。

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

    您好!

    我认为有两种方法可以解决您的问题:

    首先、您可以查看 SimpleLink Connect 应用程序的源代码、因为该应用程序是开源的。 在您的情况下、最感兴趣的文件是 fwupdate 文件夹中的文件、因为它们包含 OAD 的代码。

    接下来、您可以通过查看发送用于执行 OAD 的原始数据包来了解 OAD 是如何执行的。 一种方法是使用 BLE 监听器、但我推荐的方法是为此使用 BTool。 BTool 是一款可以执行 OAD 的软件、该软件将显示执行 OAD 的器件发送和接收的每个数据包。 我们 有关 OAD 的 SimpleLink Academy 培训 介绍了如何使用 BTool 在 CC2340R5 上执行 OAD、您将能够看到控制台中发送的所有数据包。

    此致、
    Maxence