YModem介紹
簡介
YModem是一種文件傳輸的協議, 可以參考百度百科 YModem百度百科, 本文主要講解我個人對這個協議的理解.
協議傳輸的過程
- 流程如下圖所示:
- 首先大家先了解幾個字符的ASCII碼
字符 | ASCII碼16進制 |
---|---|
SOH |
0x01 |
STX |
0x02 |
ACK |
0x06 |
NAK |
0x15 |
EOT |
0x04 |
C |
0x43 |
- 這些控制字符和可顯示字符在傳輸過程中就是通過ASCII碼錶示的.
- 整個過程比較簡單, 就是按照格式一條一條的傳輸, 直到結束.
- 下面對傳輸過程中的幀進行分開講一下
1 起始幀(133字節)
SOH
+ 00
+ FF
+ filename
+ filesize
+ NULL
+ CRCH
+ CRCL
- 起始幀是文件傳輸發送端發的第一條重要消息.
filename
表示傳輸文件的文件名.filesize
表示需要傳輸文件的大小.CRCH
+CRCL
表示整條幀(去掉前三個字節)的CRC16校驗.
2 數據幀格式
STX
/SOH
+ [編號]
+ 編號的反碼
+ data[0]
+ data[1]
+ data[2]
+ … + CRCH
+ CRCL
SOH
表示有128個字節, 有的也只用SOH
傳輸數據.
STX
表示有1024個字節.
CRCH
+CRCL
表示整條幀(去掉前三個字節)的CRC16校驗.- 如果傳輸最後一條字節不足128個字節, 則用
1A
填充
3 結束幀的數據格式
SOH
+ 00
+ FF
+ NULL
+ NULL
+ … + NULL
+ CRCH
+ CRCL
總結
這個協議常用於文件傳輸, 比如在線升級過程中傳輸的.bin文件
或者傳輸一些碼庫文件. 在Xshell軟件
中的串口傳輸過程中就有這種傳輸方式, 後面在講在線升級的過程中就會用到它, 所以還是有必要了解以下的.
備註:提供一下個人微信號 Hleafleafleaf,歡迎加好友,共同學習!共同進步!