SDK 14 Secure DFU Procedure---nordic 52832空中升级笔记
来源:互联网 发布:知乎 英国公爵 编辑:程序博客网 时间:2024/05/22 13:40
SDK 14 Secure DFU Procedure
---nordic 52832空中升级笔记
- 前言
写此文档的目的仅仅是为了下次再做类似操作是提供指导,若大家有做类似的项目也可以拿来做参考。所有源码已经软件工具、代码都上传到我的博客http://blog.csdn.net/wulazula/article/details/78130954,有需要的可以下载下来。
源码:http://download.csdn.net/download/wulazula/10001233;
- 以下是我测试的环境,大家的环境和我的有不同也不需要太担心,随机应变。
环境: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开发板
- 在做空中升级过程中可能遇到的问题
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错误
- 安装所需的软件
这里我直接用我下载好的软件演示,大家也可以自己到到相关网站下载.
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添加到环境变量
- 安装python-2.7.12.amd64.msi。
双击python-2.7.12.amd64.msi安装
进入命令行窗口,并到Python路径,输入python -m pip install nrfutil
等待安装完成
- 解决缺少uECC.h文件问题
- 下载micro-ecc:
直接用我下载好的或到官网下载micro-ecc :https://github.com/kmackay/micro-ecc
注意:官网上下载的文件夹名称的名字要改成micro-ecc
- 把micro-ecc文件夹复制到
nRF5_SDK_14.0.0_3bcc1f7\external\micro-ecc目录下
3.打开micro-ecc目录可以看见uECC.h
- 解决缺少micro_ecc_lib_nrf52.lib的问题
- 双击批处理文件nRF5_SDK_14.0.0_3bcc1f7\external\micro-ecc\build_all.bat即可生成lib文件;
- 也可以进入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添加到工程即可。
- 解决编译报错问题
- 编译过程中会出现报错:#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复制到报错的位置。
- 烧录协议栈、应用层、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
- 合并所有文件,注意自己的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
- 烧录一个文件即可,烧录前先用nRFgo Studio擦除芯片。
nrfjprog -f NRF52 --eraseall
nrfjprog f NRF52 --program "production_final.hex" --verify
nrfjprog -f NRF52 --reset
这时打开手机app nRF Connect即可看到蓝牙名称为Nordic_Buttonless的设备了。
- 打包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 这个是"步骤七:解决编译报错问题 "中生成的秘钥文件。
- 终于到最后一步了,直接拿起手机升级吧。这里需要两个软件nRF Connect和nRF Toolbox,我用的 版本分别是 v4.10.0 和v2.2.1。以下的步骤一定要一步一步来,千万不能急。
1、连接蓝牙
- 点击圆圈处
3点击下图圆圈处
4 发送0x01,设备将复位并进入bootloader状态,这时若复位开发板或断电,手机端会看到Nordic_Buttonless的蓝牙名称。
5.发送完以后,可以看到名为DFUTARG的设备,说明此时设备进入bootloader 状态,。
- 点击右上角的DFU按钮,选择zip文件,开始升级吧
- SDK 14 Secure DFU Procedure---nordic 52832空中升级笔记
- nrf51822 ---空中升级(DFU)
- nrf51822 DFU 空中升级教程
- Nordic52832 Secure DFU
- CC1310空中升级笔记03 CC1350_BLE_OAD_Project0
- nordic nrf52 sdk 手册
- nrf51822 DFU升级
- NRF518522 DFU升级步骤
- nRF52832 — DFU升级
- ios Nordic DFU 出现 Writing to characteristic failed
- CC1310空中升级笔记01_E2E论坛OAD资料查询
- CC1310空中升级笔记02 CC26xx_CC13xx_BLE_OAD_例程梳理
- CC1310空中升级笔记04 WSN OAD Example
- CC1310空中升级笔记05 BIM适配工程处理
- android sdk升级笔记
- netduino制作dfu升级文件
- OAD 空中升级
- nrf51822空中升级资料
- 更改状态栏里面图标字体颜色
- Dynamic Array--Data Structure
- 第五章 处理器拦截器详解——跟着开涛学SpringMVC
- beego搭建api服务
- 请求报文及响应报文
- SDK 14 Secure DFU Procedure---nordic 52832空中升级笔记
- OpenSteel v2.30
- iOS数据存储方法大全
- Visual Studio 2010 Win32 Usb HID 动态库创建
- 一个“编码十几年”的『老程序员』分享的四点心得
- 程序员,我在北上广寻找生活的感觉
- 图片上传可以选择的插件
- 帮花仲马求一波『深圳』的加班照片
- 2017 年一定不要错过的五本编程书籍 | Phodal 书单