NRF52832空中升级DFU

1.工具环境搭建

  • gcc-arm-none-eabi编译环境:GCC编译环境

           Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer

  • mingw 平台(win版的Linux命令行)

          Download MinGW - Minimalist GNU for Windows

  • micro-ecc-master源码

          GitHub - kmackay/micro-ecc: ECDH and ECDSA for 8-bit, 32-bit, and 64-bit processors.

(我用的原来工程中的micro_ecc_lib_nrf52.lib)

  • python 安装文件

          Download Python | Python.org

我用的是python-3.10.10-amd64版本。

  • pc-nrfutil

         GitHub - NordicSemiconductor/pc-nrfutil: nrfutil python library and command line client

我用的是pc-nrfutil-6.1.7版本

  • nrfgo-studio
  • nrf connect app

2、升级文件制作

2.1 密钥生成文件

(1)新建文件夹key,在CMD命令中输入:

nrfutil.exe keys generate D:\TEST\key\private.key

生成私钥文件。

(2)在命令中输入:

nrfutil keys display --key pk --format code D:\TEST\key\private.key --out_file D:\TEST\key\public_key.c

生成公钥文件public_key.c,将文件名修改为:dfu_public_key.c,复制dfu_public_key.c文件到dfu工程,dfu\dfu_req_handling\ 。

2.2 升级包制作

(1)boot工程的hex生成

打开dfu下的boot工程,重新编译,生成hex文件,将文件名改为:boot.hex,拷贝到key 文件夹下。

注意:起始地址为:0x78000,大小:0x8000

(2)应用工程的hex生成

打开ble_peripheral文件夹下的应用工程,重新编译,生成hex文件,将文件名改为:app.hex,拷贝到key文件夹下。

注意:起始地址为:0x1f000,大小:0x59000

2.3 升级文件zip的生成

在key文件夹下,输入命令:

nrfutil pkg generate --hw-version 52 --application-version 2 --application app.hex --sd-req 0x99 --key-file private.key test_Dfu15.zip

生成用于升级的文件:test_Dfu15.zip,放进手机中利用nrf connect app传送至设备。

注意:

蓝牙协议栈版本如下:

                                  |s112_nrf52_6.0.0|0xA7|
                                  |s112_nrf52_6.1.0|0xB0|
                                  |s112_nrf52_6.1.1|0xB8|
                                  |s130_nrf51_1.0.0|0x67|
                                  |s130_nrf51_2.0.0|0x80|
                                  |s132_nrf52_2.0.0|0x81|
                                  |s130_nrf51_2.0.1|0x87|
                                  |s132_nrf52_2.0.1|0x88|
                                  |s132_nrf52_3.0.0|0x8C|
                                  |s132_nrf52_3.1.0|0x91|
                                  |s132_nrf52_4.0.0|0x95|
                                  |s132_nrf52_4.0.2|0x98|
                                  |s132_nrf52_4.0.3|0x99|
                                  |s132_nrf52_4.0.4|0x9E|
                                  |s132_nrf52_4.0.5|0x9F|
                                  |s132_nrf52_5.0.0|0x9D|
                                  |s132_nrf52_5.1.0|0xA5|
                                  |s132_nrf52_6.0.0|0xA8|
                                  |s132_nrf52_6.1.0|0xAF|
                                  |s132_nrf52_6.1.1|0xB7|
                                  |s140_nrf52_6.0.0|0xA9|
                                  |s140_nrf52_6.1.0|0xAE|
                                  |s140_nrf52_6.1.1|0xB6|

3、生产烧录文件制作

3.1 setting 文件的生成

在key文件夹中,输入命令:

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

生成 app_setting.hex文件,用于下步合并文件的制作。

3.2 合并协议栈hex,boot的hex,应用的hex

在key文件夹中,输入命令:

mergehex --merge s132.hex boot.hex app.hex --output output3to1.hex

生成3个文件的合并文件output3to1.hex,用于下步合并文件的制作。

3.3 合并output3to1.hex 和app_setting.hex

在key文件夹中,输入命令:

mergehex --merge output3to1.hex app_setting.hex --output output4to1.hex

生成最终合并的output4to1.hex,可以直接用nrfgo软件直接烧录。

 

4、升级过程

连接设备蓝牙

1.使能Buttonless DFU的CCCD项;

2.点击按键2

点击SEND,设备进入boot模式,关闭当前连接,进入扫描项SCAN,连接DfuTrag

点击右上角的DFU小图标,选择ZIP文件(SDK12之后仅支持ZIP格式升级),点击OK,进入文件浏览器选择升级文件后自动开始升级,到100%时升级完成。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值