nRF52832 BLE_DFU空中升级OTA(三)准备升级工程(SDK14.2.0)
准备需要加入DFU功能的工程
在工程main文件services_init函数中加入DFU服务
- uint32_t err_code;
- // Initialize the async SVCI interface to bootloader.
- err_code = ble_dfu_buttonless_async_svci_init();
- //APP_ERROR_CHECK(err_code);
- if(NRF_ERROR_NO_MEM != err_code)
- {
- ble_dfu_buttonless_init_t dfus_init =
- {
- .evt_handler = ble_dfu_evt_handler
- };
- err_code = ble_dfu_buttonless_init(&dfus_init);
- APP_ERROR_CHECK(err_code);
- }
加入DFU事件处理函数
- // YOUR_JOB: Update this code if you want to do anything given a DFU event (optional).
- /**@brief Function for handling dfu events from the Buttonless Secure DFU service
- *
- * @param[in] event Event from the Buttonless Secure DFU service.
- */
- static void ble_dfu_evt_handler(ble_dfu_buttonless_evt_type_t event)
- {
- switch (event)
- {
- case BLE_DFU_EVT_BOOTLOADER_ENTER_PREPARE:
- NRF_LOG_INFO("Device is preparing to enter bootloader mode.");
- // YOUR_JOB: Disconnect all bonded devices that currently are connected.
- // This is required to receive a service changed indication
- // on bootup after a successful (or aborted) Device Firmware Update.
- break;
- case BLE_DFU_EVT_BOOTLOADER_ENTER:
- // YOUR_JOB: Write app-specific unwritten data to FLASH, control finalization of this
- // by delaying reset by reporting false in app_shutdown_handler
- NRF_LOG_INFO("Device will enter bootloader mode.");
- break;
- case BLE_DFU_EVT_BOOTLOADER_ENTER_FAILED:
- NRF_LOG_ERROR("Request to enter bootloader mode failed asynchroneously.");
- // YOUR_JOB: Take corrective measures to resolve the issue
- // like calling APP_ERROR_CHECK to reset the device.
- break;
- case BLE_DFU_EVT_RESPONSE_SEND_ERROR:
- NRF_LOG_ERROR("Request to send a response to client failed.");
- // YOUR_JOB: Take corrective measures to resolve the issue
- // like calling APP_ERROR_CHECK to reset the device.
- APP_ERROR_CHECK(false);
- break;
- default:
- NRF_LOG_ERROR("Unknown event from ble_dfu_buttonless.");
- break;
- }
- }
加入几个必要的文件到工程
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
- // <o> NRF_SDH_BLE_VS_UUID_COUNT - The number of vendor-specific UUIDs.
- #ifndef NRF_SDH_BLE_VS_UUID_COUNT
- #define NRF_SDH_BLE_VS_UUID_COUNT 1 //默认为0
- #endif
开启RTT打印LOG
- //==========================================================
- // <e> NRF_LOG_ENABLED - Logging module for nRF5 SDK
- //==========================================================
- #ifndef NRF_LOG_ENABLED
- #define NRF_LOG_ENABLED 1
- #endif
以及
- //==========================================================
- // <e> NRF_LOG_BACKEND_RTT_ENABLED - nrf_log_backend_rtt - Log RTT backend
- //==========================================================
- #ifndef NRF_LOG_BACKEND_RTT_ENABLED
- #define NRF_LOG_BACKEND_RTT_ENABLED 1
- #endif
编译一下,下载观察RTT信息修改RAM地址,再次编译后没有问题,就可以用新生成的hex文件来制作升级zip了。
nRF52832 BLE_DFU空中升级OTA(三)准备升级工程(SDK14.2.0)的更多相关文章
- nRF52832 BLE_DFU空中升级OTA(二)编译下载(SDK14.2.0)
上一篇配置好了开发环境,现在就可以试着跑一下例程了,这里需要两个例程,一个是bootloader的,一个是应用程序的,其路径分别为: bootloader:SDK_14.2.0工程\examples\ ...
- nRF52832 BLE_DFU空中升级OTA(一)安装软件(SDK14.2.0)
准备工作,需要安装好几个软件,详细的过程请参考下面的文章(http://www.cnblogs.com/iini/p/9314246.html)这里说的非常详细,而且也有工具在云盘,对于初学者非常友好 ...
- OTA制作及升级过程笔记【转】
本文转载自:http://www.it610.com/article/5752570.htm 1.概述 1.1 文档概要 前段时间学习了AndroidRecovery模式及OTA升级过程,为加深理 ...
- APMServ升级php 与 Wamp升级PHP版本到5.3
方法一:(我亲测试,没问题)首先下载:php-5.3.1-Win32-VC6-x86.ziphttp://windows.php.net/downloads/releases/archives/ 解压 ...
- 【转】升级还是权谋?从USB PD 2.0到3.0
原文出处 http://www.eetop.cn/blog/html/43/n-433743.html 如同iPhone的出现,才让智能机真正主导手机市场一样,Type-C口发布后,USB PD才正式 ...
- 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 ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:3、微服务应用程序版本升级:全站升级和局部模块升级。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
- 转载: Centos7 升级python3,解决升级后不兼容问题
Centos7配置更新国内yum源 http://blog.csdn.net/qingguiyu/article/details/50721956 Centos7 升级python3,解决升级后不兼容 ...
- Ubuntu升级软件和ubuntu升级系统的命令
sudo apt-get update: 升级安装包相关的命令,刷新可安装的软件列表(但是不做任何实际的安装动作) sudo apt-get upgrade: 进行安装包的更新(软件版本的升级) su ...
随机推荐
- linux-软件下载安装
RPM 安装 rpm -ivh 包全名 :-i(install):安装:-v(verbose):显示详细信息:-h(hash):显示进度: rpm -Uvh 包全名:-U(upgrate):升级 rp ...
- ASP.NET中的身份验证有那些?你当前项目采用什么方式验证请解释
ASP.NET身份验证模式包括Windows.Forms(窗体).Passport(护照)和None(无). l Windows身份验证—常结合应用程序自定义身份验证使用使用这种身份验证模式时,AS ...
- Windows Server 2008 R2 /2012 修改密码策略(摘抄 原文地址 https://www.cnblogs.com/mili3/p/7799347.html)
今天建了域环境,在添加新用户的时候,发现用简单的密码时域安全策略提示密码复杂度不够,于是我就想在域安全策略里面把密码复杂度降低一点. 问题: 在“管理工具 >> 本地安全策略 > ...
- 多变量线性回归 matlab
%multivariate_linear_regression data=load('data.txt'); x=data(:,1:2); y=data(:,3); m=length(x(:,1)); ...
- Server Host Cannot be null解决方法
在用打开Services Directory application 或者访问 某个已发布的地图服务时,出现"Server Host Cannot be null"的错误. 问题的 ...
- BZOJ 1013 球形空间产生器sphere 高斯消元
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1013 题目大意: 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困 ...
- selenium + python自动化测试unittest框架学习(七)随机生成姓名
在自动化测试过程中经常要测试到添加用户的操作,每次都要输入中文,原本是找了十几个中文写成了列表,然后从列表中随机取出填入用户名文本框中,随着测试的增加,发现同名的人搜索出来一大堆,最后在网上找了个随机 ...
- Sublime插件WakaTime使用
1.安装WakaTime插件 ctrl+shift+p-->输入pi-->回车-->输入wakaTime-->回车(进行安装) 安装好后会显示输入api key的输入栏 (也可 ...
- JS页面刷新
setTimeout('location.reload()',1000);//页面刷新 1000为延时的毫秒数 1.setInterval() - 间隔指定的毫秒数不停地执行指定的代码. 2.se ...
- sqoop2启动client异常
java环境: java version "10.0.1" ,启动sqoop-shell端或者是sqoop-client端异常,异常如下: [root@hadoop1 home] ...