119
个编辑
更改
→bootloader烧写
[[文件:DFUTag.jpg|居中|缩略图|nRF Connect 扫描截图]]
=== 生成DFU .zip包 ===
要想完成DFU升级设备程序。DFU.zip程序包是必不可少的。DFU 主机是通过.zip包将新程序发送给DFU 设备。所以.zip包要包含我们想要升级的hex文件,初始化数据和包的签名。
接下来的教程,我们只做application部分的升级。
* 准备一个应用程序
在SDK中选择一个例程编译并生成相应的hex文件。为了简单起见,选择一个led_blinky例子,路径examples/ble_peripheral/ble_app_blinky。将生成的hex文件拷到一个开发者创建的目录下,并改名ble_app_blinky.hex(主要是为后面命令输入简单点)。
* 生成.zip文件
将《生成密钥对》章节,生成的私钥拷到指定目录下(最好与ble_app_blinky.hex在同个目录下)。利用nrfutil打包生成.zip文件。<syntaxhighlight lang="python">
nrfutil pkg generate --hw-version 52 --application-version 1 --application ble_app_blinky.hex --sd-req 0xaf --key-file private.pem app_dfu_package.zip
</syntaxhighlight>解释部分参数:
* --hw-version
默认情况下,是要与你的芯片匹配。如果开发者使用的是nRF51 芯片,这里就要填写“51”;如果使用的是nRF52芯片,这里就要填写“52”。但如果想要填写自己的硬件版本号,你可以在bootloader中程序中,使用#define NRF_DFU_HW_VERSION your_hw_number 定义自己的号。
* --application-version
默认情况下,应用程序版本号是从0开始的。为了能顺利更新应用程序,应用程序的版本号必须大于等于bootloader中存在数据。因为bootloader是第一次使用,bootloader里存的版本号是0,我们在这里将application-version 写成1。
* --sd-req
这个参数是标示SofteDevice 代号(code number)。在写这个文档时,我们使用的SofteDevice是S132 V6.1.0,它的代号是0xAF。开发者可以通过'''nrfutil pkg generate --help'''指令查询SoftDevice的代号。如果仍没有列出代号,可以通过nRFgo Studio查看,只要用评估板烧写相应的SoftDevice。
* --applicatioin
告诉nrfutil,将要升级的应用程序。
==== 测试DFU ====
现在,已经准备好了DFU .zip文件,bootloader也已经在NRF52832DK评估板上运行。接下只要将.zip文件通过DFU主机发送给设备就可以了,便完成application空中升级。
* 拷贝上述生成的app_dfu_package.zip
一般我们会使用手机作为DFU主机(因为手机方便)。并配合nRF Connect手机应用
* 使用nRF Connect完成DFU
[[分类:NRF52832DK]]
[[分类:实验手册]]