MCU 通用文件下载

更新时间:2024-07-30 06:58:36下载pdf

区别于 MCU OTA 文件升级服务,该功能是 MCU 主动请求下载文件。

下载启动(0x1E)

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x1e
数据长度 2 N
数据 52
  • Data[0]:子命令,0x00,请求信息。
  • Data[1-n]:{"f":"calendar.bin","p":"gps?in=567","o":5678}
    参数说明:
    • f:文件名,字符串类型。
    • p:下载参数,无参数可传空字符,字符串类型。
    • o:文件偏移地址,可指定偏移下载,用于断点下载,整型。
  • Data[0]:子命令,0x01,继续下载。
  • Data[0]:子命令,0x02,停止下载。
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

MCU 发送示例

  • 子命令,0x00,请求信息:

    55 aa 00 1e 00xx 00 xxxxxxxxxxxxxxxx XX
    
  • 子命令,0x01,继续下载:

    55 aa 00 1e 0001 01 XX
    
  • 子命令,0x02,停止下载:

    55 aa 00 1e 0001 02 XX
    

模组返回信息

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x1e
数据长度 2 0x0009
数据 9
  • Data[0]:0x10,文件信息获取成功
    Data[1-4]:文件长度,0x000013CF
    Data[5-8]:文件 CRC32,0xC20A5FBB
  • Data[0]:0x11,文件信息获取失败
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

模组返回示例

  • 子命令,0x10,文件信息获取成功:

    55 aa 00 1e 0001 10 XX
    
  • 子命令,0x11,文件信息获取失败,停止下载:

    55 aa 00 1e 0001 11 XX
    

文件传输(0x1F)

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x1f
数据长度 2 0x0044(包偏移 + 数据长度)
数据 4
  • Data[0-3]:数据包偏移,0x00000000
  • Data[4-n]:实际下载数据
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

示例

下载文件大小为 530 字节,每个数据包固定长度 256 字节。

  • 中间包:

    55 AA 00 1f 01 04 00000000 xxx...xxx XX
    55 AA 00 1f 01 04 00000100 xxx...xxx XX
    
  • 最后一包,包偏移 0x00000212,数据包大小 0 字节:

    55 AA 00 1f 00 04 00000212 XX
    

MCU 返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x1f
数据长度 2 0x0000/0x0001
数据 1 Data[0]:
  • 00:MCU CRC32 校验成功
  • 01:MCU CRC32 校验失败
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

示例

  • 中间包回复:

    55 AA 00 1f 0000 0C          // 中间接收一包数据成功
    
  • 最后一包回复:

    55 AA 00 1f 0001 00 0D     // MCU 校验文件 CRC32 成功
    55 AA 00 1f 0001 01 0E     // MCU 校验文件 CRC32 失败
    

查询文件下载百分比(0xC3)

只要是文件下载,就能查询百分比,包括 Schema 文件、NB-IoT 升级文件、MCU 升级文件和 MCU 通用文件下载。任何一个文件都有下载百分比。

MCU 发送信息

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xc3
数据长度 2 0x0000
数据 0 0
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

MCU 发送示例

55 aa 00 c3 00 00 c2

模组返回信息

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xC3
数据长度 2 0x0002
数据 2 下载状态与百分比
BYTE[0] 1
  • 0x00:无下载
  • 0x01:正在下载
BYTE[1] 1 下载百分比(0-100)
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

示例

55 aa 00 c3 00 01 01 18 dc