Ymodel协议

Ymodem协议的发展背景:

Ymodem源于XmodemXmodem协议名字来源于美国一位软件工程师Keith PetersenXmodem.asm程序,作者Chuck Forsberg在借鉴了Xmodem程序优点并整理成文档,放到公网并流行开来,该协议以8位数据为传输对象,将文件数据分割为若干个128字节数据包,再封装为数据帧进行传输,并且数据报文的校验方式由8位的CheckSum[9]发展到CRC 16位的冗余校验[10]。但是在使用中发现,这个协议只解决了数据传输的问题,但是多文件传输时xModem就显得受局限,在此背景下,一种将文件名,文件大小信息一并发送的方式被提及,由于该协议和XModem协议类似,但赋予了新的功能特性,为了与现有的Xmodem加以区分,所以它被命名为Ymodem.

  1. YModem的最小系统要求
    1. 上下位机如果需要支持YModem协议,需要满足以下最低要求:

      a. 文件名和文件长度等文件属性相关信息需放在数据块编号0中传送;

      b. 文件路径或者文件名必须是空符(0x00)结尾的ACSII字符串;

      c. 在没有明确重写文件名的情况下,接收程序需使用发送方指定的路径名或文件名作为文件名。

      d. 发送程序需使用CRC16冗余校验响应下位机“C”应答请求,否则则为8位CheckSum方式;

      e. 接收程序需能兼容128字节和1024字节混合发送模式;

      f. 发送过程中在未收到ACK回复的情况下,发送程序不得变更数据区块的长度;

      g. 每个文件发送结束,发送程序需发送至多10次”EOT”,直到接收到ACK为止;

      h. 传输正常终止需以空字符的文件名数据包结束。

      1. YModem数据帧结构:    YModem协议可支持两种字节长度的数据帧,分别是128字节或者1024字节,见下表,其数据帧结构如下[13]
    2. 功能描述

      帧头

      数据包编号

      数据包编号反码

      数据区块

      校验区域

      数据帧

      Byte[0]

      Byte[1]

      Byte[2]

      Data for transfering

      Hi

      Lo

      128字节数据块CRC16

      <SOH>

      Pack No

      ~Pack No

      Byte[3]~Byte[130]

      Byte[131]

      Byte[132]

      128字节数据块CheckSum

      <SOH>

      Pack No

      ~Pack No

      Byte[131]

      1024字节数据块CRC16

      <STX>

      Pack No

      ~Pack No

      Byte[3]~Byte[1026]

      Byte[1027]

      Byte[1028]

      1024字节数据块CheckSum

      <STX>

      Pack No

      ~Pack No

      Byte[1027]

      表2 数据帧结构

    3. 数据区块的所占字节数是由数据帧中Byte[0]字节判定,<SOH>表示接下来的数据区域长度为128字节,<STX>则表示数据区域长度为1024字节,帧数据Byte[1]为当前数据包编号,Ymodem协议是从0标号开始的,当数据包编号大于255时从0开始循环计数,Byte[2]为Byte[1]的反码,可用于数据包纠错。

    4. 当待发送数据区块的有效数据长度大于等于1024字节的情况下,数据区块按照1024字节整除截取顺序发送,当剩余数据区块的有效数据长度大于128但小于1024字节的情况下, 数据区块将按照不足部分以Null字符填充的方式,拼包1024字节发送。在有效数据长度为128的情况下,按照实际数据发送,如果实际数据不足128字节的情况下,剩余部分用Null字符填充满,以128字节发送。数据校验区域的实际取值为当前数据帧中数据区块的校验值。

      校验方式是由文件接收方(下位机)决定,当下位机收到Ymodem指令进入Ymodem传输模式后,应答回复的字符为为“C”(0x43), 则双方以CRC16校验方式通讯,否则以Checksum方式发送。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值