自己负责的项目里面计划使用一个小型的文件传输协议,主要用来更新用户数据,数据量并不大,4KB的flash空间。所以调研了Xmodem,Ymodem与Zmodem三个嵌入式系统里面常用的文件传输协议。三个协议看着区别不大,但应用起来分支还挺多。简单总结一下,供大家参考,现分享如下:
Xmodem协议我们当前所讲的Xmodem协议居然可以追溯到1977年,其指的是Ward Christensen在1977年的MODEM中引入的一段ASM的程序MODEM.ASM。XMODEM这个名字来自于Keith Petersen的XMODEM.ASM程序,一个调制解调器的更新程序。ASM用于远程CP/M (RCPM)系统。它也被称为MODEM或MODEM2协议。一些不知道MODEM7不寻常的批处理文件模式的人称之为MODEM7。其他别名包括“CP/M用户组”和“TERM II FTP 3”。XMODEM这个名字之所以流行起来,部分原因是它与众不同,部分原因是媒体对电子公告板和RCPM系统感兴趣,在这些系统中可以使用“XMODEM”命令访问它。该协议具有通用性、简单性和合理的性能,被各种正规通信程序所支持。
Xmodem/CRC协议在初版的Xmodem协议中,每帧数据的结尾字节为校验和字节。而Xmodem/CRC协议对其进行了改良升级,使用了2字节的CRC-16校验算法,以提供更加完善与现代的错误检测保护。
Xmodem-1K协议Xmodem-1K协议在Xmodem/CRC协议下,将每帧的数据负载长度由128字节提升到了1024字节。
Ymodem协议我们现在使用的Ymodem协议,叫True Ymodem协议,是一款商业版Ymodem协议。其正式使用block 0位置发送文件名,长度等参数。
Zmodem协议在新协议中使用熟悉的XMODEM/CRC和YMODEM技术,提供适合当代数据通信的可靠性、吞吐量、文件管理和用户体验。
总结之前,在学习STM32时,看到IAP的示例一直以为只有Ymodem一个文件传输协议。现在看来,Ymodem的发展史也是非常精彩,并且经过相当长时间的演化与筛选。在未来的日子里,咱们就一个一个实现上面的协议,看看哪款最适合我的项目需求。
参考文献:
《XMODEM/YMODEM PROTOCOL REFERENCE A compendium of documents describing the XMODEM and YMODEM File Transfer Protocols》