蓝牙固件升级

一.为何要升级

蓝牙固件升级是使用手机给固件进行更新,以达到修复bug的目的,完善功能的作用。升级的大概流程是:

1.当蓝牙设备的固件需要升级时,由嵌入式开发人员提供新的固件,由服务器管理人员将固件放到服务器上。

2.用户打开手机 APP 的时候会检测到服务器有更新,请求更新蓝牙设备固件,确认更新后,手机会从服务器下载固件。

3.下载完毕后,APP 会读取固件内容,并根据升级协议将内容传到蓝牙设备里,完成升级。

我们常讲的DFUDevice Firmware Update(设备固件更新) ,OTAOver The Air(隔空升级)

二.固件升级的流程

各个厂商的设备流程可能不一致,但大同小异,这里只说大致的流程: 首先要从云端下载的固件为 .bin 后缀的文件,文件名会有一定的格式,含有固件版本号和文件 CRC32 校验值。 其次是数据分块,规定一个数据块大小比如 1024 字节,然后把升级数据进行分块,不够的就剩余多少作为一块。蓝牙一次发送的数据量是有限的,所以每次发送 20 字节的数据。这个数据要遵循升级数据格式,带指令头和校验码,下载包的数据只是这 20 字节中的一部分。所有包内数据都携带在每条升级数据指令中。 最后就是升级的过程:

  1. 连接设备,发送升级请求。

  2. 待蓝牙确认之后,开始发送数据头告知蓝牙此次发送的数据量和 CRC 校验。

  3. 开始发送升级数据。(每条数据之间间隔 20ms 为了蓝牙能够方便处理)。

  4. 等待一个块发送完就发送块结束命令。

  5. 蓝牙确认发送下一个块,返回错误则终止此次升级。

  6. 发完所有数据之后发送升级完成。

  7. 蓝牙确认则升级完成,返回错误则升级失败。

蓝牙固件升级最复杂的就在升级过程,大量的数据与蓝牙交互。DFU固件升级可以使用NRF的github开源库,

相关推荐
三佛科技-1341638421218 小时前
腕式血压计方案开发设计,腕式血压计MCU控制芯片选择
单片机·嵌入式硬件·物联网·智能家居
MetrixAeroCore19 小时前
宠物GPS项圈出海通信适配方案解析|Metrix AeroCore全球漫游IoT SIM卡
物联网
老梁agent20 小时前
Agent 对话为什么会「失忆」?ChatMemory 三种策略对比与工业选型
物联网·agent
码语智行21 小时前
MQTT 配置、依赖与使用说明
java·物联网·mt
北京耐用通信21 小时前
耐达讯自动化NY-N801网关实现Modbus转Profinet协议转换应用案例
人工智能·物联网·网络协议·自动化·信息与通信
LedgerNinja1 天前
WEEX Labs 周度观察:从“通用对话”到“自主执行”,AI 产业进入价格战与规范发展并行的下半场
大数据·人工智能·物联网
FII工业富联科技服务1 天前
智慧园区统一运营平台技术架构解析:全景3D世界模型+视频AI+物联网闭环实践
大数据·人工智能·物联网·3d·ai·制造
砍材农夫1 天前
物联网实战:Spring Boot + Netty 搭建 MQTT平台 | 多协议适配与模块化设计
java·spring boot·后端·物联网·spring
绿蕉1 天前
智能空开:物联网时代的电气安全“智慧哨兵”
物联网·智能空气开关
TDengine (老段)1 天前
TDengine SQL 解析与词法分析 — 从字符串到 AST 的转换之路
大数据·数据库·sql·物联网·时序数据库·tdengine·涛思数据