日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Xmodem說(shuō)明書(shū)

 代碼牧場(chǎng) 2011-09-19

1.1.    Xmodem簡(jiǎn)介

FTPFile Transfer Protocol的縮寫(xiě),串行通信的文件傳輸協(xié)議主要有:XmodemYmodem、ZmodemKERMIT等。

  

Xmodem 協(xié)議一般支持128 字節(jié)的數(shù)據(jù)包,并且支持累加和校驗(yàn)、CRC 兩種校驗(yàn)方式,在出現(xiàn)數(shù)據(jù)包錯(cuò)誤的情況下支持多次重傳(一般為10 次)。Xmodem 協(xié)議傳輸由接收程序和發(fā)送程序完成。先由接收端發(fā)送協(xié)商字符,協(xié)商校驗(yàn)方式,協(xié)商通過(guò)之后發(fā)送端就開(kāi)始發(fā)送數(shù)據(jù)包,接收程序接收到完整的一個(gè)數(shù)據(jù)包之后按照協(xié)商的方式對(duì)數(shù)據(jù)包進(jìn)行校驗(yàn)。校驗(yàn)通過(guò)之后發(fā)送確認(rèn)字符,然后發(fā)送程序繼續(xù)發(fā)送下一包;如果校驗(yàn)失敗,則發(fā)送否認(rèn)字符,發(fā)送程序重傳此數(shù)據(jù)包。

 

1.2.    Xmodem協(xié)議

1.2.1.相關(guān)說(shuō)明

1>   控制字符定義:

SOH 0x01

         EOT       0x04

         ACK       0x06

         NAK       0x15

         CAN       0x18

2>   UART格式: Asynchronous(異步)、8Bit data (8Bit數(shù)據(jù))、no

parity(無(wú)校驗(yàn))、one stop bit(1個(gè)停止位)

1.2.2.協(xié)議簡(jiǎn)介

   Xmodem協(xié)議是由Ward Chritensen70年代提出并實(shí)現(xiàn)的,傳輸數(shù)據(jù)單位為信息包,包含一個(gè)標(biāo)題開(kāi)始字符<SOH>,一個(gè)單字節(jié)包序號(hào),一個(gè)包序號(hào)的補(bǔ)碼,128個(gè)字節(jié)數(shù)據(jù)和一個(gè)單字節(jié)的校驗(yàn)和。它把數(shù)據(jù)劃分成128個(gè)字符的小包進(jìn)行發(fā)送,每發(fā)送一個(gè)小包都要檢查是否正確,如果信息包正確接收方發(fā)送一個(gè)字節(jié)<ACK>的應(yīng)答;有錯(cuò)重發(fā)則發(fā)送一個(gè)字節(jié)<NAK>應(yīng)答,要求重發(fā)。因此Xmodem是一種發(fā)送等待協(xié)議,具有流量控制功能。優(yōu)點(diǎn):簡(jiǎn)單通用,幾乎所有通信軟件都支持該協(xié)議。缺點(diǎn):慢。檢驗(yàn)和信息包格式如圖11所示。

 

Byte1

Byte2

Byte3

Byte4--131

Byte132

Start of Hearder

Package Number

~(Package Number)

Package Data

Check Sum

1-1校驗(yàn)和信息包格式

               

    Xmodem協(xié)議的數(shù)據(jù)包格式在90年代經(jīng)過(guò)一次修改,傳輸數(shù)據(jù)單位仍為信息包,包含一個(gè)標(biāo)題開(kāi)始字符SOH,一個(gè)單字節(jié)包序號(hào),一個(gè)包序號(hào)的補(bǔ)碼,128個(gè)字節(jié)數(shù)據(jù)和一個(gè)雙字節(jié)的CRC16校驗(yàn)。所以新的協(xié)議格式信息包如圖1-2所示。

Byte1

Byte2

Byte3

Byte4--131

Byte132--133

Start of Hearder

Package Number

~(Package Number)

Package Data

16-Bit CRC

12 CRC校驗(yàn)信息包格式

      1.2.3. 校驗(yàn)和信息包

1>   信息包校驗(yàn)和

<SOH><blk #><255-blk #><--128 data bytes--><cksum>

其中:

<SOH>         =01 hex

<blk #>  =信息包序號(hào),01開(kāi)始以發(fā)送一包將加1,加到FF hex將循環(huán)。

<255-blk #>  =信息包序號(hào)的補(bǔ)碼。

<cksum>     =保留字節(jié),丟掉進(jìn)位的和校驗(yàn)。

2>   校驗(yàn)和方式數(shù)據(jù)傳輸流程

接收方要求發(fā)送方以校驗(yàn)和方式發(fā)送時(shí)以NAK來(lái)請(qǐng)求,發(fā)送方將對(duì)此做出應(yīng)答。如表11所示傳輸5包數(shù)據(jù)的示意過(guò)程。

Sender

Flow

Receiver

 

ß

NAK

 

 

Time out after 3 Second

 

ß

NAK

SOH|0X01|0XFE|DATA[0--127]|CHKSUM

à

Packed Ok

 

ß

ACK

SOH|0X02|0XFD|DATA[0--127]|CHKSUM

à

Line hit during transmission

 

ß

NAK

SOH|0X02|0XFD|DATA[0--127]|CHKSUM

à

Packed Ok

 

ß

ACK

SOH|0X03|0XFC|DATA[0--127]|CHKSUM

à

Packed Ok

ACK get garbaged

ß

ACK

SOH|0X03|0XFC|DATA[0--127]|CHKSUM

à

Duplicate Packed

 

ß

NAK

SOH|0X04|0XFB|DATA[0--127]|CHKSUM

à

Uart Framing err on any byte

 

ß

NAK

SOH|0X04|0XFB|DATA[0--127]|CHKSUM

à

Packed Ok

 

ß

ACK

SOH|0X05|0XFA|DATA[0--127]|CHKSUM

à

UART Overrun err on any byte

 

ß

NAK

SOH|0X05|0XFA|DATA[0--127]|CHKSUM

à

Packed Ok

 

ß

ACK

EOT

à

Packed Ok

ACK get garbaged

ß

ACK

EOT

à

Packed Ok

Finished

ß

ACK

11 校驗(yàn)和數(shù)據(jù)傳輸過(guò)程

1.2.4.CRC校驗(yàn)信息包

1、CRC校驗(yàn)信息包

<SOH><blk #><255-blk #><--128 data bytes--><CRC hi><CRC lo>其中:

<SOH>         = 01 hex

<blk #>  = 信息包序號(hào),01開(kāi)始以發(fā)送一包將加1,加到FF hex將循環(huán)。

<255-blk #>  = 信息包序號(hào)的補(bǔ)碼。

<CRC hi>         = CRC16高字節(jié)。

<CRC lo>     = CRC16低字節(jié)。

2、CRC描述

計(jì)算16Bit CRC校驗(yàn)的除數(shù)多項(xiàng)式為X^16 + X^12 + X^5 + 1,信息包中的128數(shù)據(jù)字節(jié)將參加CRC校驗(yàn)的計(jì)算。在發(fā)送端CRC16的高字節(jié)在先,低字節(jié)在后。

如表12所示傳輸3包數(shù)據(jù)的示意過(guò)程。

Sender

Flow

Receiver

 

ß

C’

 

 

Time out after 3 Second

 

ß

C’

SOH|0X01|0XFE|DATA[0--127]|CRC16

à

Packed Ok

 

ß

ACK

SOH|0X02|0XFD|DATA[0--127]|CRC16

à

Line hit during transmission

 

ß

NAK

SOH|0X02|0XFD|DATA[0--127]|CRC16

à

Packed Ok

 

ß

ACK

SOH|0X03|0XFC|DATA[0--127]|CRC16

à

Packed Ok

 

ß

ACK

EOT

à

Packed Ok

ACK get garbaged

ß

ACK

EOT

à

Packed Ok

Finished

ß

ACK

12 CRC校驗(yàn)數(shù)據(jù)傳輸過(guò)程

3CRC校驗(yàn)方式數(shù)據(jù)傳輸流程

接收方要求發(fā)送方以CRC校驗(yàn)方式發(fā)送時(shí)以C來(lái)請(qǐng)求,發(fā)送方將對(duì)此做出應(yīng)答。

4、在發(fā)送方僅支持校驗(yàn)和傳輸方式時(shí),就應(yīng)對(duì)其請(qǐng)求NAK,要求以CheckSum的校驗(yàn)方式來(lái)發(fā)送數(shù)據(jù),如表11所示過(guò)程。如果發(fā)送方僅僅支持CRC校驗(yàn)的傳輸方式,應(yīng)以’C’來(lái)請(qǐng)求發(fā)送,如表12所示過(guò)程。如果兩者都支持的話(huà),將優(yōu)先以’C’來(lái)請(qǐng)求發(fā)送。所以接收程序的實(shí)現(xiàn)過(guò)程將如表13所示。

Sender

Flow

Receiver

 

ß

C’

 

 

Time out after 3 Second

 

ß

NAK

 

 

Time out after 3 Second

 

ß

C’

 

 

Time out after 3 Second

 

ß

NAK

SOH|0X01|0XFE|DATA[0--127]|CHKSUM

à

   

 

ß

ACK

SOH|0X02|0XFD|DATA[0--127]|CHKSUM

à

Line hit during transmission

 

ß

NAK

SOH|0X02|0XFD|DATA[0--127]|CHKSUM

à

Packed Ok

 

ß

ACK

SOH|0X03|0XFC|DATA[0--127]|CHKSUM

à

Packed Ok

 

ß

ACK

EOT

à

Packed Ok

ACK get garbaged

ß

ACK

EOT

à

Packed Ok

Finished

ß

ACK

5、信息包中如果剩余的數(shù)據(jù)不足128Byte信息包的格式為:

SOH 04 0xFB Data[100] CPMEOF[28] CRC CRC】,不足的CPMEOF[28]將以0x1A^Z)填充。

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多