上一篇配置好了开发环境,现在就可以试着跑一下例程了,这里需要两个例程,一个是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. 获取当前网页的的url

    如果测试的url地址是http://www.test.com/testweb/default.aspx, 结果如下: Request.ApplicationPath:                / ...

  2. ORM------多表操作

    上面介绍了单表操作 下面就好比我们的sql语句这只能满足于我们的一些简单的操作不能适应我们更多的需要 所以我们需要用到更多的需求来进行我们的关系的建立以及查找 其实ORM语句就对应着我们的sql语句  ...

  3. VS2013 添加 ILDasm

    1.找到ILDasm.exe文件: 打开C:\Program Files\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools 2.vs外部工具添加 工 ...

  4. Java学习---Collection的学习

    Collection基本方法的使用 package com.huawei.ftl; import java.io.File; import java.io.FileInputStream; impor ...

  5. 沉淀,再出发:sublime中快捷键和html标签的使用和生成以及使用markdown

    沉淀,再出发:sublime中快捷键和html标签的使用和生成以及使用markdown 一.前言 工欲善其事,必先利其器.在软件代码的编写中,一定要知道IDE或者编辑器的快捷键的使用,这样可以提高很多 ...

  6. linux gcc 区分32位或64位编译 && 请问arm存储,是以小端格式还是以大端格式?

    linux gcc 区分32位或64位编译   Linux系统下程序如何区分是64位系统还是32位系统 经过对include的翻查,最后确定gcc以__i386__来 进行32位编码,而以__x86_ ...

  7. OpenCV&&python_图像平滑(Smoothing Images)

    Goals 学习用不同低通滤波方法模糊图像(Blur imagess with various low pass filter) 用用定制的滤波器处理图像(Apply custom-made filt ...

  8. Analysis of Algorithms

    算法分析 Introduction 有各种原因要求我们分析算法,像预测算法性能,比较不同算法优劣等,其中很实际的一条原因是为了避免性能错误,要对自己算法的性能有个概念. 科学方法(scientific ...

  9. Chapter 4 Left Outer Join in MapReduce

    4.1 Introdution Consider a company such as Amazon, which has over 200 millions of users and possibly ...

  10. angularJs的工具方法3

    一.angular.version          判断angular的版本 console.log(angular.version); 二.angular.equals           判断两 ...