· DFU = Device Firmware Update (设备固件更新)
· OTA = Over The Air (空中升级)

(wikipedia)用于智能硬件的升级,包括软件更新、固件更新和设备管理等功能。起初,固件更新需要到设备厂商指服务中心进行。接收更新的另一种方法是将设备连入电脑端进行升级。但这两种方法的缺点是很不方便。因此,现在很多的移动设备制造商和运营商已经采纳FOTA技术为设备进行更新。如果移动设备具有FOTA功能,移动设备制造商和运营商可以将新固件通过网络向设备“推送”更新消息,这降低了固件更新的成本,提高了消费者的满意度。


本次固件升级采用的是 Secure Device Firmware Update。
安全设备固件更新(DFU)服务公开了在设备上执行设备固件更新的必要信息。该服务是由北欧半导体公司定义的专有服务,用于演示nRF5设备上的典型设备固件更新。

首先要更改蓝牙设别的状态,在蓝牙的service的characteristic中写入参数,此时蓝牙设备断开,进入Bootloader状态,并且MAC地址发生变化,末尾+1(敲黑板)

model.png

然后重新连接设备设备出现如下两个characteristic

servicechar.png

DFU Control Point

DFUControl.png

下表列出了作为响应的一部分发送的结果代码:

resultcode.png

传输init packet

DFU控制器首先检查init数据包是否已经成功传输。如果没有,DFU控制器将检查是否已部分传输。如果一些数据已经被转移,传输将继续。否则,DFU控制器发送一个创建命令来创建一个新的数据对象,然后传输init包。当初始包可用时,DFU控制器发出一个执行命令来启动init包的验证。

msc_inline_mscgraph_5.png

传输firmware image

一个固件镜像被分割成几个连续传输的数据对象。如果数据对象的传输失败(例如,由于断电),则可以继续传输而不是重新启动。因此,DFU控制器首先选择所发送的最后一个数据对象,并检查它是否完整和有效。如果是,控制器将发出执行命令,然后继续使用下一个数据对象进行传输。否则,DFU控制器发送一个Create命令来创建一个新的数据对象(因此,如果这个数据对象的传输还没有开始,或者接收到的数据被破坏了),然后传输下一个数据对象。
当所有数据包被传输时,DFU控制器发出一个执行命令来触发实际固件更新。
DFU控制器负责跟踪进度。对每个Select命令的响应包含关于最大对象大小、当前偏移量和CRC的信息。例如,如果图像大小为10kb,最大对象大小为4 kB,则必须传输3个数据对象。如果返回的偏移量是6kb,DFU控制器知道当前对象是转移的第二个对象,并且该对象没有被完全传输。

msc_inline_mscgraph_6.png

Talk is cheap,show you the code.
最近根据NordicSemiconductor的Android-DFU-Library写的一个最简单的升级案例:
https://github.com/ftc300/DFU_Demo_With_NordicsemiLib

参考资料:
Library documentation
nordicsemi

作者:ftc300_carl
链接:https://www.jianshu.com/p/67ef0208d935
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

固件升级(DFU/OTA)相关推荐

  1. QCC304X/QCC514X DFU/OTA升级精讲

    本例适用与芯片:QCC304X QCC514X,其它系列原理应该相似 说明: Earbud芯片的无线OTA(DFU)有两种模式:前端模式和后端模式: 前端模式:即耳机可以连听音乐边进行OTA,固件传输 ...

  2. OpenMV固件升级(DFU)

    一.为什么要对openmv进行固件升级 OpenMV项目是一直更新的,用户可以升级固件来保持更新. 每次更新,都会修复bug,增加新的功能. 有两种方式升级固件,一种是IDE自带的功能,使用bootl ...

  3. [嵌入式框架][nrf51822][SDK12.3] BLE分层设计 DFU OTA 透传(NUS) 电量 设备信息 BLE_HID

    一. 目录结构如下 将每个功能抽离处理,使文件起步代码显得干净清晰.官方提供的文件,行数1000+起步. 二. BLE服务创建和事件管理 简化后只有700+,仅保留协议栈事件处理,白名单,对等管理器, ...

  4. Nordic DFU OTA参考资料

    本文记录的是Nordic官方的帮助文件,里面有OTA有关的参考资料的查找方法. 链接:https://infocenter.nordicsemi.com/index.jsp 图示:

  5. DFU(OTA)内存划分

    这里以keil为例. 我们对嵌入式软件进行空中升级的时候,除了在Target中进行设置 在以下地方也要记得设置成一样 比如引导程序为一个独立程序,划分区域为0xc000-0x50000(其中0x00- ...

  6. 使用 “恢复模式” 或 “DFU 模式” 来更新和恢复 iOS 固件

    如何手动更新完整的 iPhone 和 iPad 系统软件(iOS/iPadOS) 2021.09.23 更新:支持 iOS/iPadOS 15 系列. 请访问原文链接:https://sysin.or ...

  7. CSR8670学习笔记:OTA升级固件

    为了方便大家学习,现与我爱蓝牙网联合推出[QCC300x/CSR867x/QCC30xx/QCC51xx开发板]. 技术交流QQ群号:743434463 开发板会员QQ群号:725398389(凭订单 ...

  8. 机智云OTA实践教程

    机智云的官方OTA帮助文档说得很不清楚,如果你是第一次尝试OTA看完文档你绝对晕了,这里SimonLiu梳理一下ESP8266 SOC模式的机智云OTA流程,也顺便当做记录,下次查找方便. 首先以下图 ...

  9. 【AT指令使用】安信可ESP-12S/ESP32S模组AT固件应用之微信小程序热点配网OTA升级

    目录 前言 一.Web 服务配网 二.操作过程 1.烧录带有Web服务功能的AT固件 2.Web服务配网过程 2.1 ESP-12S/ESP32-S搭建Web服务器 2.2 微信小程序部分的操作 3. ...

  10. EFR32如何在应用程序中通过BLE 进行OTA升级

    Bluetooth SDK里的soc-empty例程里面包含了一个AppLoader,可以用OTA_DFU(Over The Air -Device Firmware Upgrade)的方式升级应用程 ...

最新文章

  1. 进击谷歌:多线程下程序执行顺序怎么稳定不乱?
  2. c语言switch设计计算器,求助。。关于用switch编写简易计算器
  3. (转) mysqldumpslow使用说明总结
  4. 【NLP】使用NLP检测和对抗AI假新闻
  5. spark笔记之Scala中的协变、逆变、非变
  6. 获得执行计划方法三-sql_trace
  7. Mysql(8)_存储引擎之InnoDB
  8. oracle:plsql学习总结(oracle database 10g sql 开发指南)
  9. 【BZOJ4325】NOIP2015 斗地主 搜索+剪枝
  10. 易我电脑迁移 2022
  11. Unhandled rejection Error: EACCES: permission denied, open '/Users
  12. 在线客服——各第三方的收费标准及服务提供
  13. 背单词的方法:抗遗忘超自然语境记单词01
  14. 国外邮箱哪家好?好用的公司邮箱怎么申请?
  15. 七星彩长奖表图_新版够力七星彩奖表
  16. linux之排序sort命令详解
  17. idea实现svn拉分支和合并分支的教程
  18. 国产数据库名录和产品信息一览-2023
  19. 智慧病房解决方案(全)
  20. Outlook邮箱添加163邮箱

热门文章

  1. Android videoView闪屏
  2. 通过c#打开pdf文件
  3. Learning Center Probability Map for Detecting Objects in Aerial Images 论文学习笔记
  4. RN系列:Android原生与RN如何交互通信
  5. 【原创】谈谈个人与平台
  6. 用可视化解构BERT,我们从上亿参数中提取出了6种直观模式
  7. 软件测试周刊(第50期):归结起来,焦虑的原因就两条:想同时做很多事情,又想立即看到效果。
  8. python拼图游戏代码_Python图像处理——人物拼图游戏
  9. 易中天∑品读汉代风云人物
  10. 对《骨骼运动变换的数学计算过程详解》一文的理解