实现NRF52832蓝牙DFU无线升级

需要使用到的工具

  1. nrfutil(生成私有秘钥)
  2. make工具(Windows下实现Makefile,使用MinGW,GNU Make或Xcode)
  3. GCC编译器工具链(编译micro-ecc源码)
  4. micro-ecc源码(nordic的DFU采用了micro-ecc实现ECDSA算法,需要用到micro-ecc源码)
  5. python2.7(用来安装nrfutil)
  6. 官方SDK(最低SDK v12,此例子演示是使用SDK15.0)

选用相关工程

  1. 使用SDK中的 nRF5_SDK_15.0.0_a53641a\examples\dfu\secure_bootloader\pca10040_ble工程生成BootLoader固件。
    第一次编译BootLoader工程会出现两种错误:
    1.没有有效的签名
    2.缺少uECC.h文件
    第一次编译
    消除这两个错误需要用到上面讲到的工具
  2. 选择任意一个APP程序作为升级的APP固件,本次采用nRF5_SDK_15.0.0_a53641a\examples\ble_peripheral\ble_app_buttonless_dfu\pca10040\s132\arm5_no_packs作为app应用

工具安装

  • 安装make工具,解压GNU make工具包gnu-mcu-eclipse-windows-build-tools-2.12-20190422-1053-win64.zip到电脑**C:\Program Files (x86)**目录中

解压GNU MAKE工具包

  • C:\Program Files (x86)\GNU MCU Eclipse\Build Tools\2.12-20190422-1053\bin添加到系统环境变量

添加到系统环境变量

  • 打开命令行查询版本号,确保工具可以使用

查询版本号,确保make工具可以使用

  • 解压文件micro-ecc-master.zip到SDK文件夹中的nRF5_SDK_15.0.0_a53641a\external\micro-ecc文件夹中并修改文件夹名称为micro-ecc在这里插入图片描述
  • 安装python2.7,一直选择默认下一步即可
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 将安装的目录添加到系统环境变量中

在这里插入图片描述

  • 安装GCC编译工具链,默认选择一直下一步即可
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 打开命令行查询版本号,确保工具可以使用

在这里插入图片描述

  • 使用python安装nrfutil工具(该工具是为了生成秘钥和固件打包),打开命令行执行python -m pip install nrfutil命令安装nrfutil
    (本人试过多台电脑,有的可以顺利安装,也有出现过以下错误的,无法正常安装,只要把下载源更改成国内的就就可以了,参考下面的操作)
    在这里插入图片描述
  • 打开任意文件夹路径输入%AppData%
    在这里插入图片描述
    在这里插入图片描述
  • 在该文件下新建pip文件夹,文件夹内新建一个pip.ini文件,输入下面内容更换成国内源
[global]

index-url = https://pypi.tuna.tsinghua.edu.cn/simple/

[install]

trusted-host = https://pypi.tuna.tsinghua.edu.cn

在这里插入图片描述

  • 重新打开命令行输入python -m pip install nrfutil命令安装nrfutil
    在这里插入图片描述
    在这里插入图片描述
  • 安装完成后输入nrfutil指令出现上图提示指令格式说明安装nrfutil成功

BootLoader固件生成及DFU升级操作

  • 建立一个文件夹key,在该文件夹中打开命令行执行nrfutil keys generate private.key命令,执行后该文件夹将会多出一个秘钥文件
    在这里插入图片描述
  • 通过这个秘钥文件生成公钥,继续输入nrfutil keys display --key pk --format code private.key --out_file dfu_public_key.c命令,执行后文件夹将会多出一个dfu_public_key.c公钥源文件,将生成的dfu_public_key.c文件替换之前nRF5_SDK_15.0.0_a53641a\examples\dfu文件夹下的dfu_public_key.c文件,这样就可以将之前的缺少秘钥的错误消除掉了
    在这里插入图片描述
  • 编译uECC库,进入nRF5_SDK_15.0.0_a53641a\external\micro-ecc文件夹中双击build_all.bat编译生成各中环境需要使用的库文件
    在这里插入图片描述
  • 完成后重新编译以下BootLoader工程将无错误和警告,生成BootLoader固件
    在这里插入图片描述
  • 编译例程中的nRF5_SDK_15.0.0_a53641a\examples\ble_peripheral\ble_app_buttonless_dfu\pca10040\s132\arm5_no_packs工程,生成app应用(这个可以使用任意app程序,此次演示使用了该例程)
  • 将编译好的app固件拷贝到key文件夹中,在该文件夹中打开命令行输入nrfutil pkg generate --hw-version 52 --application-version 1 --application nrf52832_xxaa.hex --sd-req 0xa8 --key-file private.key app_dfu_package.zip 生成升级包。
    注意:打包用到的秘钥文件和BootLoader工程用到的秘钥文件必须为同一个,否则秘钥不一样会升级失败在这里插入图片描述
  • 使用nrf studio将协议栈和刚才生成的BootLoader固件下载到目标设备中(如果下载出现失败,先将正片擦除一遍)
  • 在这里插入图片描述
    在这里插入图片描述
  • 下载成功后此时设备已经进入DFU模式可以进行升级了。将刚才生成的升级包app_dfu_package.zip发生到手机中。打开nRF Connect app,进行搜索蓝牙,DfuTarg蓝牙是刚才烧录的蓝牙设备,点击进行连接
  • 在这里插入图片描述
  • 连接成功后点击右上角的DFU按钮选择升级的文件,点击OK 确认进行升级
  • 在这里插入图片描述
  • 此时设备正在升级中

在这里插入图片描述

  • 升级完成后则可以看到应用程序(Nordic_Buttonless)以及开始运行了
  • 在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值