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

准备需要加入DFU功能的工程

在工程main文件services_init函数中加入DFU服务

 1 uint32_t err_code;
 2
 3 // Initialize the async SVCI interface to bootloader.
 4 err_code = ble_dfu_buttonless_async_svci_init();
 5 //APP_ERROR_CHECK(err_code);
 6 if(NRF_ERROR_NO_MEM != err_code)
 7 {
 8     ble_dfu_buttonless_init_t dfus_init =
 9     {
10         .evt_handler = ble_dfu_evt_handler
11     };
12
13     err_code = ble_dfu_buttonless_init(&dfus_init);
14     APP_ERROR_CHECK(err_code);
15 }

加入DFU事件处理函数

 1 // YOUR_JOB: Update this code if you want to do anything given a DFU event (optional).
 2 /**@brief Function for handling dfu events from the Buttonless Secure DFU service
 3  *
 4  * @param[in]   event   Event from the Buttonless Secure DFU service.
 5  */
 6 static void ble_dfu_evt_handler(ble_dfu_buttonless_evt_type_t event)
 7 {
 8     switch (event)
 9     {
10         case BLE_DFU_EVT_BOOTLOADER_ENTER_PREPARE:
11             NRF_LOG_INFO("Device is preparing to enter bootloader mode.");
12             // YOUR_JOB: Disconnect all bonded devices that currently are connected.
13             //           This is required to receive a service changed indication
14             //           on bootup after a successful (or aborted) Device Firmware Update.
15             break;
16
17         case BLE_DFU_EVT_BOOTLOADER_ENTER:
18             // YOUR_JOB: Write app-specific unwritten data to FLASH, control finalization of this
19             //           by delaying reset by reporting false in app_shutdown_handler
20             NRF_LOG_INFO("Device will enter bootloader mode.");
21             break;
22
23         case BLE_DFU_EVT_BOOTLOADER_ENTER_FAILED:
24             NRF_LOG_ERROR("Request to enter bootloader mode failed asynchroneously.");
25             // YOUR_JOB: Take corrective measures to resolve the issue
26             //           like calling APP_ERROR_CHECK to reset the device.
27             break;
28
29         case BLE_DFU_EVT_RESPONSE_SEND_ERROR:
30             NRF_LOG_ERROR("Request to send a response to client failed.");
31             // YOUR_JOB: Take corrective measures to resolve the issue
32             //           like calling APP_ERROR_CHECK to reset the device.
33             APP_ERROR_CHECK(false);
34             break;
35
36         default:
37             NRF_LOG_ERROR("Unknown event from ble_dfu_buttonless.");
38             break;
39     }
40 }

加入几个必要的文件到工程

SDK_14.2.0工程\components\ble\ble_services\ble_dfu下的

SDK_14.2.0工程\components\libraries\bootloader\dfu下的

并加入以下头文件路径

SDK_14.2.0工程\components\libraries\bootloader\dfu

SDK_14.2.0工程\components\libraries\svc

Main.c 头文件中加入

#include "ble_dfu.h"

记得修改sdk_config.h中NRF_SDH_BLE_VS_UUID_COUNT

1 // <o> NRF_SDH_BLE_VS_UUID_COUNT - The number of vendor-specific UUIDs.
2 #ifndef NRF_SDH_BLE_VS_UUID_COUNT
3 #define NRF_SDH_BLE_VS_UUID_COUNT 1    //默认为0
4 #endif 

开启RTT打印LOG

1 //==========================================================
2 // <e> NRF_LOG_ENABLED - Logging module for nRF5 SDK
3 //==========================================================
4 #ifndef NRF_LOG_ENABLED
5 #define NRF_LOG_ENABLED 1
6 #endif

以及

1 //==========================================================
2 // <e> NRF_LOG_BACKEND_RTT_ENABLED - nrf_log_backend_rtt - Log RTT backend
3 //==========================================================
4 #ifndef NRF_LOG_BACKEND_RTT_ENABLED
5 #define NRF_LOG_BACKEND_RTT_ENABLED 1
6 #endif

编译一下,下载观察RTT信息修改RAM地址,再次编译后没有问题,就可以用新生成的hex文件来制作升级zip了。

原文地址:https://www.cnblogs.com/jiangjiu/p/10084222.html

时间: 2024-11-09 00:07:24

nRF52832 BLE_DFU空中升级OTA(三)准备升级工程(SDK14.2.0)的相关文章

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

准备工作,需要安装好几个软件,详细的过程请参考下面的文章(http://www.cnblogs.com/iini/p/9314246.html)这里说的非常详细,而且也有工具在云盘,对于初学者非常友好.我这里只是把步骤列出来,仅供参考 安装软件: 安装"make"编译环境 1,双击"make-3.81.exe"安装(下载地址http://gnuwin32.sourceforge.net/packages/make.htm) 2,双击"coreutils-5

OTA制作及升级过程笔记【转】

本文转载自:http://www.it610.com/article/5752570.htm 1.概述 1.1   文档概要 前段时间学习了AndroidRecovery模式及OTA升级过程,为加深理解和防止以后遗忘,所以写这篇文档进行一个总结和梳理,以便日后查阅回顾.文档主要包括两部分,第一部分为OTA升级包的制作过程分析,第二部分为Recovery模式下OTA升级包安装过程的分析,其中包括Recovery模式分析及服务流程. 1.2   参考文献 <Recovery 开发指导> <A

完全升级OTA包的制作流程(上)

1,    ./mk otapackage 首先介绍一下update.zip update.zip包的结构如下: RECOVERY$ tree -L 2 ├── kernel ├── ramdisk └── RAMDISK ├── advanced_meta_init.rc ├── data ├── default.prop ├── dev ├── etc ├── init ├── init.factory.rc ├── init.goldfish.rc ├── init.mt6516.rc ├

oracle数据库psu升级(本实验是将10.2.0.3.12升级到10.2.0.3.15)

psu升级(本实验是将10.2.0.3.12升级到10.2.0.3.15) 一.解压安装包自定义存放路径为/home/oracle/yjb/psu/10.2.0.3.15cd /home/oracle/yjb/psu/10.2.0.3.15unzip p6880880_112000_04-SEP-2015_Linux-x86-64.zipunzip p20760997_112030_15_Linux-x86-64.zip -d 1120315 二.检查psu补丁是否有冲突/home/oracle

APMServ升级php 与 Wamp升级PHP版本到5.3

方法一:(我亲测试,没问题)首先下载:php-5.3.1-Win32-VC6-x86.ziphttp://windows.php.net/downloads/releases/archives/ 解压后,得到一个目录. 然后将原来 php目录中的:ext 目录 extras目录复制过来.遇到重复文件,不要复盖. 然后将原来的php目录中的:libmcrypt.dlllibmhash.dlllibmysql.dll复制过来. 接着将原来的php目录先备份一下, 然后删除.将5.3的文件全部复制到p

React Native升级指南|v0.40+升级适配经验与心得

尊重版权,未经授权不得转载 本文出自:http://blog.csdn.net/fengyuzhengfan/article/details/54585899 React Native作为一个有上千开发者参与的开源项目,自从2015年3月27日第一版发布以来到现在已经有147次版本发布了,平均起来几乎每周都会有新的版本发布.随着一次次版本的迭代,React Native也逐渐稳定,版本发布频率保持在了每一到两周一次.新版本不停的迭代对于React Native开发者来说,及时升级React Na

云端一体化差分升级,AliOSThings物联网升级“利器”

摘要: 随着物联网的日益发展,OTA升级逐渐成为物联网设备的刚性需求,目前物联网设备种类繁多,但并未提供统一的OTA升级方案,针对日益发展的物联网设备,开发者迫切需要一套云端一体化的OTA升级方案来满足快速迭代的产品开发周期,降低产品开发和部署的成本,同时针对物联网低功耗和省流量的场景,AliOS Things推出物联网设备的升级"利器":云端一体化的差分+安全升级,可以快速修复软件漏洞,更新系统,解决了用户开发部署难,售后维护成本高,升级下载流量大,升级不安全的痛点问题. 1.1 O

Android studio 程序升级和sdk manager 升级方法

在中国使用android有点郁闷,经常被屏蔽.使用一下方法 android studio升级时提示 Connection failed. Please check your network connection and try again 2013年02月16日 ⁄ 综合 ⁄ 共 322字 ⁄ 字号 小 中 大 ⁄ 评论关闭 原文地址 http://www.eyeapk.com/android-studio-update.html Mac OSX中修改文件路径为 bin/idea.vmoptio

三维力控组态软件7.0 开发+运行 无限点 USB加密狗批发

三维力控组态软件7.0 开发+运行 无限点   USB加密狗 长期批发,量大价优,加税点可开正规机打发票 支持主流操作系统 ForceControl V7.0 是一个完全集成的工业控制软件产品,完全兼容微软的32/64位Windows 7及Windows Server 2008操作系统,通过提供可靠.灵活.高性能的监控系统平台,以及简单易用的配置工具和强大的功能使您能够针对各种规模的应用进行快速开发并部署. 丰富的图形处理能力 通过ForceControl V7.0提供的组态开发环境,系统集成工