基于Nordic芯片的蓝牙固件升级流程
保密等级:C级(秘密)
版本号 | 修改人员 | 修改时间 | 修改内容 |
---|---|---|---|
V1.0 | 胡伟 | 20220105 | 初始化文档 |
V1.1 | 胡伟 | 20230223 | 更新服务器判断逻辑 |
1. 概述
基于Nordic 的蓝牙固件升级流程(以下称本协议)用以规范适用于符合行者XOSS硬件开放平台的设备的固件更新,包括版本检查,固件升级的命令和数据传输。
2. 蓝牙服务和特征
2.1 命令服务
本协议是基于开放式的服务通道,服务通道UUID为:0x6E400001-B5A3-F393-E0A9-E50E24DCCA9E,在该服务下,我们定义了基础特征来完成命令控制。
特征名 | UUID | 描述 | 属性 |
---|---|---|---|
命令 | 0x6E400004-B5A3-F393-E0A9-E50E24DCCA9E | 命令特征,用于APP和硬件之间发送和接受命令 | Read&Write |
该特征通道将用来控制硬件设备的进入固件升级流程。
2.2 设备信息服务DIS
通过标准蓝牙设备信息服务(DIS)来获取设备当前信息,包括设备生产商,设备型号,串号,硬件版本号,固件版本号。
无论是正常模式下还是固件升级模式下,都需要提供DIS服务。
Name = 广播名称
MFN = Manufacturer Name String
SN = Serial Number String
Model = Model Number String
Hardware = Hardware Revision String
Firmware = Firmware Revision String
2.3 DFUS和ANCS
DFUS和ANCS是Nordic官方定义升级通道和消息通知通道。
服务 | UUID |
---|---|
DFUService | 00001530-1212-EFDE-1523-785FEABCD123 |
ANCSService | 7905F431-B5CE-4E99-A40F-4B1E122D00D0 |
3. 设备升级流程
3.1 设备固件版本检查流程
客户端检查流程
服务器判断流程:
通过客户端提供的生产商,型号,硬件版本号,来比对固件版本号是否需要更新;
如果需要更新则,给最新的固件给客户端。
3.2 DFU 设备获取最新固件流程
服务端判断流程:
- 检测请求的设备名称是否符合以下文档中的设备定义:
- 云端通过设备DIS信息确定型号和版本,给出最新的固件版本。
3.2 设备固件版本升级流程
App端下载最新的固件
连接设备是如果处于设备正常状态,则通过DFU命令出发设备进入DFU状态,如果已经是DFU状态直接进入第四步;
App端通过名称识别自动连接DFU设备;
进入Nordic DFU升级流程。