问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

AICUPG通信协议原理详解

创作时间:
作者:
@小白创作中心

AICUPG通信协议原理详解

引用
1
来源
1.
https://artinchip.com/knowledge/oxy_ex-1/topics/%E9%80%9A%E4%BF%A1%E5%8D%8F%E8%AE%AE%E5%8E%9F%E7%90%86-luban.html

AICUPG通信协议是一种基于USB Bulk传输的自定义通信协议,主要用于镜像升级和烧录功能。该协议分为传输层和应用层,通过扩展USB Bulk传输协议的CBW命令块,实现了WRITE和READ两个基本操作命令。应用层协议则定义了用于镜像升级的多个命令,包括获取硬件信息、发送组件描述信息、获取传输数据块大小等。

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 HEADER和RESP 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
获取组件在运行之后的返回结果
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号