《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 嵌入式uIP TCP/IP協(xié)議棧在基于DSP系統(tǒng)中的應(yīng)用
嵌入式uIP TCP/IP協(xié)議棧在基于DSP系統(tǒng)中的應(yīng)用
來源:微型機(jī)與應(yīng)用2013年第9期
謝文娣
(安徽新華學(xué)院,,安徽 合肥 230088)
摘要: 搭建了一個(gè)基于DSP嵌入式系統(tǒng)的以太網(wǎng)接入硬件平臺,,給出了軟件設(shè)計(jì)思路及具體實(shí)現(xiàn)方法,對開源的uIP協(xié)議棧進(jìn)行裁剪和修改,,完成了設(shè)備驅(qū)動(dòng)程序的開發(fā)和嵌入式uIP協(xié)議棧的移植,,最終實(shí)現(xiàn)了嵌入式系統(tǒng)接入以太網(wǎng)的功能,,且其實(shí)現(xiàn)過程簡單,、成本較低。
Abstract:
Key words :

摘  要: 搭建了一個(gè)基于DSP嵌入式系統(tǒng)的以太網(wǎng)接入硬件平臺,,給出了軟件設(shè)計(jì)思路及具體實(shí)現(xiàn)方法,,對開源的uIP協(xié)議棧進(jìn)行裁剪和修改,完成了設(shè)備驅(qū)動(dòng)程序的開發(fā)和嵌入式uIP協(xié)議棧的移植,,最終實(shí)現(xiàn)了嵌入式系統(tǒng)接入以太網(wǎng)的功能,,且其實(shí)現(xiàn)過程簡單、成本較低,。
關(guān)鍵詞: DSP,;uIP協(xié)議棧;接入以太網(wǎng)

 近年來,,嵌入式技術(shù)發(fā)展迅速并在許多電子產(chǎn)品(如手持式,、便攜式)中都有廣泛的應(yīng)用[1],而嵌入式產(chǎn)品網(wǎng)絡(luò)化是當(dāng)今社會(huì)一股不可抵擋的研究潮流,。嵌入式系統(tǒng)必須具有網(wǎng)絡(luò)互連功能才能快速地與設(shè)備通信,,以太網(wǎng)是目前使用最廣泛的局域網(wǎng)技術(shù)。由于有些嵌入式系統(tǒng)要求網(wǎng)絡(luò)的實(shí)時(shí)性較高,,因此本文使用精簡TCP/IP協(xié)議棧——uIP協(xié)議棧來實(shí)現(xiàn)基于DSP的嵌入式系統(tǒng)以太網(wǎng)接入功能,,下面詳細(xì)闡述其設(shè)計(jì)與實(shí)現(xiàn)。
1 系統(tǒng)硬件平臺
 TMS320C5000系列是16 bit定點(diǎn)DSP,,通常被應(yīng)用在如VoIP以及IP電話網(wǎng)關(guān)等通信領(lǐng)域中,。基于DSP的嵌入式系統(tǒng)中選擇的數(shù)字信號處理芯片是TI公司的TMS320VC5510芯片,,網(wǎng)卡芯片選擇的是由Cirrus Logic公司生產(chǎn)的CS8900AS芯片,。系統(tǒng)硬件接口基本結(jié)構(gòu)圖如圖1所示。

 TMS320VC5510芯片是由TI公司生產(chǎn)的第一個(gè)基于定點(diǎn)TMS320C55x核,,具有低功耗,、高性能的16 bit數(shù)字信號處理器[2]。Cirrus Logic公司專門設(shè)計(jì)了以太網(wǎng)控制器CS8900A,,這款網(wǎng)卡芯片主要應(yīng)用在對可靠性要求極高的工業(yè)控制領(lǐng)域中[3],。

 


2.1 底層驅(qū)動(dòng)程序的設(shè)計(jì)
 本系統(tǒng)采用查詢方式來完成CS8900A芯片的軟件編程控制工作。這一工作主要分為以下3個(gè)過程:
?。?)首先是完成以太網(wǎng)控制芯片的初始化工作,,由初始化函數(shù)ethernet_driver_init(void)來完成發(fā)送/接收配置寄存器的相關(guān)設(shè)置工作,如對CS8900A進(jìn)行軟件復(fù)位,、設(shè)置以太網(wǎng)接口參數(shù)以及設(shè)置以太網(wǎng)的硬件地址,。
 (2)若發(fā)送數(shù)據(jù),,則由數(shù)據(jù)發(fā)送函數(shù)ethernet_driver_write()先將發(fā)送命令寫入CS8900A的TxCMD寄存器中,,其次在CS8900A的Txlength寄存器中寫入將要發(fā)送的數(shù)據(jù)幀長度,,接著檢查BusStatus寄存器的PPD,待PPD處于空閑狀態(tài)時(shí)將要發(fā)送的數(shù)據(jù)幀寫入CS8900A中,,最后CS8900A將自動(dòng)決定數(shù)據(jù)幀以相應(yīng)的報(bào)文根據(jù)TxCMD寄存器的設(shè)置向以太網(wǎng)上發(fā)送,。
 (3)若以太網(wǎng)接收到數(shù)據(jù)包,,則由數(shù)據(jù)接收函數(shù)ethernet_driver_write()讀取數(shù)據(jù)包,,CS8900A將根據(jù)接收配置寄存器的設(shè)置自動(dòng)對接收的報(bào)文進(jìn)行預(yù)處理。
2.2 uIP協(xié)議棧的設(shè)計(jì)
 由瑞典計(jì)算機(jī)科學(xué)學(xué)院的Adam Dunkels開發(fā)的uIP協(xié)議棧是一種免費(fèi)的,、可實(shí)現(xiàn)的且非常小的TCP/IP協(xié)議棧,,它是為8 bit和16 bit處理器專門設(shè)計(jì)的[5]。uIP協(xié)議棧是使用C語言編寫的,,它移植起來方便而且代碼也相當(dāng)簡潔,。uIP協(xié)議棧去掉了完整的TCP/IP中不常用的功能,簡化了通信流程,,占用的資源少,,處理速度快。
 基于DSP的嵌入式系統(tǒng)uIP協(xié)議棧中,,根據(jù)需要只實(shí)現(xiàn)了ARP,、IP,、ICMP,、UDP協(xié)議。TCP提供面向連接的,、可靠的,、點(diǎn)對點(diǎn)的服務(wù)[6],但TCP開銷大,,傳輸速度慢,;雖然UDP是面向無連接的,由于UDP沒有可靠性的保證機(jī)制,,因此能以較快的速度進(jìn)行數(shù)據(jù)通信,;UDP協(xié)議的開銷很小,傳輸率比TCP高出很多,,實(shí)時(shí)性更強(qiáng),,所以uIP協(xié)議中采用UDP協(xié)議作為運(yùn)輸層協(xié)議。該uIP協(xié)議棧的網(wǎng)絡(luò)體系結(jié)構(gòu)如圖3所示,。

2.3 uIP協(xié)議棧的實(shí)現(xiàn)
 uIP協(xié)議棧的實(shí)現(xiàn)主要集中在uip.c的源文件里,,代碼簡潔。圖4所示為uIP整個(gè)系統(tǒng)的主程序流程圖,。在這個(gè)主程序流程圖中,,初始化工作是由底層硬件完成的,,主要是對物理層的一些接口進(jìn)行配置和綁定。uIP協(xié)議棧接收數(shù)據(jù)包的過程實(shí)際上就是對數(shù)據(jù)包進(jìn)行解析,,當(dāng)網(wǎng)絡(luò)驅(qū)動(dòng)設(shè)備發(fā)送數(shù)據(jù)包過來時(shí),,首先讀取數(shù)據(jù)包判斷是IP包還是ARP包,如果是ARP包,,則進(jìn)行ARP處理,;若是IP包,則判斷其上層協(xié)議是UDP協(xié)議還是ICMP協(xié)議,,再分別對其進(jìn)行處理,。當(dāng)有數(shù)據(jù)發(fā)送時(shí),網(wǎng)絡(luò)驅(qū)動(dòng)設(shè)備的硬件將自行判別數(shù)據(jù)包并且完成數(shù)據(jù)包的封裝工作,。

2.3.1 ARP協(xié)議
 ARP協(xié)議是由源文件Uip_arp.c實(shí)現(xiàn)的,,其中包含uip_arp_init()、uip_arp_timer(),、uip_arp_update(),、uip_arp_arpin()和uip_arp_out()5個(gè)函數(shù)。uip_arp_init()完成ARP的初始化工作,,初始化ARP首部,、入口地址等。uip_arp_timer()完成動(dòng)態(tài)映射表的老化功能,,這個(gè)函數(shù)每10 s被調(diào)用一次,,若動(dòng)態(tài)映射表里的映射關(guān)系在連續(xù)20 min內(nèi)沒有發(fā)生變化,則其映射將失效,。uip_arp_update()完成動(dòng)態(tài)映射表的更新功能,。void uip_arp_arpin()對接收到的ARP分組進(jìn)行處理。uip_arp_out()完成ARP請求的自動(dòng)發(fā)送功能,,它是在即將發(fā)送一個(gè)IP分組前被調(diào)用,。
2.3.2 IP協(xié)議
 IP協(xié)議由ip_recv和ip_send兩個(gè)函數(shù)段來實(shí)現(xiàn)。ip_send函數(shù)段完成IP數(shù)據(jù)包的發(fā)送功能,,接收上層協(xié)議傳送過來的數(shù)據(jù)包加上IP首部進(jìn)行封裝,,然后設(shè)置srcipaddr、destipaddr,、proto及ipchksum,,最后交給下層協(xié)議處理好發(fā)送;ip_recv函數(shù)段完成IP數(shù)據(jù)包的接收功能,,當(dāng)收到數(shù)據(jù)包時(shí)首先判斷其vhl,、length、destipaddr及ipchksum是否正確,,然后根據(jù)IP報(bào)文首部的類型碼將該數(shù)據(jù)包交給相應(yīng)的上層協(xié)議處理,。
2.3.3 ICMP協(xié)議
 ICMP協(xié)議主要由標(biāo)志段icmp_input實(shí)現(xiàn),。ICMP協(xié)議在實(shí)現(xiàn)時(shí)比較簡單,具體操作是將ICMP的報(bào)文字段從回送類型變成回送應(yīng)答類型,,再另外計(jì)算checksum并修改checksum字段,。
2.3.4 UDP協(xié)議
 UDP協(xié)議主要由函數(shù)udpfound和udpsend兩個(gè)標(biāo)志段實(shí)現(xiàn)。udpfound函數(shù)段負(fù)責(zé)處理收到的UDP數(shù)據(jù),,包括取出源IP地址,、目的地址和源端口,并判斷它的端口號和校驗(yàn)和是否都正確,,如果正確再獲取目的端口,,調(diào)用應(yīng)用程序?qū)邮盏降臄?shù)據(jù)包進(jìn)行相應(yīng)處理,否則丟棄,。udpsend函數(shù)段完成UDP數(shù)據(jù)包的發(fā)送功能,,如果接收到來自應(yīng)用程序的數(shù)據(jù),而這時(shí)又有數(shù)據(jù)要發(fā)送,,那么首先分配空間給待發(fā)送的數(shù)據(jù),,然后拷貝數(shù)據(jù)到UDP數(shù)據(jù)包的數(shù)據(jù)部分,并對UDP首部各個(gè)字段對應(yīng)的源端口號和目的端口號進(jìn)行設(shè)置,,最后再調(diào)用ip_send函數(shù)將欲發(fā)送的數(shù)據(jù)交給IP協(xié)議發(fā)送,。
3 系統(tǒng)仿真
 利用計(jì)算機(jī)進(jìn)行仿真時(shí),在uIP協(xié)議棧中,,將目標(biāo)機(jī)(也就是開發(fā)板)的IP地址設(shè)置成129.27.137.103,,區(qū)別于PC的129.27.137.104,即構(gòu)成局域網(wǎng)使得它們能在同一個(gè)網(wǎng)段內(nèi)進(jìn)行通信,。假設(shè)已經(jīng)建立了一條成功的通信鏈路,,這時(shí)應(yīng)該出現(xiàn)當(dāng)服務(wù)器發(fā)出命令,,目標(biāo)機(jī)立即會(huì)給出回應(yīng)這樣的結(jié)果,。DOS操作系統(tǒng)下ICMP測試圖如圖5所示。從圖5中可以得知,,發(fā)送的4個(gè)ICMP數(shù)據(jù)包均得到了回應(yīng),,其中最長的回應(yīng)時(shí)間為18 ms,最短的回應(yīng)時(shí)間不到1 ms,,平均回應(yīng)時(shí)間為10 ms,。這時(shí)說明開發(fā)板與計(jì)算機(jī)建立了一條可靠的連接,ping通信成功,,為系統(tǒng)各功能的實(shí)現(xiàn),,提供了可靠的基礎(chǔ)。

 本文利用計(jì)算機(jī)進(jìn)行了仿真測試,,完成了DSP與PC的ping通信,,實(shí)現(xiàn)了基于DSP的嵌入式系統(tǒng)接入以太網(wǎng)的功能,。但仍需解決的問題是,由于UDP協(xié)議不可靠,、面向無連接,,難免會(huì)出現(xiàn)數(shù)據(jù)包亂序到達(dá)、數(shù)據(jù)包丟失的現(xiàn)象,。因此針對這些現(xiàn)象可以對數(shù)據(jù)進(jìn)行一些處理,,如對每一組數(shù)據(jù)進(jìn)行順序標(biāo)記,這樣可以在應(yīng)用層發(fā)現(xiàn)數(shù)據(jù)的丟失和亂序,,從而予以更正,;在數(shù)據(jù)包前后加一校驗(yàn)碼保證接收數(shù)據(jù)正確等,這將在后續(xù)工作中討論,。
參考文獻(xiàn)
[1] 王采蓮,,郭志強(qiáng).嵌入式TCP/IP協(xié)議棧在指揮網(wǎng)絡(luò)中的實(shí)現(xiàn)[C].AECC專題學(xué)術(shù)研討會(huì)論文集,2007,,20(5):162-163.
[2] TI.TMS320VC5510AI DataSheet[Z].2004.
[3] Cirrus Logic. CS8900A Product Data Sheet[EB/OL]. [2007-08-01]http://www.cirrus.corn.
[4] 岳世為,,尹為民.uIP協(xié)議棧在基于DSP以太網(wǎng)通信系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)與數(shù)字工程,2010,,38(1):187.
[5] DUNKELS A. The uIP Embedded TCP/IP Stack[EB/OL]. [2006-06-01]http://www.Sics.se.
[6] [阿根廷]Scaglia Sergio.嵌入式Internet TCP/IP基礎(chǔ),、實(shí)現(xiàn)及應(yīng)用[M].潘琢金,徐蕾,,拱長青,,等,譯.北京:北京航空航天大學(xué)出版社,,2008.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。