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