3UF7103-1BA00-0 自定義網(wǎng)絡(luò)協(xié)議
在嵌入式網(wǎng)絡(luò)系統(tǒng)中,可以使用TCP/IP協(xié)議,但不夠經(jīng)濟(jì)。原因是TCP/IP協(xié)議過于龐大,過于復(fù)雜,以至于效率低下。一方面是嵌入式系統(tǒng)各單元內(nèi)部CPU的處理速度受限;另一方面,在某些特定場合特定任務(wù)的應(yīng)用環(huán)境中TCP/IP功能冗余,阻礙了硬件效能的發(fā)揮。為此,針對特定的應(yīng)用,制定相應(yīng)的自定義網(wǎng)絡(luò)協(xié)議,靈活方便,針對性強(qiáng),經(jīng)濟(jì)實(shí)用。
下面單從數(shù)據(jù)應(yīng)用的角度,定義一個(gè)簡單、實(shí)用的以太網(wǎng)傳輸協(xié)議。
3.2 協(xié)議層次
系統(tǒng)參照ISO的OSI模型,采用縮減的網(wǎng)絡(luò)體系結(jié)構(gòu)。如圖3所示,網(wǎng)絡(luò)體系結(jié)構(gòu)分為3層:物理層、數(shù)據(jù)鏈路層和應(yīng)用層。物理層規(guī)定網(wǎng)絡(luò)的拓?fù)湫问郊巴ㄐ判盘柕碾姎馓匦?;?shù)據(jù)鏈路層實(shí)現(xiàn)點(diǎn)到點(diǎn)的通信規(guī)程,完全執(zhí)行IEEE802.3的CSMA/CD協(xié)議。
3.3 幀結(jié)構(gòu)
以太網(wǎng)幀結(jié)構(gòu)如下:
物理層的前同步碼(即物理幀前導(dǎo)符+物理幀界定符)8字節(jié)由硬件自動(dòng)生成。除去這8個(gè)字節(jié),將其余字段的長度加起來,可以得到以太網(wǎng)幀的長度為1 518字節(jié),最小長度則為64字節(jié);加上8字節(jié)的前同步碼,即可得到最小幀長度為576位。這樣長度的幀能夠保證所有沖突都可以檢測到。這是因?yàn)镮EEE 802.3標(biāo)準(zhǔn)中,兩個(gè)站點(diǎn)的最遠(yuǎn)距離小于2 500 m,由4個(gè)中繼器連接而成,其沖突窗口為2倍電纜傳播延遲加上4個(gè)中繼器的雙向延遲之和,合計(jì)為51.2μs。就10 Mbps以太網(wǎng)而言,這個(gè)時(shí)間段內(nèi)等于發(fā)送64字節(jié)(即512位)的數(shù)據(jù)。
使用CSMA/CD作為一種訪問控制方式,意味著最短數(shù)據(jù)幀長度與網(wǎng)絡(luò)上最長傳輸延遲時(shí)間間隔有著密切的關(guān)系。要保證在發(fā)送過程中出現(xiàn)沖突時(shí),沖突域內(nèi)的所有結(jié)點(diǎn)都應(yīng)該知道發(fā)生了沖突,以便采取適當(dāng)?shù)拇胧?。這就需要最短數(shù)據(jù)幀長度必須大于網(wǎng)絡(luò)上的最長傳輸延遲時(shí)間間隔,再加上阻塞附加時(shí)間和同步延遲時(shí)間等。這就是IEEE 802.3標(biāo)準(zhǔn)中最短幀長度為64字節(jié)的由來。
其中應(yīng)用層幀類型分為數(shù)據(jù)幀和數(shù)據(jù)確認(rèn)幀兩種,具體結(jié)構(gòu)如下:
由于數(shù)據(jù)幀長度可變,又由于數(shù)據(jù)確認(rèn)幀的MAC層長度僅為18字節(jié),故在網(wǎng)絡(luò)控制器初始化時(shí)須設(shè)置MAC層PAD填充功能(即MAC幀長度少于64字節(jié)時(shí),網(wǎng)絡(luò)控制器自動(dòng)將其填充至64字節(jié)后再交給物理層)。
自定義數(shù)據(jù)幀的預(yù)留管理單元還可以制定一些簡單的控制或管理信息幀,以便更好地?cái)U(kuò)充功能和組織軟件。限于篇幅,茲不贅述。如想連入Internet,需要在系統(tǒng)中加入一個(gè)能夠轉(zhuǎn)換本協(xié)議和TCP/IP協(xié)議的前端網(wǎng)關(guān)(實(shí)質(zhì)上是一個(gè)交互翻譯的軟件系統(tǒng))。
3.4 程序設(shè)計(jì)流程
本接口轉(zhuǎn)換器所要實(shí)現(xiàn)的功能是把從RS232串口接收到的串口數(shù)據(jù)轉(zhuǎn)換成以太網(wǎng)幀格式發(fā)送到以太網(wǎng),并把從以太網(wǎng)上接收到的幀數(shù)據(jù)解包轉(zhuǎn)換到串口傳送。程序設(shè)計(jì)中包含初始化程序、主循環(huán)、串行接口程序和網(wǎng)絡(luò)通信接口程序。
程序運(yùn)行首先進(jìn)行初始化工作,包括初始化CS8900A、初始化串口和初始化一些參數(shù),然后進(jìn)入主循環(huán)。主循環(huán)內(nèi)循環(huán)運(yùn)行CS8900A中斷服務(wù)查詢程序和串口緩沖區(qū)查詢程序,若有CS8900A中斷申請,則中斷調(diào)用網(wǎng)絡(luò)通信接口程序;若串口緩沖區(qū)有數(shù)據(jù),則中斷調(diào)用串行接口程序。流程如圖4所示。
3UF7103-1BA00-0
3UF7103-1BA00-0 IC693MDL753 IC693MDL754 IC693MDL760
IC693MDL916 IC693MDL930 IC693MDL931
IC693MDL940 IC693MDR390 IC693MLX000
IC693MSC301 IC693NIU004 IC693PBM200
IC693PBS201 IC693PCM300 IC693PCM301
IC693PCM311 IC693PIF301 IC693PIF350
IC693PIF400 IC693PRG300 IC693PTM100
IC693PTM101 IC693PWR321 IC693PWR322
IC693PWR324 IC693PWR328 IC693PWR330
IC693PWR331 IC693PWR332 IC693TCM302
IC693TCM303
IC697ACC621 IC697ACC624
IC697ACC644 IC697ACC700 IC697ACC701
IC697ACC702 IC697ACC715 IC697ACC720
IC697ACC721 IC697ACC722 IC697ACC723
IC697ACC724 IC697ACC726 IC697ACC727
IC697ACC728 IC697ACC729 IC697ACC730
IC697ACC732 IC697ACC735 IC697ACC744
IC697ACC775 IC697ACC800 IC697ACC801
IC697ACC802 IC697ACC803 IC697ACC804
IC697ACC805 IC697ACC820 IC697ACC821
IC697ACC822 IC697ADC701 IC697ADS701
IC697ALG230 IC697ALG234 IC697ALG320
IC697ALG324 IC697ALG440 IC697ALG441
IC697ALG444 IC697ALG445 IC697BEM711
IC697BEM713 IC697BEM721 IC697BEM731
IC697BEM733 IC697BEM741 IC697BEM761
3UF7103-1BA00-0