《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 利用Rabbit3000芯片設(shè)計(jì)以太網(wǎng)接入功能與TCP/IP協(xié)議棧的優(yōu)勢(shì)分析

利用Rabbit3000芯片設(shè)計(jì)以太網(wǎng)接入功能與TCP/IP協(xié)議棧的優(yōu)勢(shì)分析

2008-07-07
作者:楊 早

??? 摘 要: 首先分析了網(wǎng)絡(luò)方案設(shè)計(jì)過(guò)程中需要注意的三個(gè)問(wèn)題,介紹并分析了現(xiàn)有的幾種設(shè)計(jì)方案,并以Rabbit3000芯片為例,分析了該芯片在構(gòu)建以太網(wǎng)接口和TCP/IP" title="TCP/IP">TCP/IP協(xié)議棧" title="協(xié)議棧">協(xié)議棧方面的優(yōu)勢(shì)。
??? 關(guān)鍵詞: 以太網(wǎng)? TCP協(xié)議? Rabbit3000微處理器

?

??? 在長(zhǎng)期采用RS-232/RS-485等串行傳輸接口作為數(shù)據(jù)傳輸接口之后,現(xiàn)在越來(lái)越多的基于單片機(jī)的嵌入式系統(tǒng)開(kāi)始提供以太網(wǎng)接口的高速數(shù)據(jù)傳輸接口,用于多個(gè)節(jié)點(diǎn)之間的數(shù)據(jù)交互,而且在單片機(jī)內(nèi)部實(shí)現(xiàn)了TCP/IP協(xié)議棧,從而具備遠(yuǎn)程網(wǎng)絡(luò)間的數(shù)據(jù)傳輸能力。TCP/IP協(xié)議棧是互聯(lián)網(wǎng)上數(shù)據(jù)傳輸?shù)氖聦?shí)標(biāo)準(zhǔn),支持TCP/IP協(xié)議??梢允垢鱾€(gè)廠家生產(chǎn)的設(shè)備之間實(shí)現(xiàn)互連互通,而且可以較為方便地訪問(wèn)互聯(lián)網(wǎng)上的其他資源,如文件服務(wù)器、郵件服務(wù)器等。
??? 不斷提供更多功能是嵌入式系統(tǒng)的一個(gè)發(fā)展方向,但是更多的功能就意味著更多的計(jì)算任務(wù)、代碼存儲(chǔ)空間、數(shù)據(jù)存儲(chǔ)" title="數(shù)據(jù)存儲(chǔ)">數(shù)據(jù)存儲(chǔ)空間,而嵌入式系統(tǒng)的計(jì)算能力和存儲(chǔ)空間相對(duì)有限,因此需要在設(shè)計(jì)和選型時(shí)仔細(xì)規(guī)劃。本文從網(wǎng)絡(luò)功能入手,針對(duì)方案設(shè)計(jì)中的技術(shù)細(xì)節(jié),從以下三點(diǎn)進(jìn)行了分析:(1)以太網(wǎng)接入" title="以太網(wǎng)接入">以太網(wǎng)接入并不等同于支持TCP/IP協(xié)議棧; (2)并不是每一種類型的單片機(jī)都能夠提供足夠的處理能力來(lái)支持以太網(wǎng)接入;(3)系統(tǒng)對(duì)TCP/IP協(xié)議棧的支持是有量化衡量指標(biāo)的,不只是一個(gè)是或否的問(wèn)題。
??? 經(jīng)過(guò)上述分析之后,本文就目前已有的幾種設(shè)計(jì)方法,分析了Rabiit3000微處理器在提供網(wǎng)絡(luò)功能方面的一些技術(shù)優(yōu)勢(shì)。
1 以太網(wǎng)接入不等于對(duì)TCP/IP協(xié)議棧的支持
??? 作為一種數(shù)據(jù)傳輸技術(shù),從傳統(tǒng)的OSI七層模型(見(jiàn)圖1)來(lái)分析,以太網(wǎng)技術(shù)提供的是物理層和數(shù)據(jù)鏈路層上的數(shù)據(jù)傳輸服務(wù),它與RS-485傳輸協(xié)議的區(qū)別在于傳輸速度快和支持對(duì)等傳輸模式。以太網(wǎng)技術(shù)沒(méi)有規(guī)定每一個(gè)傳輸點(diǎn)的地址分配問(wèn)題、報(bào)文的轉(zhuǎn)發(fā)與路由問(wèn)題,它部分解決了點(diǎn)對(duì)點(diǎn)之間數(shù)據(jù)傳輸正確性問(wèn)題,但是沒(méi)有規(guī)定如何保證非直接相連節(jié)點(diǎn)之間報(bào)文傳輸?shù)膩G失、重復(fù)以及亂序問(wèn)題。這些問(wèn)題是局域網(wǎng)以及廣域網(wǎng)都必須面對(duì)的問(wèn)題,需要有另外的協(xié)議機(jī)制來(lái)解決,從計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展過(guò)程看,以太網(wǎng)上應(yīng)用的網(wǎng)絡(luò)層/傳輸層協(xié)議有NetBEUI 協(xié)議、IPX/SPX協(xié)議、TCP/IP協(xié)議棧等。NetBEUI 協(xié)議是IBM公司開(kāi)發(fā)的非路由協(xié)議,用于攜帶NETBIOS通信,其協(xié)議比較簡(jiǎn)單,適用于單個(gè)網(wǎng)段組成的局域網(wǎng);IPX/SPX協(xié)議是NOVELL公司用于NETWARE客戶端/服務(wù)器的協(xié)議族,其中IPX協(xié)議具有完全的路由能力,可以跨網(wǎng)絡(luò)傳輸報(bào)文,SPX協(xié)議則負(fù)責(zé)保證報(bào)文在跨網(wǎng)絡(luò)傳輸時(shí)的正確性;IP/TCP協(xié)議棧是廣域網(wǎng)上應(yīng)用非常廣泛的傳輸協(xié)議,具有很強(qiáng)的靈活性,能夠支持多種網(wǎng)絡(luò)接入方式,如電話線、以太網(wǎng)、無(wú)線接入等。


??? 如上所述,即使設(shè)計(jì)方案提供了以太網(wǎng)接入功能,它也只是提供了一個(gè)高速、多點(diǎn)間的數(shù)據(jù)傳輸接口,并不意味著設(shè)計(jì)方案有完整的數(shù)據(jù)傳輸功能,不能保證設(shè)備之間的數(shù)據(jù)互聯(lián)互通。

2 單片機(jī)的數(shù)據(jù)存儲(chǔ)能力和存取速度分析
??? 對(duì)于個(gè)人電腦,從以太網(wǎng)絡(luò)上讀取和發(fā)送數(shù)據(jù)的任務(wù)是由網(wǎng)卡負(fù)責(zé)的,主板和網(wǎng)卡之間一般采用基于中斷的通知方式和基于PCI總線的數(shù)據(jù)傳輸方式。PCI總線提供32bit的數(shù)據(jù)傳輸寬度與132Mbps的傳輸速度,這些都是小型單片機(jī)所不能提供的。在基于單片機(jī)的設(shè)計(jì)方案中,單片機(jī)多數(shù)通過(guò)8位數(shù)據(jù)總線與RTL8019等以太網(wǎng)MAC控制芯片相連,單片機(jī)直接從以太網(wǎng)MAC控制芯片讀取收到的數(shù)據(jù)報(bào)文,然后放置在存儲(chǔ)芯片中。對(duì)于單指令周期的單片機(jī),假設(shè)它接在10Mbps的以太網(wǎng)絡(luò)上,MAC控制芯片本身能夠緩沖10個(gè)報(bào)文,并可能出現(xiàn)連續(xù)幾十個(gè)報(bào)文的流量模型,則單片機(jī)需要在數(shù)據(jù)總線上提供10M~20Mbps的數(shù)據(jù)傳輸帶寬,以防止因?yàn)榫彌_溢出而丟失報(bào)文。如果單片機(jī)使用的是8位數(shù)據(jù)總線,則一條數(shù)據(jù)傳輸指令要在0.5μs~1μs之內(nèi)完成。對(duì)于傳統(tǒng)的8051單片機(jī),一條MOVX需要兩個(gè)機(jī)器周期的時(shí)間,每個(gè)機(jī)器周期由12個(gè)時(shí)鐘周期組成,這就意味著單片機(jī)的晶振要在24M~48MHz左右??紤]到單片機(jī)同時(shí)還要以高優(yōu)先級(jí)處理按鍵、顯示、A/D轉(zhuǎn)換等控制任務(wù),只能將部分處理能力分配給以太網(wǎng)報(bào)文處理功能,所以以太網(wǎng)接入功能的引入對(duì)于單片機(jī)的運(yùn)算速度提出了比較高的要求。
??? 基于單片機(jī)的以太網(wǎng)接入設(shè)計(jì)方案另一個(gè)需要注意的問(wèn)題是單片機(jī)數(shù)據(jù)存儲(chǔ)空間的大小。與個(gè)人電腦相比,單片機(jī)的數(shù)據(jù)存儲(chǔ)空間非常有限,8051系列單片機(jī)" title="系列單片機(jī)">系列單片機(jī)的外部數(shù)據(jù)存儲(chǔ)空間為64KB,TI公司推出的MSC1210單片機(jī)外部也可擴(kuò)展至64KB存儲(chǔ)器。以太網(wǎng)上傳輸?shù)膱?bào)文常規(guī)大小在1KB左右,IP協(xié)議報(bào)文大小規(guī)定不超過(guò)64KB,除了其他變量和數(shù)據(jù)結(jié)構(gòu),64KB的存儲(chǔ)器可以放置幾十個(gè)以太網(wǎng)報(bào)文和若干個(gè)IP層協(xié)議報(bào)文。在不考慮TCP/IP協(xié)議棧的情況下,這樣的存儲(chǔ)情況可以滿足解決報(bào)文丟失、亂序問(wèn)題的要求。因此64KB存儲(chǔ)器是單片機(jī)進(jìn)行以太網(wǎng)報(bào)文處理的一個(gè)基本要求。
3系統(tǒng)對(duì)TCP/IP協(xié)議棧的量化衡量指標(biāo)的要求
??? TCP/IP協(xié)議棧最早是為Unix系統(tǒng)設(shè)計(jì)的,隨后移植到Windows和Linux等操作系統(tǒng)上,是目前互聯(lián)網(wǎng)和局域網(wǎng)通信的事實(shí)標(biāo)準(zhǔn)。TCP/IP協(xié)議棧內(nèi)包括了多項(xiàng)協(xié)議,例如處理網(wǎng)絡(luò)層報(bào)文的IP協(xié)議和ICMP協(xié)議、處理數(shù)據(jù)報(bào)發(fā)送的UDP協(xié)議、處理有連接的傳輸層控制協(xié)議TCP、處理局域網(wǎng)內(nèi)尋址的ARP/RARP協(xié)議等。如果系統(tǒng)要求有訪問(wèn)WEB網(wǎng)頁(yè)的功能,則在TCP/IP協(xié)議棧中還要添加對(duì)HTTP協(xié)議的支持。從這一點(diǎn)來(lái)說(shuō),系統(tǒng)對(duì)TCP/IP協(xié)議棧的支持是有量化衡量指標(biāo)的,不只是一個(gè)是或否的問(wèn)題。考慮到單片機(jī)有限的代碼空間和數(shù)據(jù)存儲(chǔ)空間,單片機(jī)對(duì)TCP/IP協(xié)議棧的支持就更加受限。例如單片機(jī)應(yīng)用TCP/IP協(xié)議多為完成少量數(shù)據(jù)的采集傳輸,而不是網(wǎng)頁(yè)瀏覽、文件傳輸這些功能。所以單片機(jī)一般不完全支持HTTP協(xié)議。
??? 即使是在單片機(jī)上實(shí)現(xiàn)了某種協(xié)議,資源上的限制也可能使單片機(jī)簡(jiǎn)化對(duì)該協(xié)議的實(shí)現(xiàn),例如TCP協(xié)議提供傳輸層上點(diǎn)對(duì)點(diǎn)的可靠數(shù)據(jù)連接,由于它采用了滑動(dòng)窗口、握手信號(hào)和三次握手建立連接等方法來(lái)保證數(shù)據(jù)接收的有序和正確,并利用擁塞控制機(jī)制來(lái)調(diào)整報(bào)文的發(fā)送速度,所以需要較大的數(shù)據(jù)存儲(chǔ)空間來(lái)保存亂序到達(dá)的報(bào)文。如果單片機(jī)同時(shí)開(kāi)通多條TCP連接,則需要的存儲(chǔ)空間會(huì)相應(yīng)加倍。在不能提供足夠存儲(chǔ)空間的情況下,單片機(jī)可能會(huì)通過(guò)舍棄擁塞控制機(jī)制、或者減小滑動(dòng)窗口的大小,限制并發(fā)TCP連接的數(shù)目等方法來(lái)降低資源的開(kāi)銷,這樣實(shí)現(xiàn)的TCP協(xié)議棧與傳統(tǒng)的個(gè)人電腦上所使用的TCP/IP協(xié)議棧在功能和性能方面都有很大的區(qū)別。另一個(gè)常見(jiàn)的例子是IP包的分段問(wèn)題,IP報(bào)文最大可以為65KB并進(jìn)行分段傳輸,而在單片機(jī)里一般很難存放如此大的報(bào)文,所以一般不支持分段,單片機(jī)會(huì)采用發(fā)送小數(shù)據(jù)包的方式來(lái)避免分段。
4 在單片機(jī)上實(shí)現(xiàn)以太網(wǎng)接入和TCP/IP協(xié)議棧的多種方法
??? 設(shè)計(jì)性能指標(biāo)和成本核算要求是方案設(shè)計(jì)時(shí)需要平衡的兩個(gè)基本方向,越高的性能指標(biāo)就會(huì)要求更多的計(jì)算能力、存儲(chǔ)資源和更復(fù)雜的處理算法,這勢(shì)必會(huì)提高最終產(chǎn)品的核算成本。所以嵌入式系統(tǒng)的設(shè)計(jì)人員往往會(huì)根據(jù)自己的實(shí)際要求,提出相應(yīng)的設(shè)計(jì)方案,同時(shí)滿足性能和成本核算的要求?,F(xiàn)有的公司提供了不同的實(shí)現(xiàn)以太網(wǎng)接入和TCP/IP協(xié)議棧的方法:在以太網(wǎng)接入方面有微處理器加MAC控制芯片的方案,也有微控制器整合MAC控制功能的方案;在TCP/IP協(xié)議棧實(shí)現(xiàn)方面,有單微處理器加定制協(xié)議棧的方案,也有雙微處理器分工加軟件協(xié)議棧的方案,也有采用專用芯片來(lái)處理協(xié)議報(bào)文的方案。
??? 在以太網(wǎng)接入功能的設(shè)計(jì)方案中,很多具有8位數(shù)據(jù)總線的單片機(jī)采用外接MAC控制芯片的方案,如ATMEL公司生產(chǎn)的89S51系列單片機(jī)外接RTL8019AS芯片,由于89C51系列單片機(jī)支持的RAM單元數(shù)目不超過(guò)2K,所以這種方案不會(huì)支持類似TCP協(xié)議這樣的復(fù)雜通信協(xié)議,一般用于簡(jiǎn)單、少量的數(shù)據(jù)傳輸,89S51系列單片機(jī)的價(jià)格在10元以內(nèi),RTL8019AS芯片的價(jià)格在20元左右;而Freescale公司推出的MC9S12NE64單片機(jī)內(nèi)置10/100Mbps以太網(wǎng)MAC控制器及PHY接口控制器,在只需一路以太網(wǎng)通信接口的情況下無(wú)需額外的MAC控制器,簡(jiǎn)化了硬件電路設(shè)計(jì)。從存儲(chǔ)容量上分析,MC9S12NE64單片機(jī)提供64KB的閃存和8KB的RAM,可存儲(chǔ)的數(shù)據(jù)量也較為有限。
??? 在TCP/IP協(xié)議棧實(shí)現(xiàn)方面,采用專用芯片來(lái)處理協(xié)議報(bào)文的方案是一個(gè)比較新的實(shí)現(xiàn)方法。以韓國(guó)WIZnet公司推出的W3100A芯片為例,該芯片能處理TCP、UDP、ICMP和IP協(xié)議報(bào)文以及以太網(wǎng)的MAC協(xié)議報(bào)文,它給負(fù)責(zé)應(yīng)用邏輯的微處理器提供一個(gè)類似于Socket的調(diào)用接口,可同時(shí)支持4路連接。W3100A芯片內(nèi)置16KB的RAM,用于緩存收到的協(xié)議報(bào)文,它的售價(jià)在7美金左右。為了發(fā)揮W3100A芯片的作用,目前配合W3100A芯片使用的微處理器以ARM類型的微處理器居多,以ATMEL公司生產(chǎn)的AT91M40800芯片為例,該芯片基于ARM7TDMI內(nèi)核,內(nèi)置8KB的RAM,外部RAM可以擴(kuò)充到8MB,并可外接LCD等復(fù)雜顯示設(shè)備。
??? 另外一種在嵌入式系統(tǒng)上實(shí)現(xiàn)TCP/IP協(xié)議棧的方法是采用雙處理器的方案,其中一個(gè)微處理器主要負(fù)責(zé)應(yīng)用邏輯的控制,包括按鍵控制、顯示處理和信號(hào)采集與控制等多項(xiàng)功能;另一個(gè)處理器則專門負(fù)責(zé)數(shù)據(jù)在網(wǎng)絡(luò)上的傳輸與接收。例如有設(shè)計(jì)方案采用ATMEL公司生產(chǎn)的AT90S8515微控制器作為網(wǎng)絡(luò)傳輸控制器,采用低端的AT89S53作為事務(wù)邏輯控制器,兩個(gè)微處理器之間采用某種協(xié)議來(lái)交換數(shù)據(jù),實(shí)現(xiàn)任務(wù)的同步。這樣可以利用8位/16位微處理器價(jià)格低的特點(diǎn)來(lái)實(shí)現(xiàn)較多的功能,但是相應(yīng)地軟件設(shè)計(jì)的難度增大了,在某種情況下還需要嵌入式操作系統(tǒng)的支持。
??? 單枚微處理器加定制協(xié)議棧是實(shí)現(xiàn)TCP/IP協(xié)議棧的另一種方法,在這種方法中微處理器處理能力的高低和定制協(xié)議棧的大小與性能是影響總體性能的關(guān)鍵因素。針對(duì)某種微處理器進(jìn)行過(guò)定制優(yōu)化的協(xié)議棧往往能表現(xiàn)出優(yōu)異的性能,Rabbit Semiconductor公司推出的Rabbit2000/3000系列微處理器就是一個(gè)協(xié)議棧定制的例子,Rabbit2000/3000微處理器的開(kāi)發(fā)包中帶有完整的TCP/IP協(xié)議棧實(shí)現(xiàn)代碼,用戶不需要從第三方獲取TCP/IP協(xié)議棧實(shí)現(xiàn)代碼然后自己移植,可以縮短開(kāi)發(fā)周期并獲得一定的性能保證。
5 Rabbit3000系列單片機(jī)實(shí)現(xiàn)以太網(wǎng)接入和TCP/IP協(xié)議棧的優(yōu)勢(shì)分析
??? 如上所述,Rabbit3000系列單片機(jī)擁有的第一個(gè)優(yōu)勢(shì)就是有針對(duì)硬件定制的TCP/IP協(xié)議棧實(shí)現(xiàn)代碼,使用戶只專著于應(yīng)用邏輯的設(shè)計(jì)工作。該協(xié)議棧實(shí)現(xiàn)的協(xié)議包括PPP協(xié)議、套接字級(jí)的TCP和UDP協(xié)議、FTP、TFTP、HTTP(w/SSI 和 CGI)、DHCP客戶端、SMTP客戶端以及 POP3協(xié)議等,可以滿足用戶對(duì)互聯(lián)網(wǎng)資源一般性的訪問(wèn)和相互間的數(shù)據(jù)傳輸。
??? Rabbit3000系列單片機(jī)擁有的另一個(gè)優(yōu)勢(shì)是無(wú)需外部?jī)?nèi)存驅(qū)動(dòng)器或者接口邏輯就可直接尋址多達(dá)1MB的存儲(chǔ)空間,這一點(diǎn)在8位單片機(jī)中并不多見(jiàn)。它具備20根地址線,3根芯片選擇線,2根輸出使能線,以及2根寫(xiě)使能線可以直接與6個(gè)存儲(chǔ)設(shè)備(Flash或SRAM)交互,用戶可以根據(jù)各自不同的需求選擇適當(dāng)?shù)拇鎯?chǔ)芯片。如前所述,TCP協(xié)議的實(shí)現(xiàn)對(duì)可用存儲(chǔ)空間的大小很敏感,存儲(chǔ)空間的大小直接影響到所支持并發(fā)連接的數(shù)目、滑動(dòng)窗口的大小、對(duì)亂序到達(dá)報(bào)文的緩存和處理能力,存儲(chǔ)空間大的情況下一般會(huì)取得更好的運(yùn)行效果。如果以太網(wǎng)的數(shù)據(jù)發(fā)送速度達(dá)到100Mbps,隨著報(bào)文接收突發(fā)性的增強(qiáng),存儲(chǔ)空間的大小對(duì)協(xié)議棧運(yùn)行效果的影響會(huì)越加明顯。
??? Rabbit3000系列單片機(jī)擁有的第三個(gè)優(yōu)勢(shì)是高運(yùn)算速度。Rabbit3000系列單片機(jī)的運(yùn)行時(shí)鐘最高達(dá)到54MHz,每指令字節(jié)的執(zhí)行時(shí)間為兩個(gè)時(shí)鐘,因此它的運(yùn)算速度非???。IP協(xié)議、UDP協(xié)議和TCP協(xié)議的報(bào)文都需要計(jì)算校驗(yàn)和,而且由于這些校驗(yàn)值多為16位,在8位單片機(jī)上需要更多的指令來(lái)求出計(jì)算結(jié)果,所以Rabbit3000系列單片機(jī)的速度優(yōu)勢(shì)與其他8位單片機(jī)相比非常明顯。
參考文獻(xiàn)
[1] WRIGHT G R,STEVENS W R. TCP/IP illustrated. volume 2nd, the implementation,2004.
[2] ?Rabbit 3000 microprocessor introduction. http://www.rabbitsemiconductor.com/products/rab3000/index.shtml.
[3] ?Zilog microprocessor introduction. http:// www.zilog.com/products/.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。