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

2021-06-17 16:13:53 字數 2515 閱讀 7704

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

首先先介紹一下xmodem協議,xmodem協議是一種使用撥號數據機的個人計算機通訊中廣泛使用的非同步檔案運輸協議。這種協議以128位元組塊的形式傳輸資料,並且每個塊都使用乙個校驗和過程來進行錯誤檢測。如果接收方關於乙個塊的校驗和與它在傳送方的校驗和相同時,接收方就向傳送方傳送乙個認可位元組。然而,這種對每個塊都進行認可的策略將導致低效能,特別是具有很長傳播延遲的衛星連線的情況時,問題更加嚴重。

使用迴圈冗餘校驗的與xmodem相應的一種協議稱為xmodem-crc。還有一種是xmodem-1k,它以1024位元組一塊來傳輸資料。zmodem是最有效的乙個xmodem版本,它不需要對每個塊都進行認可。事實上,它只是簡單地要求對損壞的塊進行重發。zmodem對按塊收費的分組交換網路是非常有用的。不需要認可回送分組在很大程度上減少了通訊量。

ymodem也是一種xmodem的實現。它包括xmodem-1k的所有特徵,另外在一次單一會話期間為傳送一組檔案,增加了批處理檔案傳輸模式。

xmodem 協議 [ 2006-3-4 16:32:37 | author: job ]

xmodem transfer protocol

author: christensen

2004-3-25 10:08

noted: job nelson

1。 幀格式

| soh | 資訊包序號 | 資訊包序號的補碼 | 資料區段 | 算術校驗和 |

說明:soh 幀的開頭位元組,代表資訊包中的第乙個位元組

資訊包序號: 對 256 取模所得到當前包號,第乙個資訊包的序號為 1

而資訊包序號範圍 0~255

資訊包序號的補碼: 當前資訊包號的補碼

資料區段: 資料區段的長度固定為 128 位元組,其內容沒有任何限制,可以是

文字資料或二進位制資料

算術校驗和: 1位元組的算術校驗和,只對資料區段計算後對 256 取模而得

2。 傳輸邏輯

1> 收發雙方撥號連通後,傳送方等待接收方傳來 nak 訊號。當第乙個 nak 到達,

傳送方解釋為 開始傳送第乙個包

2> 傳送方一旦收到第乙個 nak ,啟動了傳輸,傳送方就將資料以每次 128 位元組

打包成幀格式傳送,再等待接收方的確認訊號

3> 傳送方收到接收方傳來的 ack 訊號,解釋為資訊包被正確接收,並有傳送下一

個包的含義

4> 傳送方收到接收方傳來的 nak 訊號,解釋為請求重發同一資料報

5> 傳送方收到接收方傳來的 can 訊號,解釋為請求無條件停止傳輸過程

6> 傳送方正常傳輸完全部資料,需要正常結束,傳送 eot 訊號通知接收方。接收

方用 ack 進行確認

7> 接收方傳送 can 無條件停止傳輸過程,傳送方收到 can 後,不傳送 eot 確認

8> 雖然資訊包是以 soh 來標誌乙個資訊包的起始的,但在 soh 位置上出現的 eot

則表示資料傳輸結束,再也沒有資料傳過來

9> 接收方首先應確認資訊包序號的完整性,通過對資訊包序號取補,然後和資訊包

序號的補碼異或,結果為 0 表示正確,結果不為 0 則傳送 nak 請求重傳

10> 接收方確認資訊包序號正確後,然後檢查是否期望的序號。如果不是期望得到的

資訊包序號,說明發生嚴重錯誤,應該傳送乙個 can 來中止傳輸

11> 對於10>情況的唯一例外,是收到的包的資訊包序號與前乙個資訊包序號相同,

此中情況,接收方簡單忽略這個重複的包,向傳送方發出 ack ,準備接收下乙個包

12> 接收方確認了資訊包序號的完整性和是正確期望的後,只對 512 位元組的資料區段

進行算術和校驗,結果與幀中最後乙個位元組(算術校驗和)比較,相同 傳送 ack,

不同傳送 nak

3。 超時處理

1> 接收方等待乙個資訊包的到來所具有的超時時限為 10 秒,每個超時後傳送 nak

2> 當收到包時,接收過程中每個字元的超時間隔為 1 秒

3> 為保持「接收方驅動」,傳送方在等待乙個啟動位元組時不應該採用超時處理

4> 一旦傳輸開始,傳送方採用單獨的 1 分鐘超時時限,給接收方充足的時間做傳送

ack ,nak ,can 之前的必須處理

5> 所有的超時及錯誤事件至少重試 10 次

4。 控制字元

控制字元符合 asicii 標準定義,長度均為 1 位元組

soh 0x01

eot 0x04

ack 0x06

nak 0x15

can 0x18

這是 xmodem 協議的最基本的乙個版本,在其上還有 xmode-1k 這樣的擴充套件,加大了傳輸封包的大小(1k),用來提高傳輸速率;增加了 crc 校驗,用來提高傳輸的可靠性;區別在於:當啟用 xmodem 時,接收方傳送 c 字元。傳送方收到 c 字元判定為採用 xmodem-1k 擴充套件;否則,當超時後,按照基本的版本傳輸。

未完待續~~

基於HTTP 協議認證介紹與實現

一直對http 的頭認證有興趣,就是路由器的那種彈出對話方塊輸入賬號密碼怎麼實現一直不明白,最近,翻了一下http 協議,發現這是乙個rfc 2617的實現,所以寫篇文章介紹一下吧.這是乙個用於web瀏覽器或其他客戶端在請求時提供使用者名稱和密碼的登入認證,要實現這個認證很簡單 我們先來看下協議裡面...

PC與NC的故事

深層次來看,it世界裡仍然存在著兩種趨勢在角力,一種是以本機為核心的,可說 是以微軟為代表 一種是以網路為核心的或者說伺服器端為核心的 這種以google 和yahoo為代表。這兩種趨勢的較力,過去以一方的徹底失敗為 完結,當將來的成 敗卻是不會這類的結局。一方的勝利並不會意味著一方的失敗 兩者將按...

無線與PC的區別

本文參考了部落格 狀態 該博文繼續更新,未完待續.作為乙個產品經理,肯定要區分pc與移動端,這也是產品經理在面試時候會被問道的內容,下面本人就這麼內容做下簡單整理,以下部分內容參考了其他部落格,本人已經上方標註了參考鏈結。區別一 使用者 主要是使用者特徵 使用者觸達。使用者群體更廣,比如學生 打工者...