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