XModem與YModem


XModem用在串口異步傳文件:

1 #define SOH 0x01
2 #define STX 0x02
3 #define EOT 0x04
4 #define ACK 0x06
5 #define NAK 0x15
6 #define CAN 0x18
7 #define CTRLZ 0x1A
View Code

標准Xmodem協議(每個數據包含有128字節數據)幀格

                                                                            Xmodem包格式

             Byte1                             Byte2                           Byte3                       Byte4~131            Byte132~133

    Start Of Header(SOH/STX)          Packet NumberID          ~(Packet NumberID)          Packet Data            16-Bit CRC

0 發送發每次以128字節的幀結構發送,不足128字節則要用CTRLZ填充,每發送一次都要接收從機端回應的信息,因此效率較低,已經廢棄

1 如果正確發下一包則ACK,錯誤重發則NACK;強制停止則<CAN>,主機不需要發送<EOT>確認

2 發送方發送完成則發送方發送<EOT>通知接收方。接收方回以<ACK>進行確認;

3 啟動發送由從機發起,'C'表示進行CRC16校驗,NAK表示進行累加和校驗。校驗先CRCH后 CRCL

 

Ymodem:

YModem協議是XModem的改進協議,快速(一次傳輸1024字節的信息塊,同時它還支持批文件傳輸),傳輸穩定。YModem分成YModem-1K(數據塊1K,幀頭STX,用的較多)與YModem-g(去掉CRC,不等待ACK所以速度快)

YModem的采用的是CRC16-CCITT歐洲版本的CRC校驗,它的生成多項式為:x16+x12+x5+1

1、起始幀的數據格式:

  SOH  00 FF  filename[多加00作為結束 ] filezise[多加00作為結束 ]  NUL[表示剩余以00填充 ] CRCH CRCL

      如果文件大小小於1024則

  SOH 01 FE data[,1A ...1A ]  CRCH CRCL 

2、數據幀的數據格式:

  STX 01 FE data[1024] CRCH CRCL

        剩余128~1024則:不足1024的用1A填充:       STX [Index] [~index] data[,1A ...1A ]  CRCH CRCL

       剩余0~18則:不足128的用1A填充:       SOH [num] [~~num] data[ ,1A...1A]  CRCH CRCL

3、結束幀數據結構:

     SOH 00 FF NUL[128個00] CRCH CRCL

eg:j將文件名為foo.c,大小為4196Byte(16進制為0x1064)的文件作為傳輸的過程:sizeof("foo.c")=6;sizeof("1064")=5;

 ZMODEM:精華在於實現了類似於TCP在保持一個可靠連接的同時,采用滑窗技術避免過長的確認信息等待,從而提高傳輸速度。其他特點還包括發送方自動發送、自動重傳;串流式(streaming)傳輸方式,傳輸速度較快,而且還具有自動改變區段大小和斷點續傳、快速錯誤偵測等功能,secureCRT中集成了一個zmodem協議.

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM