嵌入式常用文件传输协议-Xmodem

Xmodem

Xmodem协议是串行通信中的一种简单的异步文件传输协议,可以作为嵌入式设备bootloader通过串口升级应用时的传输协议(当时项目中用于以bin文件的格式输出处理器的ROM、RAM用于异常分析)。

其基本思想是:发送大小为128字节的数据包,如果包成功接收,接收方会返回一个肯定应答信号(ACK);如果发现错误,则返回一个否定应答信号(NAK)并重新发送数据包。Xmodem最初使用奇偶校验作为查错控制的方法。

一个完整的数据包一共132字节,其中包含128字节数据。数据包以固定长度的3个字节帧头开始,第一个是控制字符SOH(0x01),第二个是数据包序号(从1开始,1~255),第三个是数据包序号的反码(255 - 序号),数据段固定长度为128个字节(不足128字节,使用控制字符CTRLZ(0x1A)补齐 ),最后一个为校验和。

控制字符

校验方式分为累加和与CRC-16,具体操作如下:

在累加和方式中,所有的数据字节都将参与和运算,由于校验和只占一个字节,如果累加的和超过255将从零开始继续累加;

对于发送方仅仅支持校验和的传输方式,接收方应首先发送NAK信号来发起传输,如果发送方没有数据发送过来,需要超时等待3秒之后再发起NAK信号来进行数据传输。

对于数据传输正确,接收方需要发送ACK信号来进行确认,如果数据传输有误,则发送NAK信号,发送方在接收到NAK信号之后需要重新发起该次数据传输。

如果数据已经传输完成,发送方需要发送EOT信号,来结束数据传输。

当接收方发送CAN表示无条件结束本次传输过程,发送方收到CAN后,无需发送EOT来确认,直接停止数据的发送。

Xmodem传输过程

下图为采用CRC校验的传输过程。

#嵌入式软件实习##嵌入式#
嵌入式学习免费专栏 文章被收录于专栏

7年嵌入式软、硬件开发经验,分享嵌入式软件开发相关资料,专栏永久免费,在有帮助的帖子下送小红花即可!!!

全部评论

相关推荐

4 2 评论
分享
牛客网
牛客企业服务