上一篇配置好了开发环境,现在就可以试着跑一下例程了,这里需要两个例程,一个是bootloader的,一个是应用程序的,其路径分别为:

bootloader:SDK_14.2.0工程\examples\dfu\bootloader_secure_ble\pca10040\arm5_no_packs

应用程序:SDK_14.2.0工程\examples\ble_peripheral\ble_app_buttonless_dfu\pca10040\s132\arm5_no_packs

这里用到了一些工具(参考文章及下载地址http://www.cnblogs.com/iini/p/9314246.html)下面开始步骤

1,双击“key_generate.bat”以生成相应的私钥(priv.pem)和公钥(dfu_public_key.c)

“key_generate.bat”代码如下,也可以在CMD命令行输入

::generate private key
nrfutil keys generate priv.pem
::generate public key related with private key: priv.pem
nrfutil keys display --key pk --format code priv.pem --out_file dfu_public_key.c

2,将dfu_public_key.c替换目录SDK_14.2.0工程\examples\dfu\dfu_req_下的同名文件,这个是公钥,写入bootloader里面的

3,编译bootloader工程:SDK_14.2.0工程\examples\dfu\bootloader_secure_ble\pca10040\arm5_no_packs

4,将生成的hex改为:bootloader.hex,放入(替换)Script_SDK14_S132_nRF52832文件夹

5,编译应用程序工程:SDK_14.2.0工程\examples\ble_peripheral\ble_app_buttonless_dfu\pca10040\s132\arm5_no_packs

6,将生成的hex修改为:app.hex,放入(替换)Script_SDK14_S132_nRF52832文件夹

7,双击“settings_page_generate.bat” 生成settings.hex

“settings_page_generate.bat”代码如下

::generate settings page for current image: app.hex
nrfutil settings generate --family NRF52 --application app.hex --application-version 1 --bootloader-version 2 --bl-settings-version 1 settings.hex

8,双击“mass_program.bat”来烧录softdevice,app和bootloader,自带擦除芯片和合并hex

“mass_program.bat”代码如下

::merge bootloader and settings
mergehex.exe --merge bootloader.hex settings.hex --output bl_temp.hex
::merge bootloader, app and softdevice
mergehex.exe --merge bl_temp.hex app.hex s132_nrf52_5.0.0_softdevice.hex --output whole.hex nrfjprog.exe --eraseall -f NRF52
nrfjprog.exe --program whole.hex --verify -f NRF52
::the following two commands are used to enable PIN RESET
::nrfjprog.exe --memwr 0x10001200 --val 0x00000015 --verify -f NRF52
::nrfjprog.exe --memwr 0x10001204 --val 0x00000015 --verify -f NRF52
nrfjprog.exe --reset -f NRF52

好了,到了这一步,就可以用利用nRF Connect或nRF Toolbox来连接设备看看是否有dfu的标志了,接下来是怎么升级,至于升级的程序(工程)怎么来,下一篇再介绍

9,将新的工程(用来升级的)编译的hex文件改名为app_new.hex,放入(替换)Script_SDK14_S132_nRF52832文件夹

10,双击“zip_generate.bat”,生成SDK14_app_s132.zip,注意这里用到了私钥priv.pem,私钥要保管好哦

“zip_generate.bat”代码如下

nrfutil.exe pkg generate --application app_new.hex --application-version 2 --hw-version 52 --sd-req 0x9D --key-file priv.pem SDK14_app_s132.zip

11,下载SDK14_app_s132.zip到手机,利用nRF Connect或nRF Toolbox升级

附图

连接

界面

使能

进入bootloader

选择升级

升级中

nRF52832 BLE_DFU空中升级OTA(二)编译下载(SDK14.2.0)的更多相关文章

  1. nRF52832 BLE_DFU空中升级OTA(三)准备升级工程(SDK14.2.0)

    准备需要加入DFU功能的工程 在工程main文件services_init函数中加入DFU服务 uint32_t err_code; // Initialize the async SVCI inte ...

  2. nRF52832 BLE_DFU空中升级OTA(一)安装软件(SDK14.2.0)

    准备工作,需要安装好几个软件,详细的过程请参考下面的文章(http://www.cnblogs.com/iini/p/9314246.html)这里说的非常详细,而且也有工具在云盘,对于初学者非常友好 ...

  3. 如何实现蓝牙空中升级BLE OTA

    如何实现BLE OTA?什么叫DFU?如何通过UART实现固件升级?又如何通过USB实现固件升级?怎么保证升级的安全性?什么叫双备份(dual bank)DFU?什么叫单备份(single bank) ...

  4. BLE空中升级 谈(二)

    BLE 空中升级谈 -- CC2541 的产品开发中OAD注意事项(续) TI CC2541支持多个硬件,多个软件对它进行空中升级,可以有不同的组合,硬件有 编号 名称 Hex 用法 1 Cc2540 ...

  5. nrf52——DFU升级OTA升级方式详解(基于SDK开发例程)

    在我们开始前,默认你已经安装好了一些基础工具,如nrfutil,如果你没有安装过请根据官方中文博客去安装好这些基础工具,连接如下:Nordic nRF5 SDK开发环境搭建(nRF51/nRF52芯片 ...

  6. nRF Connect SDK(NCS)/Zephyr固件升级详解 – 重点讲述MCUboot和蓝牙空中升级

    如何在nRF Connect SDK(NCS)中实现蓝牙空中升级?MCUboot和B0两个Bootloader有什么区别?MCUboot升级使用的image格式是怎么样的?什么是SMP协议?CBOR编 ...

  7. 从谷歌官网下载android 6.0源码、编译并刷入nexus 6p手机

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/fuchaosz/article/details/52473660 1 前言 经过一周的奋战,终于从谷 ...

  8. Nginx的平滑升级记录---适用于编译安装的Nginx

    一.查看自己的Nginx的版本号 [root@localhost sbin]# cd /usr/local/nginx/sbin/ [root@localhost sbin]# ls nginx [r ...

  9. ESP8266学习笔记1:怎样在安信可全功能測试板上实现ESP-01的编译下载和调试

    近期调试用到了安信可的ESP-01模块,最终打通了编译下载调试的整个通道,有一些细节须要记录,方便兴许的开发工作. 转载请注明:http://blog.csdn.net/sadshen/article ...

随机推荐

  1. Excel VBA Range对象基本操作应用示例

    [示例01] 赋值给某单元格[示例01-01] Sub test1()Worksheets("Sheet1").Range("A5").Value = 22Ms ...

  2. Java学习---程序设计_基础题[1]

    180813 补全没有的答案! 0. 数组排序大全[冒泡/选择/快速/插入] package com.ftl; import java.io.BufferedReader; import java.i ...

  3. Linux 下Shell的学习

    1.Shell学习 1.什么是Shell    shell是一个命令解析器,在操作系统的最外层,负责和用户对话,将用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果.2.什么是shell脚本 ...

  4. [BZOJ 1124][POI 2008] 枪战 Maf

    1124: [POI2008]枪战Maf Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 659  Solved: 259[Submit][Status ...

  5. 中石油大学统考(大学英语B)押题笔记

    二. 词汇与结构 1. I will.意为“我会的”,固定搭配. 2. get tired of 是词组“对…厌烦了”的意思. 3. — ________ is your girl friend li ...

  6. Ubuntu 12.04中MyEclipse 10.6+下载+安装+破解

    至于MyEclipse在Ubuntu的安装教程网上很多,那我为什么我还写这篇文章呢?这次重装Ubuntu之后, 在安装MyEclipse 10.6过程中遇到了一个问题,所以把MyEclipse的安装方 ...

  7. MVC中使用过滤器做权限认证需要注意的地方

    最近一项目接近尾声,正准备调试的时候发现一条原本不应该执行的SQL语句执行报错了,本就不应该执行,所以当然也就出错,找了一下,问题如下. 我这里是直接重写OnActionExecuting方法来达到目 ...

  8. vue 项目搭建笔记1

    1.首先安装node.js(傻瓜式安装,安装路径默认C盘) 2.打开node.js command prompt 3.进入想放项目的文件夹.如D:  -->回车 4.进入具体文件夹,如cd wo ...

  9. python爬虫Jenkins编译失败的日志

    背景:在Jenkins编译失败后,需要拿到Jenkins的编译失败的日志,存储在数据库中,在把数据取出来,在另外一个页面进行展示,我的思路为: 1.观看Jenkins编译失败后的控制台显示的内容 2. ...

  10. UVA 10217 A Dinner with Schwarzenegger!!!---数学

    题目链接: https://cn.vjudge.net/problem/UVA-10217 题目大意: 有若干人排队买电影票,如果某个人的生日与排在他前面的某个人的生日相同,那么他讲中奖.中奖的机会只 ...