YModem協議簡介

2021-09-01 11:53:15 字數 1431 閱讀 5444

(ymodem) ymodem 協議。ymodem是一種錯誤糾正協議。使用較大資料塊的調製解調採用這種協議,以獲得更高的工作效率。採用ymodem協議的數據機以1024位元組數的塊傳送資料。成功接收的不會被確認。有錯誤的塊被確認(nak),並重發。ymodem類似於xmodem-1k,不同之處是提供批處理模式(batch mode)。在批處理模式下,可以使用乙個命令傳送一些檔案。ymodem使用迴圈冗餘碼校驗作為錯誤校驗方式。 

等同於xmodem-1k 加批檔案傳送的一種檔案傳送協議 ( 也稱 ymodem batch) 。它比標準 xmodem 要快,而且在傳送資料之前傳送檔名。 ymodem-g 無需無錯誤通道的認可或當數據機自糾錯時就可傳送,但是一旦出現錯誤傳送就會取消。

符號

數值含義

soh0x01

128位元組資料幀,協議型別

stx0x02

1024位元組資料幀,協議型別

eot0x04

結束傳輸,傳送者傳送

ack0x06

接收者處理成功回應,傳送者發現下一包資料(1024或者128)

nak0x15

接收者處理失敗回應,傳送者需要重發此1024或者128資料

ca0x18

傳輸中止

c0x43

接收者準備接收時會發連續的c,傳送者接收到c開始傳送

ymodem的起始幀並不直接傳輸檔案的資料,而是將檔名與檔案的大小放在資料幀中傳輸,

它的幀長=3位元組資料首部+128位元組資料+2位元組crc16校驗碼=33位元組。pnum表示資料幀號,2位元組長度,從0x00到0xff迴圈,檔案資訊為第一幀資料所以是00,pnumnot表示資料幀號取反,2位元組長度,nul[0] 表示檔名稱+檔案長度不足128位元組時候,用0補齊128位元組。它的資料結構如下:

soh  pnum   pnumnot   [filename] [filezise]  nul[ 0] crch crcl

ymodem資料幀有兩種長度soh和stx,兩種格式除了資料幀長度不同外無較大區別。由於ymodem採用每幀資料校驗一次crc,所以stx傳輸會減少校驗,但是重發時候會增加重發資料量。

soh pnum pnumnot data[128] crch crcl

stx  pnum pnumnot data[1024] crch crcl

ymodem的結束幀資料也採用soh的128位元組資料幀,pnum固定為00,pnumnot固定為ff,它的結構如下:

soh 00 ff nul[128] crch crcl

直接傳送5個ca,即1818181818
以soh舉例傳輸過程。stx只需要將檔案資訊幀,結束幀保留,檔案內容包替換為stx即可

Bootloader設計 YModem協議

相信很多人都希望,不開蓋就可以對韌體進行公升級吧,就像手機那些。下文中的bootload就來實現這樣的功能。前段時間有專案關於bootload設計。所以就仔細的去了研究了一翻。以前都是用的stm32官方的,沒有去深入了解。這次做完了過後,發現官方的版本存在一些問題。比如說ymodem傳送過程中,完全...

Ymodem傳輸詳解

ymodem簡介 ymodem協議是由xmodem協議演變而來的,每包資料可以達到1024位元組,是乙個非常高效的檔案傳輸協議。ymodem是一種錯誤糾正協議。使用較大資料塊的調製解調採用這種協議,以獲得更高的工作效率。採用ymodem協議的數據機以1024位元組數的塊傳送資料。成功接收的不會被確認...

MQTT協議 MQTT協議簡介

mqtt messagequeuing telemetry transport,訊息佇列遙測傳輸 是ibm開發的乙個即時通訊協議。mqtt是面向m2m和物聯網的連線協議,採用輕量級發布和訂閱訊息傳輸機制。它的設計思想是輕巧 開放 簡單 規範,因此易於實現。這些特點使得它對很多場景來說都是很好的選擇,...