1.1. Xmodem簡介 FTP即File Transfer Protocol的縮寫,串行通信的文件傳輸協(xié)議主要有:Xmodem、Ymodem、Zmodem和KERMIT等。
Xmodem 協(xié)議一般支持128 字節(jié)的數(shù)據(jù)包,并且支持累加和校驗、CRC 兩種校驗方式,在出現(xiàn)數(shù)據(jù)包錯誤的情況下支持多次重傳(一般為10
次)。Xmodem 協(xié)議傳輸由接收程序和發(fā)送程序完成。先由接收端發(fā)送協(xié)商字符,協(xié)商校驗方式,協(xié)商通過之后發(fā)送端就開始發(fā)送數(shù)據(jù)包,接收程序接收到完整的一個數(shù)據(jù)包之后按照協(xié)商的方式對數(shù)據(jù)包進行校驗。校驗通過之后發(fā)送確認字符,然后發(fā)送程序繼續(xù)發(fā)送下一包;如果校驗失敗,則發(fā)送否認字符,發(fā)送程序重傳此數(shù)據(jù)包。 1.2. Xmodem協(xié)議 1.2.1.相關(guān)說明 1> 控制字符定義: SOH 0x01 EOT 0x04 ACK 0x06 NAK 0x15 CAN 0x18 2> UART格式: Asynchronous(異步)、8Bit data (8Bit數(shù)據(jù))、no parity(無校驗)、one stop bit(1個停止位) 1.2.2.協(xié)議簡介 Xmodem協(xié)議是由Ward Chritensen于70年代提出并實現(xiàn)的,傳輸數(shù)據(jù)單位為信息包,包含一個標(biāo)題開始字符<SOH>,一個單字節(jié)包序號,一個包序號的補碼,128個字節(jié)數(shù)據(jù)和一個單字節(jié)的校驗和。它把數(shù)據(jù)劃分成128個字符的小包進行發(fā)送,每發(fā)送一個小包都要檢查是否正確,如果信息包正確接收方發(fā)送一個字節(jié)<ACK>的應(yīng)答;有錯重發(fā)則發(fā)送一個字節(jié)<NAK>應(yīng)答,要求重發(fā)。因此Xmodem是一種發(fā)送等待協(xié)議,具有流量控制功能。優(yōu)點:簡單通用,幾乎所有通信軟件都支持該協(xié)議。缺點:慢。檢驗和信息包格式如圖1-1所示。
圖1-1校驗和信息包格式 Xmodem協(xié)議的數(shù)據(jù)包格式在90年代經(jīng)過一次修改,傳輸數(shù)據(jù)單位仍為信息包,包含一個標(biāo)題開始字符SOH,一個單字節(jié)包序號,一個包序號的補碼,128個字節(jié)數(shù)據(jù)和一個雙字節(jié)的CRC16校驗。所以新的協(xié)議格式信息包如圖1-2所示。
圖1-2 CRC校驗信息包格式 1.2.3. 校驗和信息包 1>
信息包校驗和 <SOH><blk #><255-blk #><--128 data
bytes--><cksum> 其中: <SOH> =01
hex <blk #> =信息包序號,從 01開始以發(fā)送一包將加1,加到FF hex將循環(huán)。 <255-blk #> =信息包序號的補碼。 <cksum> =保留字節(jié),丟掉進位的和校驗。 2>
校驗和方式數(shù)據(jù)傳輸流程 接收方要求發(fā)送方以校驗和方式發(fā)送時以NAK來請求,發(fā)送方將對此做出應(yīng)答。如表1-1所示傳輸5包數(shù)據(jù)的示意過程。
表1-1 校驗和數(shù)據(jù)傳輸過程 1.2.4.CRC校驗信息包 1、CRC校驗信息包 <SOH><blk #><255-blk #><--128 data
bytes--><CRC hi><CRC lo>其中: <SOH> =
01 hex <blk #> = 信息包序號,從 01開始以發(fā)送一包將加1,加到FF hex將循環(huán)。 <255-blk #> = 信息包序號的補碼。 <CRC hi> = CRC16高字節(jié)。 <CRC lo> = CRC16低字節(jié)。 2、CRC描述 計算16-Bit
CRC校驗的除數(shù)多項式為X^16 + X^12 + X^5 + 1,信息包中的128數(shù)據(jù)字節(jié)將參加CRC校驗的計算。在發(fā)送端CRC16的高字節(jié)在先,低字節(jié)在后。 如表1-2所示傳輸3包數(shù)據(jù)的示意過程。
表1-2 CRC校驗數(shù)據(jù)傳輸過程 3、CRC校驗方式數(shù)據(jù)傳輸流程 接收方要求發(fā)送方以CRC校驗方式發(fā)送時以‘C’來請求,發(fā)送方將對此做出應(yīng)答。 4、在發(fā)送方僅支持校驗和傳輸方式時,就應(yīng)對其請求NAK,要求以CheckSum的校驗方式來發(fā)送數(shù)據(jù),如表1-1所示過程。如果發(fā)送方僅僅支持CRC校驗的傳輸方式,應(yīng)以’C’來請求發(fā)送,如表1-2所示過程。如果兩者都支持的話,將優(yōu)先以’C’來請求發(fā)送。所以接收程序的實現(xiàn)過程將如表1-3所示。
5、信息包中如果剩余的數(shù)據(jù)不足128-Byte信息包的格式為: 【SOH 04 0xFB Data[100] CPMEOF[28] CRC CRC】,不足的CPMEOF[28]將以0x1A(^Z)填充。 |
|