基于串口的XYZmodem文件传输协议

1,280 阅读2分钟

1 异步文件传输协议

1.1 XYZmodem文件传输协议

  • XModem:Xmodem 协议最早是以 128 字节块的形式传输数据,并且每个块都使用校验和进行错误检测。后面衍生出使用循环冗余校验方式 (CRC16) 和支持 1024 字节块的传输协议 (Xmodem-1k)。
  • Ymodem:是Xmodem的改良版,速度比Xmodem要快。以 1024 字节块的形式传输数据,并且支持传输多个文件。一般 Ymodem 协议是使用 CRC16 进行校验。
  • Zmodem:采用了串流式(streaming)传输方式,传输速度较快,而且还具有自动改变区段大小和断点续传、快速错误侦测等功能。这是目前最流行的文件传输协议。

1.2 传输协议特点

  • Xmodem 和 Ymodem 协议传输由接收程序发送程序完成。
  • 先由接收程序发送协商字符协商校验方式,协商通过之后,发送程序开始发送数据包。
  • 接收程序接收到一个完整的数据包之后,按照协商的校验方式对数据包进行校验,校验通过之后发送确认字符,校验失败则发送否认字符。发送程序收到确认字符后继续发送下一包,收到否认字符后重传数据包。

1.3 使用场景

  • Xmodem 和 Ymodem 协议是串口文件传输协议,顾名思义可用于通过串口相连的 ESP 设备与 MCU 之间的文件传输。当 MCU 设备作为接收端时,ESP 设备通过 WIFI、BLE 或者其他方式获取 MCU 固件或者配置文件,通过串口文件传输协议传输到 MCU 端,MCU 根据接收到的固件或者配置文件进行升级或配置;当 MCU 设备作为发送端时,通过串口文件传输协议将 MCU 的日志或者配置文件等传输到 ESP 设备端,ESP 设备上传文件至云平台或者服务器。
  • ESP 设备将从 OTA 平台获取到的固件通过 Xmodem 协议传输到 MCU 设备,从而实现 MCU 固件的 OTA 升级
  • image.png

2 上位机发送

image.png image.png image.png image.png image.png

3 MCU接收

image.png image.png

4 技术基础

4.1 fread函数详解和fwrite函数详解

image.png image.png image.png image.png