原链接 https://blog.csdn.net/jdsnpgxj/article/details/80772727

其它的链接

https://blog.csdn.net/weixin_38051349/article/details/80074799 nRF52832 DFU 过程记录之一

https://blog.csdn.net/sinat_23338865/article/details/52295156  nrf51822/52832学习笔记之官方DFU过程梳理
https://blog.csdn.net/oqqdake12/article/details/53928601 Nordic52832 Secure DFU

https://blog.csdn.net/jdsnpgxj/article/details/80772727  nrf52832 DFU详细步骤 SDK13

https://blog.csdn.net/wulazula/article/details/78130954  Nordic  52832 SDK 14 Secure DFU Procedure

---nordic 52832空中升级笔记

https://blog.csdn.net/weixin_40204595/article/details/80592770  Nordic 52832 —— OTA 流程源码分析(一)

https://blog.csdn.net/zhanghuaishu0/article/details/77162461  nRF52832 — DFU升级
https://devzone.nordicsemi.com/blogs/685/common-faq-on-dfu/

https://devzone.nordicsemi.com/tutorials/9/

1. 以下是我测试的环境,大家的环境和我的有不同也不需要太担心,随机应变。 
环境:win7,64位,IAR集成开发环境
Sdk:nRF5_SDK_13.0.0_04a0bfd
协议栈:s132_nrf52_4.0.2_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. 安装所需的软件
(1)gcc-arm-none-eabi-4_9-2015q3-20150921-win32.exe:
https://launchpad.net/gcc-arm-embedded/4.9/4.9-2015-q3-update
根据提示安装 4.9-2015-q3-update 版本的 GCC compiler toolchain for ARM
(2)make-3.81.exe:
http://gnuwin32.sourceforge.net/packages/make.htm
(3)python-2.7.12.amd64.msi
https://www.python.org/downloads/
(4)nRFgo Studio
主要提供nrfjprog.exe和mergehex.exe
这两个软件在nRFgo Studio的安装目录下找到
C:\Program Files (x86)\Nordic Semiconductor\nrf5x\bin
安装之后用cmd输入nrfjprog和mergehex,查看是否安装可用

(5)oreutils-5.3.0.exe:
http://gnuwin32.sourceforge.net/packages/coreutils.htm

4. 安装步骤
1.安装编译环境:
(1)双击安装make-3.81.exe ,
(2)安装coreutils-5.3.0.exe,
(3)安装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的路径加入到环境变量中
C:\Python27\
C:\Python27\Scripts
进入命令行窗口,并到Python路径,输入python -m pip install nrfutil等待安装完成

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

2.解决缺少uECC.h文件问题
(1)下载micro-ecc:
直接用我下载好的或到官网下载micro-ecc :https://github.com/kmackay/micro-ecc
注意:官网上下载的文件夹名称的名字要改成micro-ecc
(2)把micro-ecc文件夹复制到nRF5_SDK_13.0.0_04a0bfd\external\micro-ecc目录下

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

3.解决缺少micro_ecc_lib_nrf52.lib的问题
(1)方法1:双击批处理文件nRF5_SDK_13.0.0_04a0bfd\external\micro-ecc\build_all.bat即可生成lib文件;

(2)方法2:也可以进入nRF5_SDK_14.0.0_3bcc1f7\external\micro-ecc\nrf52_keil\armgcc路径,输入make 生成lib文件。(我用的是方法2)

以上两种方法都是用到了micro-ecc\nrf52_keil\armgcc\makefile
把生成的micro_ecc_lib_nrf52.lib添加到工程即可。
4. 解决编译报错问题
编译过程中会出现报错:#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复制到报错的位置。

5. 烧录协议栈、应用层、bootloader
(1)先要生成bootloader setting, 这个文件包含了app version ,bootloader version , hw version, 等信息。
进入\examples\dfu\bootloader_secure\pca10040\arm5_no_packs\_build 执行nrfutil.exe settings generate --family NRF52 --application nrf52832_xxaa_bootloader.hex --application-version 3 --bootloader-version 2 --bl-settings-version 1 bootloader_settings.hex

(2)合并所有文件,注意自己的hex文件名。
合并BootLoader文件和softdevice文件:mergehex.exe --merge nrf52832_xxaa_bootloader.hex s132_nrf52_4.0.2_softdevice.hex --output production_final1.hex 
将上一个合并文件与app程序合并:mergehex.exe --merge production_final1.hex nrf52832_xxaa_app.hex --output production_final2.hex
将上一个合并文件与配置settings 文件合并:mergehex.exe --merge production_final2.hex bootloader_settings.hex --output production_final.hex
删除:del production_final1.hex
删除:del production_final2.hex

最后生成烧录文件production_final.hex
(3)烧录一个文件即可,烧录前先用nRFgo Studio擦除芯片。
nrfjprog -f NRF52 --eraseall
nrfjprog -f NRF52 --program "production_final.hex" --verify
nrfjprog -f NRF52 --reset
 
 
 这时打开手机app nRF Connect即可看到程序中设置的蓝牙名称的设备了。
 (4)打包OTA所需的zip文件。这里只介绍升级应用层,至于升级bootloader和协议栈下次有空再研究。
执行nrfutil pkg generate --hw-version 52 --sd-req 0x98 --application-version 0xff --application nrf52832_xxaa_app.hex --key-file private.pem nrf52832_xxaa_app.zip

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

--application-version 0xff :0xff是应用层版本。 
 --key-file private.pem 这个是"解决编译报错问题 "中生成的秘钥文件。

6. 手机空中升级的实现
(1)连接蓝牙

(2)点击圆圈处

(3)发送请求,设备将复位并进入bootloader状态。

(4)发送完以后,可以看到名为DFUTARG的设备,说明此时设备进入bootloader 状态。连接蓝牙DfuTarg设备。

(5)点击右上角的DFU按钮,选择zip文件,开始升级
      

我自己的命令

nrfutil.exe settings generate --family NRF52 --application nrf52832_bootloader_sdk13_s132.hex --application-version 3 --bootloader-version 1 --bl-settings-version 1 bootloader_settings.hex

mergehex.exe --merge nrf52832_bootloader_sdk13_s132.hex s132_nrf52_5.0.0-1.alpha_softdevice.hex --output production_final1.hex

mergehex.exe --merge production_final1.hex nrf52832_buttonless_sdk13_s132.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
    
    nrfjprog -f NRF52 --eraseall
    nrfjprog -f NRF52 --program "production_final.hex" --verify
    nrfjprog -f NRF52 --reset
    
    NRF_DFU_HW_VERSION
  nrfutil pkg generate --hw-version 52 --sd-req 0x90 --application-version 0xff --application nrf52832_buttonless_sdk13_s132.hex --key-file private.pem nrf52832_buttonless_sdk13_s132_00.zip
    
  nrfutil pkg generate --hw-version 52 --sd-req 0x90 --application-version 0xff --application nrf52832_buttonless_sdk13_s132.hex --key-file private.pem nrf52832_buttonless_sdk13_s132_11.zip

nrf52832 DFU详细步骤 SDK13相关推荐

  1. 360浏览器如何保存html文件夹下,在360浏览器中将书签保存的详细步骤

    软件大小: 68.6MB 软件版本: 12.2.1812.0 软件类型: 浏览器 查看详情 直接下载 很多用户都选择使用360浏览器,那么你们知道在其中怎样保存书签吗?下文就是在360浏览器中将书签保 ...

  2. Cacti安装详细步骤

    Cacti安装详细步骤 前提LNMP或LAMP架构已搭建完成 一.cacti概述 1. cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据 ...

  3. android系统的iphone,iPhone上安装Android系统详细步骤。

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 在iphone安装android系统的详细步骤 首先,准备好iphone的多点触屏和wlan固件.因为法律的缘故,我们不能分享这些文件,你可以去ipsw文 ...

  4. Windows Server 2003 AD升级到Windows Server 2008 AD的方法及详细步骤

    前言: Windows Server 2008 是现在企业比较流行的服务器操作系统,安全性高,配置灵活.方便,集成了Hyper-V虚拟化功能,能够充分发挥硬件的性能.Windows Server 20 ...

  5. HTML用乘法函数,Excel乘法函数的使用方法和详细步骤

    Excel是一款非常强大的办公软件,其应用非常广泛.我们在日常工作中经常都要用到Excel,使用Excel进行处理大型数据的表格,要在数据上计算就会使用到数据上相乘,这时候我们就需要使用乘法的函数,那 ...

  6. 联想笔记本Ideapad(flex 2)进入BIOS设置U盘启动的详细步骤

    2019独角兽企业重金招聘Python工程师标准>>> (设置以ideapad S210进入BIOS设置U盘启动盘为例) 1.按下联想笔记本的电源键,看到联想图标的时候按住键盘左下角 ...

  7. oracle归档模式教程,Oracle从归档模式变成非归档模式详细步骤

    更改Oracle数据库的非归档模式需要重新启动数据库,在mount模式下修改,简要步骤1 以shutdown immediate方式关闭数据库2 启动实 Oracle从归档模式变成非归档模式详细步骤 ...

  8. VS2012/13本地发布网站详细步骤(可带数据库)

    VS发布网站详细步骤 要在本地(自己的额电脑上)发布网站,首先你必须要搭建一个IIS服务器(具体搭建方法可参考我的上一篇博客).下面是具体步骤: 1.打开你的VS2012网站项目,右键点击项目> ...

  9. win7怎么修改oracle登陆密码,win7账户密码如何修改|win7修改账户密码的详细步骤...

    今天本教程和大家分享win7修改账户密码的详细步骤,为了系统的安全最好经常修改系统的密码,从而保护好我的电脑,保护好我们的资料.还是有很多用户不知道win7账户密码如何修改?网上有很多关于修改账户密码 ...

最新文章

  1. 2022-2028年中国汽车塑料行业市场深度分析及投资趋势预测报告
  2. 『笔记』常用命名规则
  3. C#相关的DateTime操作
  4. 51单片机的配p10端口c语言,stc12c5a16s2的单片机的p5口做普通端口怎么定义?
  5. Xtreme ToolkitPro 编译选项
  6. Go语言的map以及sort
  7. 『001』如何在自己的网页里引入一个聊天机器人(。・∀・)ノ
  8. vue源码学习:Object.defineProperty 对数组监听
  9. Angr安装与使用之使用篇(六)
  10. 智慧园区大数据平台建设方案(ppt)
  11. C#/VB.NET 读取条码类型及条码在图片中的坐标位置
  12. 大数定律和中心极限定理
  13. 对promise、resolve和reject的简单理解
  14. 学习使用 OpenCV 中的函数 cv2.kmeans() 对数据进行分类
  15. vue 修改标题栏_在Vue中如何实现动态修改页面title
  16. java 文字串叠字检查_正则表达式的相关应用
  17. 168-203-javajvm-垃圾收集器
  18. Win10 正式版系统启动盘制作教程
  19. linux配置编译指定库,Linux——dropbear编译安装
  20. 心电信号越界怎么回事_【心电学】易误诊为起搏器功能异常的心电图表现

热门文章

  1. 数据驱动决策的10种思维方式
  2. 数据库:数据库的连接池原理及实现
  3. 数据库外键的使用原则
  4. 【Linux - mysql】linux下mysql报Failed to restart mysqld.service: Unit not found
  5. com.fasterxml.jackson.databind.JsonMappingException: Multiple back-reference properties with name ‘d
  6. html判断表单是否为空,layui判断表单是否为空
  7. 网络故障排除工具 | 快速定位网络故障
  8. 网络工程师技能图谱 | 网络技术的理论知识和操作技能
  9. vue 可视化布局工具_GitDataV一款Github的'大数据可视化平台'
  10. 成功解决 “this version of pandas is incompatible with numpy < 1.15.4\n“ImportError: this version of pand