Nordic DFU 使用教程

Nordic DFU 操作步骤

需要安装各种工具,详情见自查资料。

大概流程为:重启设备进入Bootloader,然后连接通过蓝牙连接Bootloader进行DFU,发送升级包文件。

1. 下载编译micro-ecc

github 上下载 micro-ecc 源码,然后通过 msysgcc进行编译。

编译前修改 components\toolchain\gcc\Makefile.windows 中工具的路径和版本号。注意路径最后面需要加 /

得到 external\micro-ecc\nrf52nf_keil\armgcc\micro_ecc_lib_nrf52.lib库文件。

2. 生成 private keypublic key

nrfutil keys generate D:\DFU\private.pem
nrfutil keys display --key pk --format code D:\DFU\private.pem --out_file D:\DFU\dfu_public_key.c

替换生成的 dfu_public_key.cexample\dfu\ 路径下。

3. 编译烧写 Bootloader

编译工程 example\dfu\secure_bootloader\pca10040_ble\arm5_no_packs 。然后烧录Softdevice和App。将扫描到 DfuTarg 设备。

4. 升级文件打包

需要查表确认 --sd-req 参数,保证 FWID 和 协议栈版本对应,否则升级过程中,将Disconnecting。拷贝编译好的升级包文件 nrf52810_xxaa.hex,到 D:\DFU\ 目录。

nrfutil pkg generate --hw-version 52 --application-version 1 --application nrf52810_xxaa.hex --sd-req 0x0103 --key-file private.pem dfufile.zip

此时,可以连接 DfuTarg 设备进行升级,可以升级成功。但是由于我们的App中未添加 DFU 服务,将不能再次进行升级。DFU服务是用来将设备重启至Bootloader的。

5. 添加DFU服务

在自己的工程中添加 DFU 服务。

  • 添加对应文件

    image-20210208145154231.
  • 添加路径

    包括但不限于以下路径。具体参照自查资料内容,以及编译时的报错提示自行添加路径。

    image-20210208145121002.
  • 添加头文件

    //for dfu
    #include "nrf_power.h"
    #include "nrf_bootloader_info.h"
    #include "ble_dfu.h"
    #include "nrf_dfu_ble_svci_bond_sharing.h"
    #include "nrf_svci_async_function.h"
    #include "nrf_svci_async_handler.h"
    // for dfu end
    
  • 添加全局宏定义

    BL_SETTINGS_ACCESS_ONLY NRF_DFU_SVCI_ENABLED NRF_DFU_TRANSPORT_BLE=1
    
  • 添加代码

    代码参考 ble_app_buttonless_dfu 工程代码

  • 升级文件生成脚本

    :: 拷贝App
    
    del D:\DFU\nrf52810_xxaa.hex
    del D:\DFU\dfufile*.zip
    
    copy ..\arm5_no_packs\_build\nrf52810_xxaa.hex /d D:\DFU\
    
    cd /d D:\DFU\
    
    :: 制作升级包
    nrfutil pkg generate --hw-version 52 --application-version 1 --application nrf52810_xxaa.hex --sd-req 0x0103 --key-file private.pem dfufile_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%.zip
    
    :: pause
    
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值