NRF52832的DFU

开发环境:

Winsodw:10

nRF5_SDK:17.1.0

1 工具安装

1.1 gcc-arm-none-eabi

Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer

下载“gcc-arm-none-eabi-10.3-2021.10-win32.exe”,接提示安装。注意安装完后添加环境变量。

1.2 minGW

MinGW - Minimalist GNU for Windows download | SourceForge.net

下载mingw-get-setup.exe,安装过程中要下载很多包,估计要1~2小时安装完成。

NRF52832的DFU_第1张图片

NRF52832的DFU_第2张图片

NRF52832的DFU_第3张图片

NRF52832的DFU_第4张图片

1.3 python

最好根据pc-ble-driver-py的版本来安装python的版本,否则下面安装nrfutil失败时无法解决。

pc-ble-driver-py · PyPI

在上面的网站查看pc-ble-driver-py对应的python版本。

1.4 pc-nrfutil

Release v6.1.7 · NordicSemiconductor/pc-nrfutil · GitHub

# 解压后安装
python setup.py install

# 如果pc_ble_driver_py版本不对,手动安装pc_ble_driver_py
pip install pc_ble_driver_py-0.17.0-cp310-cp310-win_amd64.whl

 在命令行输入“nrfutil”查看是否安装成功。

 1.5 micro-ecc源码

Release 1.1 · kmackay/micro-ecc · GitHub

解压后将文件夹micro-ecc-1.1改名为micro-ecc,后放在external\micro-ecc下

NRF52832的DFU_第5张图片

双击打开C:\MinGW\msys\1.0\msys.bat,进到 external/micro-ecc/nrf52hf_armgcc/armgcc目录。编译lib文件。

NRF52832的DFU_第6张图片

 2 生成key

mkdir key
cd 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替换examples\dfu\dfu_public_key.c

3 boot工程和应用工程的编译

3.1 boot工程编译

打开工程examples\dfu\secure_bootloader\pca10040_s132_ble\ses编译。

 如果报错,修改examples\dfu\secure_bootloader\pca10040_s132_ble\ses\flash_placement.xml文件。删除size="0x4"。

NRF52832的DFU_第7张图片

 将生成的secure_bootloader_ble_s132_pca10040.hex改名为boot.hex放到key文件夹中。

3.2 应用工程编译

打开工程examples\ble_peripheral\ble_app_buttonless_dfu\pca10040\s132\ses编译。

NRF52832的DFU_第8张图片

如果报错,删除nRF_Segger_RTT下的SEGGER_RTT_Syscalls_SES.c文件。如果找不到函数定义,记得把头文件路径加到工程中。

将生成的ble_app_buttonless_dfu_pca10040_s132.hex改名为app.hex放到key文件夹中。

3.3 生成zip

nrfutil pkg generate --hw-version 52 --application-version 1 --application app.hex --sd-req 0x101 --key-file
private.key test_dfu.zip
# --hw-version:硬件版本nrf52822为51,nrf52832为52
# --application-version:应用的版本号,用户自已设置
# --sd-req:协议栈版本

4 DFU

先烧写s132_nrf52_7.2.0_softdevice.hex,boot.hex,app.hex,烧写完成后,用nRF connect扫描,发现DfuTarg,此时程序不会自动运行app,需要dfu一次才能运行app。

NRF52832的DFU_第9张图片

 连接后点右上角的dfu,选zip包

NRF52832的DFU_第10张图片

 开始升级

NRF52832的DFU_第11张图片

 升级完成后,设备重启,此时扫描到Nordic_Buttonless

NRF52832的DFU_第12张图片

 连接后使用Swcure DFU Service即可以进入boot,再一次升级。

NRF52832的DFU_第13张图片

 5 seting文件的使用

之前烧写的程序,必需要dfu一次才能运行app,使用seting文件即可以解决这个问题。

nrfutil settings generate --family NRF52 --application app.hex --application-version 1 --bootloader-version 1 --bl-settings-version 1 setting.hex

重新烧写s132_nrf52_7.2.0_softdevice.hex,boot.hex,app.hex和setting.hex,然后使用nRF connect扫描,这次就直接运行app了。

你可能感兴趣的:(windows)