Edit online

通信协议原理

AICUPG 镜像升级和烧录功能使用自定义的通信协议,该通信协议基于 USB Bulk 传输进行了自定义扩展。

从协议层次架构上看,通信协议分为两层,分别为:

  • 传输层

  • 应用层

通信协议:主机发送信协议:主机接收所示。

1. 通信协议:主机发送
2. 信协议:主机接收

USB Bulk 传输协议仅定义了 Bulk 传输的基本行为和数据格式,其他具体应用协议可以在其基础之上进行扩展。

AICUPG 的传输层对 USB Bulk 的 CBW(Command Block Wrapper) 中自定义的命令数据块(Command Block) 部分进行了扩展定义,实现了 WRITE/READ 两个基本操作命令。具体如表中 bCommand 所示。WRITE 操作用于主机发送数据包,READ 操作用于主机读取数据包。 每个数据包的最大长度为 4KB。

1. CBW 扩展定义
字节 说明
dCBWSignature 0 ~ 3 魔数,标识 CBW 数据包,值为 “USBC”
dCBWTag 4 ~ 7 CBW 包的编号
dCBWDataTransferLength 8 ~ 11 CBW 之后紧跟的传输数据长度
bmCBWFlags 12

0x00:数据传输方向为主机到设备

0x80:数据传输方向为设备到主机

bCBWLUN 13 没有使用,可忽略
bCBWCBLength 14 CBW 命令块有效长度,这里固定为 0x01
bCommand 15

0x01: WRITE 表示写操作

0x02: READ 表示读操作

Reserved 16 ~ 30 -

AICUPG 应用层协议中,对 CMD HEADERRESP HEADER 定义如下表所示。

2. CMD HEADER 数据格式
字节 说明
dMagic 0 ~ 3 魔数,值为 “UPGC”
bProtocol 4

自定义协议类型

0x01: USB 升级协议

bVersion 5

自定义协议的版本

0x01: Version 1

bCommand 6 命令控制字
Reserved 7 -
dDataLength 8 ~ 11 CMD HEADER 之后传输给设备的数据长度
dCheckSum 12 ~ 15 CMD HEADER 前 12 字节 32-bit Checksum
3. RESP HEADER 数据格式
字节 说明
dMagic 0 ~ 3 魔数,值为 “UPGR”
bProtocol 4

自定义协议类型

0x01: USB 升级协议

bVersion 5

自定义协议的版本

0x01: Version 1

bRespCommand 6 所响应的命令
bStatus 7

命令执行状态

0x00: OK

0x01: Failed

dDataLength 8 ~ 11 RESP HEADER 之后传输的数据长度
dCheckSum 12 ~ 15 RESP HEADER 前 12 字节 32-bit Checksum

应用层协议定义了下列用于镜像升级的命令。

4. 镜像升级所用的命令
命令 说明
GET_HWINFO 0x00 获取硬件相关信息
SET_FWC_META 0x10 发送组件(Firmware Component)的描述信息
GET_BLOCK_SIZE 0x11 获取传输的数据块大小, 发送的有效数据须以该块大小为单位
SEND_FWC_DATA 0x12 发送组件数据
GET_FWC_CRC 0x13 获取设备端对所接收数据计算的 CRC 值, 以确认传输是否出错
GET_FWC_BURN_RESULT 0x14 获取组件烧录后,设备端的校验结果
GET_FWC_RUN_RESULT 0x15 获取组件在运行之后的返回结果