基于DSP的嵌入式網(wǎng)絡(luò )瘦服務(wù)器的研究
摘要:主要介紹了網(wǎng)絡(luò )傳輸控制協(xié)議TCP/IP的原理以及在嵌入式系統上的實(shí)現,并論述了以TMS320VC5402為核心處理器的嵌入式網(wǎng)路瘦服務(wù)器的研制。該系統簡(jiǎn)化了TCP/IP的實(shí)現,使嵌入式系統成功接入Internet,具有靈活,方便,可移動(dòng)性等特點(diǎn)。并給出了網(wǎng)絡(luò )數據采集處理系統的應用前景。
關(guān)鍵詞:TCP/IP,TMS320VC5402,RTL8019AS,網(wǎng)絡(luò )瘦服務(wù)器;
1. 引言
將嵌入式系統與Internet網(wǎng)結合起來(lái)主要的困難在于,一方面,Internet網(wǎng)上的各種通訊協(xié)議對于處理器的要求比較高,而嵌入式系統微處理器的資源卻是很有限[1];另一方面,嵌入式系統微處理器的型號、種類(lèi)非常多,在各種不同的微處理器上實(shí)現網(wǎng)絡(luò )功能的軟件編程可移植性差 [2]。為了能夠使得嵌入式系統接入Internet,本文精簡(jiǎn)了TCP/IP的實(shí)現,只保留其中最核心的部分,實(shí)現了低速度,低內存,低成本的嵌入式系統上的網(wǎng)絡(luò )連接,一方面能夠作為網(wǎng)絡(luò )服務(wù)器接收和處理來(lái)自遠端的數據,另一方面還能作為Web服務(wù)器給遠程客戶(hù)機提供HTTP訪(fǎng)問(wèn)。
2.系統的硬件設計
2.1 系統硬件設計原理
在本系統中我們采用的核心處理器為T(mén)I公司的TMS320VC5402,TMS320VC5402是16位定點(diǎn)DSP,適應遠程通信等實(shí)時(shí)嵌入式應用的需要。它有高度的操作靈活性和運行速度,具有專(zhuān)用硬件邏輯的CPU、片內存儲器、片內外圍設備以及一個(gè)高度專(zhuān)業(yè)化的指令集[3]。在本文中,由于網(wǎng)絡(luò )數據流較大,我們采用了TMS320VC5402的McBsp接口以及其DMA功能。McBsp具有全雙工通信,雙緩沖的發(fā)送和三緩沖的接收數據存儲器,允許連續的數據流等特點(diǎn),能夠完全滿(mǎn)足網(wǎng)絡(luò )數據流的接收,發(fā)送和處理的要求[4]。DMA控制器可以在沒(méi)有CPU參與的情況下完成存儲器映射區之間以及內部存儲器與片內外設或外部設備的數據傳輸,DMA控制能夠大大減輕CPU的負擔,實(shí)現數據的高速傳送與存儲。
本文中以太網(wǎng)控制芯片采用臺灣Realtek公司生產(chǎn)的RTL8019AS,它是一種高度集成的以太網(wǎng)控制器,實(shí)現了以太網(wǎng)媒介訪(fǎng)問(wèn)層(MAC)和物理層(PHY)的全部功能。按數據鏈路的不同, RTL8019AS內部分為遠程DMA通道和本地DMA通道兩部分。本地DMA完成控制器與網(wǎng)線(xiàn)的數據交換,主處理器收發(fā)數據需對遠程DMA操作 [5]。本系統中,TMS320VC5402通過(guò)IO空間對RTL8019AS進(jìn)行控制以及數據傳輸。
2.2 系統整體硬件框圖
系統框圖如上圖所示,整個(gè)系統分為兩大部分,即DSP處理器和網(wǎng)卡部分。系統有專(zhuān)門(mén)的電源部分為整個(gè)瘦服務(wù)器提供不同的電壓。TMS320VC5402是主處理器,它主要負責對網(wǎng)卡芯片RTL8019AS接收或發(fā)送的數據進(jìn)行處理分析,存儲,并可以以USB或RS485串口總線(xiàn)的方式與上位機相連,其工作過(guò)程為DSP通過(guò)McBsp接收或發(fā)送數據,當McBsp緩沖區數據滿(mǎn)時(shí)觸發(fā)DMA控制器并進(jìn)行數據傳輸,實(shí)現了McBsp與DMA控制器的配合工作。網(wǎng)絡(luò )接口芯片RTL8019AS主要負責對網(wǎng)絡(luò )數據流的接收與發(fā)送,為了防止干擾,獲得穩定的數據流,系統在網(wǎng)卡芯片與外部網(wǎng)絡(luò )數據線(xiàn)之間增加了電氣隔離濾波芯片YCL20F001N。外部接口部分我們采用常用的RJ45網(wǎng)絡(luò )接口。
3.系統軟件設計
系統軟件部分是本文研究的重點(diǎn),由于嵌入式系統的資源有限,所以系統只涉及到TCP/IP中的核心的部分。按照TCP/IP協(xié)議分為四個(gè)部分[6]的定義,系統軟件的設計也分為相應的四個(gè)部分,即:網(wǎng)卡底層驅動(dòng)程序,ARP以及RARP程序對應網(wǎng)絡(luò )接口層;IP,ICMP以及IGMP程序對應互聯(lián)網(wǎng)絡(luò )層;TCP和UDP程序部分對應網(wǎng)絡(luò )傳輸層;HTTP服務(wù)程序對應應用層。
3.1 網(wǎng)卡驅動(dòng)程序設計
在網(wǎng)卡芯片RTL8019AS的驅動(dòng)程序設計中主要涉及到RTL8019AS的寄存器配置,DSP對RTL8019AS內存的讀取以及發(fā)送數據,數據鏈路層協(xié)議ARP和RARP的程序設計等。
◆ RTL8019AS寄存器以及對它們的初始化配置
RTL8019AS的內部輸入輸出地址共32個(gè),地址偏移量為00H―1FH。其中00H―0FH共16個(gè)地址,為寄存器地址。10H―17H共8個(gè)地址,為DMA地址。18H―1FH共8個(gè)地址,為復位端口[5]。本文中我們只用到了上面的地址中只有18個(gè),即00H―0FH共16個(gè)寄存器地址,10H DMA地址,1FH 復位地址。RTL8019AS初始化配置為操作方式為跳線(xiàn)方式Jumper;端口I/O base為0300-31FH。
◆ RTL8019AS的數據收發(fā)
處理器對RTL8019AS的軟件操作,有查詢(xún)和中斷兩種方式[5]。在本文中我們采用了查詢(xún)方式對8019中的數據進(jìn)行讀取。在查詢(xún)方式下,主程序通過(guò)CURR和Boundary兩個(gè)寄存器的值來(lái)判斷是否收到一幀數據[7]。
◆ 數據鏈路層協(xié)議ARP的程序設計
在TCP/IP協(xié)議通訊中,涉及到的地址是IP地址,這是來(lái)自網(wǎng)絡(luò )層的地址,然而以太網(wǎng)都有自己的尋址機制,所以?xún)蓪又g必須進(jìn)行地址之間的轉換。向以太網(wǎng)中發(fā)送IP數據時(shí),如果目的IP地址在A(yíng)RP高速緩存表中查詢(xún)相應的以太網(wǎng)地址失敗,ARP會(huì )先保留待發(fā)送的IP數據報,然后廣播一個(gè)詢(xún)問(wèn)目的主機硬件地址的ARP報文,等收到回答后再將IP數據報發(fā)送出去,RARP協(xié)議恰恰相反,它負責將以太網(wǎng)地址轉化為IP地址[5]。
在本系統中只涉及到ARP程序設計,其具體過(guò)程為:發(fā)送ARP廣播請求時(shí),目的以太網(wǎng)地址全為1;接收到ARP數據包時(shí)首先判斷ARP數據包的類(lèi)型,如果是ARP請求包,則將自己的MAC地址拷貝到數據包中,生成ARP應答包,然后發(fā)送出去;如果收到的是ARP應答包,則存儲遠程主機的MAC地址。
3.2 互聯(lián)網(wǎng)絡(luò )層的程序設計
網(wǎng)絡(luò )層主要涉及到IP協(xié)議、ICMP協(xié)議和IGMP協(xié)議。IP協(xié)議是TCP/IP中的重點(diǎn),所有的應用都要通過(guò)它在Internet進(jìn)行數據傳輸,IP協(xié)議提供的是不可靠、無(wú)連接的數據分組傳送服務(wù)。ICMP協(xié)議主要是用于差錯控制。IGMP協(xié)議主要是用于支持主機和路由器迸行多播[5]。為了簡(jiǎn)化TCP/IP協(xié)議,在本系統中只涉及到IP,ICMP的程序設計。
◆ IP數據報實(shí)現
在本協(xié)議棧中,IP層的實(shí)現就是把要發(fā)送出去的消息進(jìn)行IP打包,即加上IP包頭,使之符合IP數據包的格式發(fā)送到物理層;將接收到的來(lái)自物理層的數據包進(jìn)行IP解包,即去掉包頭,送到TCP層。
IP協(xié)議的實(shí)現主要流程是:當接收到以太網(wǎng)上的數據包時(shí),根據IP幀頭中的數據類(lèi)型,轉交給不同的子程序進(jìn)行更進(jìn)一步的處理。見(jiàn)圖2:
◆ ICMP數據報的格式及其實(shí)現
由于本文所研究的是嵌入式瘦服務(wù)器,所以我們簡(jiǎn)化了ICMP的程序設計,只涉及ECHO和ECHO REPLAY消息,目的是為了測試另一臺主機是否可達。其主要工作過(guò)程為先判斷所收到的ICMP數據包是否為ECHO幀,如果是則生成相應的ICMP REPLAY幀,并發(fā)送出去。
3.3 傳輸層的程序設計
傳輸層主要包括UDP協(xié)議和TCP協(xié)議,在本文中主要涉及到TCP的程序設計。傳輸控制協(xié)議TCP提供面向連接的可靠的字節流通信服務(wù),是能動(dòng)態(tài)滿(mǎn)足互聯(lián)網(wǎng)的要求并能處理各種錯誤的可靠性協(xié)議[5]。
◆ TCP連接的建立與關(guān)閉
TCP工作過(guò)程是: 建立連接、數據傳輸、關(guān)閉連接。在將數據發(fā)向遠方主機之前,必須先建立TCP接入。在建立TCP連接時(shí),用到了三向握手機制。包含數據的每一個(gè)TCP段都應該取得對端返回的應答段(ACK),作為握手信號來(lái)保證數據被可靠地接收。應答段本身不再需要應答,避免應答陷入無(wú)窮的嵌套。每一個(gè)TCP段中都包含一個(gè)序號,并以這個(gè)序號作為數據流的定位器,而返給客戶(hù)機的應答號則表達所發(fā)來(lái)的數據已經(jīng)妥收。消除傳輸中的錯誤,仰賴(lài)持續跟蹤已發(fā)出數據段的應答是否返回。在設定的時(shí)間段內,如果未收到該段的應答則應重發(fā)。如果還是未收到應答,則適當增加間隔時(shí)間再次重發(fā)。在總的極限時(shí)間段內一直不能等到應答返回,則本次接入失效不能再用,并應將出錯情況及時(shí)通知應用程序。關(guān)閉TCP接入分為4向握手才能完成[6]。
由于TMS320VC5402的資源有限,因此,在設計TCP協(xié)議時(shí)不得不采取大幅度的調整。同一時(shí)間只能有一個(gè)TCP任務(wù),不支持分片和重組,只能同時(shí)接收和處理一個(gè)TCP包,不支持類(lèi)型服務(wù)安全選項。在MCU啟動(dòng)時(shí),將打開(kāi)本地的80端口,作為一個(gè)Passive Port,等待網(wǎng)絡(luò )上的客戶(hù)端設備連接,這就能提供HTTP服務(wù)的支持。
◆ TCP數據的處理
TCP數據的處理包括兩種情況:發(fā)送數據或接收數據。發(fā)送數據時(shí),在數據前面加上TCP包頭再發(fā)送到IP層。接收TCP數據包處理過(guò)程如下圖3所示:
3.4 應用層的程序設計
TCP/IP的應用層協(xié)議主要有Telnet協(xié)議、文件傳輸協(xié)議FTP、簡(jiǎn)單郵件協(xié)議SMTP、簡(jiǎn)單的網(wǎng)絡(luò )管理協(xié)議SNMP和超文本連接協(xié)議HTTP等等。本系統中我們在MCU的Flash中存儲了一個(gè)HTML 網(wǎng)頁(yè),客戶(hù)端存在外部請求時(shí),傳輸網(wǎng)頁(yè)給客戶(hù)端,從而同時(shí)實(shí)現了一個(gè)Web服務(wù)器[8]。
3.5 整體軟件框架
系統的整體軟件設計主要分為硬件初始化部分和網(wǎng)絡(luò )數據接收與發(fā)送處理部分,其中硬件初始化部分主要包括TMS320VC5402的初始化以及其McBsp和DMA控制器的配置,USB接口芯片的初始化,RS485串行接口的初始化,網(wǎng)卡芯RTL8019的驅動(dòng)程序設計;網(wǎng)絡(luò )數據的處理部分主要包括來(lái)自遠程采集數據的接收與處理,存儲和對來(lái)自網(wǎng)絡(luò )客戶(hù)機的訪(fǎng)問(wèn)的處理等。圖4即為系統軟件設計的整體架構。
4.系統的應用前景
本系統主要應用于網(wǎng)絡(luò )數據采集,處理,即可以作為Web服務(wù)器為外部所訪(fǎng)問(wèn),又可以為遠程采集到的數據進(jìn)行處理和存儲。該系統不僅利用了網(wǎng)絡(luò )數據傳輸的強大功能,還結合了嵌入式系統的靈活性,在不久的將來(lái)當IPV6得以實(shí)現的時(shí)候,每個(gè)嵌入式系統都擁有自己獨立的IP地址將成為可能,本系統也將有更加廣闊的應用前景[9]。
參考文獻:
[1]楊全勝等,可接入Internet的智能儀表的設計,《工業(yè)控制計算機》2001年14卷 12期
[2] 王男、姚亦封、陳抗生,一種嵌入式系統接入Internet的方法與實(shí)現,《電子技術(shù)》2000.10
[3] 清源科技.TMS320C54X DSP硬件開(kāi)發(fā)教程.北京,機械工業(yè)出版社,2003.
[4]TMS320VC5402 Fixed-Point Digital Signal Processor,Data Manual.Texas Instruments,2000
[5] REALTEK SEMI-CONDUCTOR CO.LTD.《RTL8019AS SPECIFICATION》.TAIWAN,2000.
[6] W.Richard Stevens著(zhù),范建華,胥光輝,張濤等譯,TCP/IP詳解 卷1:協(xié)議 ,北京:機械工業(yè)出版社,2000.
[7] 王保進(jìn)、徐太忠等,嵌入式系統以太網(wǎng)控制器驅動(dòng)程序的設計與實(shí)現,《電子技術(shù)》2002.4
[8] 袁毅,基于嵌入式Web服務(wù)器的網(wǎng)絡(luò )視頻監控,《電網(wǎng)技術(shù)》,第24卷 第五期
[9] 楊克儉等,嵌入式系統產(chǎn)品接入internet的技術(shù)研究, 《微計算機信息》(嵌入式與SOC)2006年第22卷第1-2期第43頁(yè)
評論