Nordic系列芯片讲解三(Nordic 52832 SDK 14 Secure DFU Procedure ---nordic 52832空中升级笔记)

Nordic  52832 SDK 14 Secure DFU Procedure

---nordic 52832空中升级笔记

/************************************************************************************************/

2018年12月20日更新

最近有人反映说没有CSDN积分,下载不了相关的源码和工具。对此我也很无奈,csdn的下载积分规则改了,积分的多少不是我来定的。没有积分可以在文章最后评论留下联系方式,我会尽快联系你的。另外在做BLE产品时遇到什么困难也欢迎各位在下面评论留言。感谢大家的支持。

 

 

/*************************************************************************************************

2018年5月28日更新

写博客时太懒,不愿从头再验证一次。博客出来后很多人通过找到我,指出了一些纰漏的地方。特意在此更正

一下。为了避免有人再次掉进我的陷阱,特意把更新放在文章开头。

1.遇到运行指令报错的问题时,先检查一下环境变量是否正确,在windows命令行下输入命令时,windows本身是不会知道你安装的软件在哪个路径的,要把文件路径添加到环境变量"  控制面板>>所有控制面板项>>系统>>高级环境设置>>环境变量>>path"

2.因为在windows的命令行下敲命令太痛苦,所以我写了一个批处理文件,大家可以找到release文件夹下的 "dfu加密.BAT"

    里面写了很多指令,大家要用记事本打开看是每条指令的实际意义。里面提到了很多hex文件,大家要明白每个hex的意思,并对应上自己的hex文件。

*********************************************************************************************/

 

 

 

 

  1. 前言

     

    写此文档的目的仅仅是为了下次再做类似操作是提供指导,若大家有做类似的项目也可以拿来做参考。所有源码已经软件工具、代码都上传到我的博客http://blog.csdn.net/wulazula/article/details/78130954,有需要的可以下载下来。

     

     源码:http://download.csdn.net/download/wulazula/10001233;  

工具1:http://download.csdn.net/download/wulazula/10001257      

           工具2:https://download.csdn.net/download/wulazula/10001273

 

  1. 以下是我测试的环境,大家的环境和我的有不同也不需要太担心,随机应变。

     

    环境:win7,64位,mdk keil版本v5.24.1

    Sdk:nRF5_SDK_14.0.0_3bcc1f7

    协议栈:s132_nrf52_5.0.0_softdevice.hex

    Bootloader工程:secure_dfu_ble_s132_pca10040

    application工程:ble_app_buttonless_dfu_pca10040_s132

    硬件平台:pca10040开发板

     

     

     

  2. 在做空中升级过程中可能遇到的问题

     

    1.缺少uECC.h文件

    2.缺少micro_ecc_lib_nrf52.lib文件

    3.出现报错:#error "Debug public key not valid for production. Please see https://github.com/NordicSemiconductor/pc-nrfutil/blob/master/README.md to generate it"

    4.升级过程中出现:fw version错误

     

     

  3. 安装所需的软件

     

    这里我直接用我下载好的软件演示,大家也可以自己到到相关网站下载.

     

    gcc-arm-none-eabi-4_9-2015q3-20150921-win32.exe:

    https://launchpad.net/gcc-arm-embedded/4.9/4.9-2015-q3-update

     

    oreutils-5.3.0.exe:

    http://gnuwin32.sourceforge.net/packages/coreutils.htm

     

    make-3.81.exe:

    http://gnuwin32.sourceforge.net/packages/make.htm

     

    python-2.7.12.amd64.msi

    https://www.python.org/downloads/

     

    另外以下软件:

    nrfjprog.exe

    mergehex.exe

    这两个软件需要安装 nRFgo Studio的安装目录下找到

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

     

     

    1.安装"make"编译环境:

     

    双击安装make-3.81.exe ,

    安装coreutils-5.3.0.exe,

    安装gcc-arm-none-eabi-4_9-2015q3-20150921-win32.exe

     

    把路径Path : C:\Program Files (x86)\GNU Tools ARM Embedded\4.9

    2015q3\bin;C:\Program Files (x86)\GnuWin32\bin添加到环境变量

     

  4. 安装python-2.7.12.amd64.msi。

     

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

    1. C:\Python27\

    2. C:\Python27\Scripts

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

    等待安装完成

     

    nrfutil会被安装到C:\Python27\Scripts目录下, 我安装的nrfutil版本是3.3.0,后面安装可能会更新,所以可能会遇到版本兼容问题。nrf studio的安装目录下也有这个软件,可以拿来代替。

  6. 解决缺少uECC.h文件问题

     

  7. 下载micro-ecc:

     

    直接用我下载好的或到官网下载micro-ecc :https://github.com/kmackay/micro-ecc

    注意:官网上下载的文件夹名称的名字要改成micro-ecc

     

  8. 把micro-ecc文件夹复制到

    nRF5_SDK_14.0.0_3bcc1f7\external\micro-ecc目录下

     

     

     

     

    3.打开micro-ecc目录可以看见uECC.h

     

     

  9. 解决缺少micro_ecc_lib_nrf52.lib的问题

     

  10. 双击批处理文件nRF5_SDK_14.0.0_3bcc1f7\external\micro-ecc\build_all.bat即可生成lib文件;

     

  11. 也可以进入nRF5_SDK_14.0.0_3bcc1f7\external\micro-ecc\nrf52_keil\armgcc路径,输入make 生成lib文件。

     

     

    以上两种方法都是用到了micro-ecc\nrf52_keil\armgcc\makefile

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

     

  12. 解决编译报错问题

     

  13. 编译过程中会出现报错:#error "Debug public key not valid for production. Please see https://github.com/NordicSemiconductor/pc-nrfutil/blob/master/README.md to generate it",

     

    看报错就知道这是缺少秘钥造成的,这个故意报错,需要大家添加一个秘钥上去。

     

    打开cmd命令行,键入一下指令

     

    nrfutil.exe keys generate private.pem

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

     

    这样生成的秘钥就保存在 public_key.c中,打开public_key.c。把数组pk复制到报错的位置。

     

  14. 烧录协议栈、应用层、bootloader

     

    1.先要生成bootloader setting, 这个文件包含了app version ,bootloader version , hw version, 等信息。

     

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

     

  15. 合并所有文件,注意自己的hex文件名。

     

    mergehex.exe --merge nrf52832_xxaa_bootloader.hex s132_nrf52_5.0.0_softdevice.hex --output production_final1.hex

     

    mergehex.exe --merge production_final1.hex nrf52832_xxaa_app.hex --output production_final2.hex

     

    mergehex.exe --merge production_final2.hex bootloader_settings.hex --output production_final.hex

     

    del production_final1.hex

    del production_final2.hex

     

     

    最后生成烧录文件production_final.hex

     

  16. 烧录一个文件即可,烧录前先用nRFgo Studio擦除芯片。

    nrfjprog -f NRF52 --eraseall

    nrfjprog f NRF52 --program "production_final.hex" --verify

    nrfjprog -f NRF52 --reset

     

     

    这时打开手机app nRF Connect即可看到蓝牙名称为Nordic_Buttonless的设备了。

     

     

  17. 打包OTA所需的zip文件。这里只介绍升级应用层,至于升级bootloader和协议栈下次有空再研究。

     

    执行nrfutil pkg generate --hw-version 52 --sd-req 0x9d --application-version 0xff --application nrf52832_xxaa_app.hex --key-file private.pem nrf52832_xxaa_app.zip

     

     

    --sd-req 0x9d : 0x9d是 协议栈版本,如下图所示

     

     

    --application-version 0xff :0xff是应用层版本,暂时没找到在程序的那个地方有描述,有找到的请联系一下我,因为我也想知道。哈哈。奇怪的是,若写成0xfe,升级的时候过程中手机app会报错。

     

     

    --key-file private.pem 这个是"步骤七:解决编译报错问题 "中生成的秘钥文件。

     

     

     

  18. 终于到最后一步了,直接拿起手机升级吧。这里需要两个软件nRF Connect和nRF Toolbox,我用的 版本分别是 v4.10.0 和v2.2.1。以下的步骤一定要一步一步来,千万不能急。

    1、连接蓝牙

     

     

     

     

     

  19. 点击圆圈处

     

    3点击下图圆圈处

     

     

    4 发送0x01,设备将复位并进入bootloader状态,这时若复位开发板或断电,手机端会看到Nordic_Buttonless的蓝牙名称。

     

    5.发送完以后,可以看到名为DFUTARG的设备,说明此时设备进入bootloader 状态,。

     

     

     

  20. 点击右上角的DFU按钮,选择zip文件,开始升级吧

     

     

     

 

 

欢迎关注本人公众号:低功耗蓝牙技术研究及推广

 

 

 

 

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值