Circuit Playground Bluefruit Arduino DFU OTA 文件准备

问题描述

我正在使用 Arduino 对 Circuit Playground Bluefruit 设备进行编程。我复制了一个示例,其中包括打开的 bledfu 对象。我可以使用手机上的 nRF52 Toolkit 应用程序连接到设备并查看 DFU 服务是否可用。

我的问题是如何将我的 Arduino 项目生成文件制作成 DFU 进程所需的 .zip 文件,以便我可以将新版本的 Arduino 固件刷入设备?

作为其中的一部分,我还需要知道输出文件的放置位置。命令行似乎将它们放在一个临时文件夹中,该文件夹在构建后被删除。有没有办法将该文件夹设置为静态文件夹并位于项目中的某个位置?

更新:我发现了一些东西。我能够向控制构建输出的 arduino.json 文件添加一个设置。它是一个称为输出的值,它采用一条路径。我将此添加到 json 中:

"output": "../Build"

这会将输出文件放在我的项目文件正上方的文件夹中。在那个文件夹中,我找到了一个 .zip 文件。我只能假设这与 DFU 需要的文件类型相同,因为当我打开 nRF Connect 应用程序并在我的设备上选择 DFU 时,它要求我打开一个 .zip 文件

我将这些文件复制到我的 iPhone 上,打开 nRF Connect,连接到我的 Circuit Playground Bluefruit 设备,能够打开 DFU(它告诉我它已实现)。

然后我在 nRF Connect 应用程序中继续执行 DFU 过程,但它失败了。设备上的所有 LED 都变为红色。如果我重新启动设备并将其连接到笔记本电脑上的 USB,我可以使用 Arduino 重新打开草图,因此引导加载程序似乎完好无损。

有人知道此时可能出现什么问题吗?

更新 2:我破解了 .zip 文件,它确实是一个标准的 nRF DFU 文件。 manifest.json 中有一些设置,看起来不对。有人能告诉我如何在 Arduino 环境中设置它们吗?

这是清单:

{
    "manifest": {
        "application": {
            "bin_file": "BTAccelerometer.ino.bin","dat_file": "BTAccelerometer.ino.dat","init_packet_data": {
                "application_version": 4294967295,"device_revision": 65535,"device_type": 82,"firmware_crc16": 36,"softdevice_req": [
                    182
                ]
            }
        },"dfu_version": 0.5
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)