概述
1. 升级介绍
蓝牙固件升级是使用手机给固件进行更新,以达到修复 bug 的目的,完善功能的作用。升级的大概流程是:
- 当蓝牙设备的固件需要升级时,由嵌入式开发人员提供新的固件,由服务器管理人员将固件放到服务器上。
- 用户打开手机 APP 的时候会检测到服务器有更新,请求更新蓝牙设备固件,确认更新后,手机会从服务器下载固件。
- 下载完毕后,APP 会读取固件内容,并根据升级协议将内容传到蓝牙设备里,完成升级。
DFU = Device Firmware Update (设备固件更新)
OTA = Over The Air (空中升级)
2. 升级流程
各个蓝牙设备不尽相同,以下是我测试设备的升级流程:
2.1 OTA下载固件
从云端下载的固件为 .bin 后缀的文件,文件名会有一定的格式,含有固件版本号和文件 CRC32 校验值。
2.2 数据分块
规定一个数据块大小比如 2048 字节,然后把升级数据进行分块,不够的就剩余多少作为一块。蓝牙一次发送的数据量是有限的,所以每次发送 20 字节的数据。这个数据要遵循升级数据格式,带指令头和校验和,下载包的数据只是这 20 字节中的一部分。所有包内数据都携带在每条升级数据指令中。
2.3 升级过程
- 连接设备,发送升级请求。
- 待蓝牙确认之后,开始发送数据头告知蓝牙此次发送的数据量和 CRC 校验。
- 开始发送升级数据。(每条数据之间间隔 20ms 为了蓝牙能够方便处理)。
- 等待一个块发送完就发送块结束命令。
- 蓝牙确认发送下一个块,返回错误则终止此次升级。
- 发完所有数据之后发送升级完成。
- 蓝牙确认则升级完成,返回错误则升级失败。
3. 流程图
4. 总结
蓝牙升级最复杂的就在升级过程,大量的数据与蓝牙交互,这时最好记录发送到升级数据的那一部分,可以给用户展示升级的进程。
作者:zhangferry
链接:https://juejin.im/post/5cb6a852f265da03ad054966
最后
以上就是饱满万宝路为你收集整理的蓝牙设备固件升级的全部内容,希望文章能够帮你解决蓝牙设备固件升级所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复