XModem協議介紹 轉 改造

2022-03-19 08:57:13 字數 1920 閱讀 5064

xmodem協議介紹:

xmodem是一種在串列埠通訊中廣泛使用的非同步檔案傳輸協議,

分為xmodem和1k-xmodem協議兩種,前者使用128位元組的資料塊,後者使用1024位元組即1k位元組的資料塊。

一、xmodem校驗和協議

1. xmodem資訊包格式

xmodem協議最早由ward christensen在20世紀70年代提出並實現的,傳輸資料單位為資訊包,資訊包格式如下: 

2. 校驗和的計算

所有的資料位元組都將參與和運算,由於校驗和只佔乙個位元組,如果累加的和超過255將從零開始繼續累加。

3. 字段定義

01h04h

06h15h

18h4. 校驗和方式的xmodem傳輸流程

傳輸流程如圖所示:

對於傳送方僅僅支援校驗和的傳輸方式,接收方應首先傳送nak訊號來發起傳輸,如果傳送方沒有資料傳送過來,需要超時等待3秒之後再發起nak訊號來進行資料傳輸。

對於資料傳輸正確,接收方需要傳送ack訊號來進行確認,如果資料傳輸有誤,則傳送nak訊號,傳送方在接收到nak訊號之後需要重新發起該次資料傳輸,如果資料已近傳輸完成,傳送方需要傳送eot訊號,來結束資料傳輸。

5. 如何取消資料傳輸

當接收方傳送can表示無條件結束本次傳輸過程,傳送方收到can後,無需傳送eot來確認,直接停止資料的傳送。

二、xmodem-crc16協議

1. xmodem-crc16資訊包格式

xmodem協議在90年代做過一次修改,將132位元組處的校驗和改成雙位元組的crc16校驗,crc16校驗的資訊包格式如下:

2. crc16的計算

以後有時間再研究吧,先給出乙份源**,來自:

int calcrc(char *ptr, int count)

while (--i);

}return (crc);

}需要注意的是,在傳送方,crc是高位元組在前,低位元組在後

3. crc16校驗的xmodem傳輸流程

傳輸流程如圖所示:

和校驗和方式不同的是,當接收方要求傳送方以crc16校驗方式傳送資料時以'c'來請求,傳送方對此做出應答,流程就如上圖所示。

當傳送方僅僅支援校驗和方式時,則接收方要傳送nak來請求,要求以校驗和方式來傳送資料,

如果僅僅支援crc16校驗方式,則只能傳送'c'來請求。如果兩者都支援的話,優先傳送'c'來請求,流程如圖所示:

最後,如果資訊包中的資料如果不足128位元組,剩餘的部分要以0x1a(ctrl-z)來填充。

三、1k-xmodem協議

1k-xmodem協議同xmodem-crc16協議差不多,只是資料塊長度變成了1024位元組即1k,

同時每個資訊報的第乙個位元組的soh變成了stx,stx定義為 0x02,能有效的加快資料傳輸速率。

--------------------- 

參考原文: 

U Boot移植 支援串列埠Xmodem協議

u boot預設支援的loadb命令需要配合linux下的kermit工具來使用,loady命令通過串列埠ymodem協議來傳輸檔案。windows下的超級終端雖然支援ymodem,但是它的使用介面實在不友好。而securecrt只支援xmodem和zmodem。而上位機和開發板之間的檔案傳輸又實在...

基於Xmodem協議的PC與微控制器檔案傳遞

在我們的xp系統中有乙個超級終端,他是系統中自帶的串列埠程式,在許多時候我們可以使用它來除錯嵌入式裝置的程式,另外這個程式還有另外一種功能就是檔案傳遞。在超級終端中支援多種傳送協議,本文以xmodem為例來實現pc機與微控制器完成檔案傳遞。首先先介紹一下xmodem協議,xmodem協議是一種使用撥...

brook協議 http協議 轉

tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線 位碼即tcp標誌位,有6種標示 syn synchronous建立聯機 ack acknowledgement 確認 psh push傳送 fin finish結束 rst reset重置 urg urgent緊急...