简介
XMODEM 是一种早期的、经典的串行通信文件传输协议,主要用于通过串口(如RS 232)在2台设备间可靠的传输数据. 于1997年由Ward Christensen提出,现在也常用于嵌入式系统、Bootloader等场景.
流程
XMODEM 采用发送方主动发送、接收方确认的方式(ARQ),流程如下:
- 初始化阶段
- 接收方周期性发送 NAK(ASCII 值为0x15 校验和模式)或单字符 C(ASCII 值为 0x43 CRC模式)
- 发送方收到后,开始发送数据
- 数据传输阶段
- 数据被分割为固定大小的数据块(通常128byte,XMODEM-1K扩展协议对应1024byte)
- 每个数据块发送后,等待接收方确认
- 校验成功,则应答 ACK(ASCII 值为 0x06,确认确认);校验失败,则应答 NAK(ASCII 值为 0x15),发送方重传
- 结束阶段
所有数据传输结束后,
- 发送方发送 EOT(ASCII 值是 0x04)
- 接收方应答 ACK(ASCII 值为 0x06,确认确认)
- 传输结束
数据格式

image.png
串口模拟-使用虚拟串口进行模拟

image.png

image.png

image.png