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緊急...