nrf52810DFU OTA空中升级教程

nrf52810为nordic支持蓝牙 5.0性价比最高的一款芯片,不过这个芯片的rom不得不吐槽下,只有192KB,不知道为什么定了个192,而不是大家所熟悉的256KB,估计价格是个原因吧,15.2的协议栈中S112 softdevice占用了100KB,只剩92KB了,后面还要减掉bootloader的大小,所以给用户使用的空间并不大,15.2中pca10040e为52810的工程

1,需要用到的工具

(1)GCC,下载路径 https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads/6-2017-q2-update

软件安装好,需要把安装路径下bin的路径,添加到环境变量中,根据自己安装的路径找到添加C:\ProgramFiles (x86)\GNU Tools ARM Embedded\6 2017-q2-update\bin
 

(2) 安装make,下载路径  https://www.gnu.org/software/make/

    软件安装好,需要把安装路径下bin的路径,添加到环境变量中,根据自己安装的路径找到添加C:\ProgramFiles            (x86)\GnuWin32\bin

(3)python-2.7.12.amd64.msi下载路径 https://www.python.org/downloads/

     双击python-2.7.12.amd64.msi安装 ,安装完毕后,把python的路径加入到环境变量中  

  1. C:\Python27\

  2. C:\Python27\Scripts

(4)

以下软件:nrfjprog.exe,mergehex.exe 这两个软件需要安装 nRFgo Studio的安装目录下找到

C:\Program Files (x86)\Nordic Semiconductor\nrf5x\bin

2,

进入命令行窗口,并到Python路径,输入python -m pip install nrfutil

nrfutil会被安装到C:\Python27\Scripts目录下, 我安装的nrfutil版本是4.0.0,后面安装可能会更新

3,缺少uECC.h

 

下载micro-ecc:到官网下载micro-ecc :https://github.com/kmackay/micro-ecc

把micro-ecc文件夹复制到

nRF5_SDK_15.2.0_9412b96\external\micro-ecc目录下

4,缺少micro_ecc_lib_nrf52.lib

双击批处理文件nRF5_SDK_15.2.0_9412b96\external\micro-ecc\build_all.bat即可生成lib文件;

把生成的micro_ecc_lib_nrf52.lib添加到工程即可,

5,编译报错

#error "Debug public key not valid for production. Please see https://github.com/NordicSemiconductor/pc-nrfutil/blob/master/README.md to generate it",
缺少秘钥造成的,需要大家添加一个秘钥上去

写一个批处理文件

nrfutil.exe keys generate private.pem

nrfutil.exe keys display --key pk --format code private.pem --out_file dfu_public_key.c

将nRF5_SDK_15.2.0_9412b96\examples\dfu目录下的dfu_public_key.c直接替换掉

6,烧录协议栈,APP,bootloader

app为nRF5_SDK_15.2.0_9412b96\examples\ble_peripheral\ble_app_buttonless_dfu\pca10040e\s112\arm5_no_packs目录下的工程,大家直接编译就OK了

(1) 先要生成bootloader setting

执行nrfutil.exe settings generate --family NRF52810 --application nrf52810_xxaa.hex --application-version 3 --bootloader-          version 2 --bl-settings-version 1 bootloader_settings.hex

(2)合并bootloader和协议栈

mergehex.exe --merge nrf52810_xxaa_bootloader_s112.hex s112_nrf52_6.1.0_softdevice.hex --output btAndSd.hex

(3)合并 btAndSd.hex和APP

mergehex.exe --merge btAndSd.hex nrf52810_xxaa.hex --output btAndSdAndApp.hex

(4)合并btAndSdAndApp.hex和bootloader_settings.hex

      mergehex.exe --merge btAndSdAndApp.hex bootloader_settings.hex --output burn.hex

(5)烧录

nrfjprog -f NRF52 --eraseall
nrfjprog --program "burn.hex" --verify
nrfjprog -f NRF52 --reset
pause

烧录完成后拿手机搜索下,可以看到如下设备的广播

7,生成空升文件

nrfutil pkg generate --hw-version 52 --sd-req 0xb0 --application-version 0xff --application nrf52810_xxaa.hex --key-file private.pem nrf52810_xxaa.zip

private.pem文件为第5步中生成的

8,开始用手机空升设备

(1)连接蓝牙

(2)点击图示地方

(3)继续点击图示

(4)点击send

此时手机蓝牙会自动断开,从新搜索会看到名为DFUTARG的设备,连接成功后点击右上角的DFU图标

然后选择空升文件,开始升级

如果安卓升及失败请用最新4.2及以为的nrf connect,4.1版本会升级失败

烧录及生成各种文件下载地址:

https://download.csdn.net/download/htaijqq/10792989

nrf connect 4.2下载地址

https://download.csdn.net/download/htaijqq/10790348

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章