nrf52832开发之DFU基本攻略

一、DFU必备工具
1.micro-ecc源码
nordic的DFU采用了micro-ecc实现ECDSA算法,需要用到micro-ecc源码
2.gcc-arm-none-eabi-6-2017-q2-update-win32
编译micro-ecc源码
3.Cygwin
Windows下实现Makefile,为后续编译micro_ecc_lib_nrf52.lib准备
4.nRF5x-Command line tools
主要需要用到mergehex和nrfjprog两个命令
5.python2.7
用来安装nrfutil
6.MDK-ARM 5.23
Keil MDK集成开发环境,编译Bootloader和应用程序
7.nRF Connect for Mobile_v4.11.0.apk
Nordic发布的手机端调试APP,可用来执行DFU

二、工具下载
百度云链接:https://pan.baidu.com/s/1ygd9giSs7InIgmVgk_lF8A

三、工具安装
1.micro-ecc源码
将micro-ecc源码拷贝至sdk源码路径:nRF5_SDK_15.2.0_9412b96\external\micro-ecc下即可
2.gcc-arm-none-eabi-6-2017-q2-update-win32
这个交叉编译软件直接双击根据提示安装即可,记住安装路径后面需要用到
3.Cygwin

双击软件,然后点击下一步,弹出以下界面

选择第一个,联网下载并安装组件,点击下一步

设置安装路径,点击下一步

设置下载的组件要保存的本地路径,点击下一步

选择网络连接方式,选第二个,点击下一步

添加国内镜像,这里添加了阿里云镜像http://mirrors.aliyun.com,点击下一步

这里我们切换Pending到Full,然后Search栏内输入make,如下

点击下一步完成make组件的安装,至此就是Cygwin的基本安装的流程。

4.nRF5x-Command line tools

这个软件双击根据提示点击安装即可

5.python2.7

python2.7的安装过程很简单,根据提示点击安装即可,主要有以下两点需要注意:

1)添加安装路径至系统的环境变量

C:\installPath\python2.7.14;C:\installPath\python2.7.14\Scripts这是我需要添加的路径

2)python的安装和环境变量的配置完成后,打开cmd窗口输入python -V出现如下提示即说明安装成功

最后我们需要键入pip install nrfutil安装nrfutil工具,安装完成后,键入nrfutil出现如下提示即说明nrfutil安装成功

6.MDK-ARM 5.23的安装请移步https://blog.csdn.net/qq_33575901/article/details/89643818

7.nRF Connect for Mobile_v4.11.0.apk安装至安卓手机即可

四、DFU相关工程编译和无线DFU操作

1.编译bootloader程序

以官方例程nRF5_SDK_15.2.0_9412b96\examples\dfu\secure_bootloader\pca10040_ble\arm5_no_packs为例:

初次编译这个例程会出现如下错误

提示缺少micro_ecc_lib_nrf52.lib文件,故而我们下载的Cygwin就派上用场了,分两步解决:

1)修改Makefile关于交叉编译软件的使用,我的修改如下

2)打开Cygwin终端cd到nRF5_SDK_15.2.0_9412b96/external/micro-ecc/nrf52hf_keil/armgcc目录执行make即可解决报错问题

接下来需要生成我们的公私密钥对,即bootloader程序用到的公钥和应用程序用到的私钥,执行以下命令:

nrfutil keys generate priv.pem //生成私钥
nrfutil keys display --key pk --format code priv.pem --out_file dfu_public_key.c //生成公钥

然后用dfu_public_key.c替换工程中如下文件,重新编译工程,下载协议栈和工程hex文件至nordic开发板

如下为手机端nRF Connect app扫描到的下载了bootloader程序的开发板

2.编译应用程序

以官方例程D:\bluetooth_dogChain\sdk\nRF5_SDK_15.2.0_9412b96\examples\ble_peripheral\ble_app_buttonless_dfu\pca10040\s132\arm5_no_packs为例

直接编译即可

3.开始DFU阶段

1)创建一个DFU目录

2)将编译bootloader生成的hex文件重命名为bootloader.hex,编译应用程序生成的hex文件重命名为app.hex,还有协议栈hex文件s132_nrf52_6.1.0_softdevice.hex(nRF5_SDK_15.2.0_9412b96\components\softdevice\s132\hex目录下),秘钥文件priv.pem放到此目录

3)执行以下命令打包需要通过DFU更新的应用程序

nrfutil pkg generate --hw-version 52 --application-version 1 --application app.hex --sd-req 0xAF --key-file priv.pem dfufile.zip

4)将dfufile.zip通过QQ或者微信发送至手机

5)手机打开nRF Connect app,连接名称为DfuTarg的开发板

6)如下截图,点击1处弹出菜单,然后使能CCCDs,最后点击3处DFU图标选择我们下载的dfufile.zip文件升级即可

截图一张升级进度图

升级至完成(整个过程大概20多秒左右),最后重新打开nrf Connect app可以看到开发板已经跑到应用程序里面了,如下截图

最后奉上在Cygwin下对nordic开发板基本的DFU操作命令封装脚本,有意者自取:https://pan.baidu.com/s/1Z95EbqnUHszbWXk4xZdCXA

至此,本文关于DFU基本攻略介绍完毕,万事开头难,不容易啊老铁,点个赞呗,各位看官

发布了81 篇原创文章 · 获赞 21 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_33575901/article/details/102595886
今日推荐