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

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

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

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

 


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

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

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

 本文利用計算機進行了仿真測試,完成了DSP與PC的ping通信,實現(xiàn)了基于DSP的嵌入式系統(tǒng)接入以太網的功能。但仍需解決的問題是,由于UDP協(xié)議不可靠、面向無連接,難免會出現(xiàn)數(shù)據(jù)包亂序到達、數(shù)據(jù)包丟失的現(xiàn)象。因此針對這些現(xiàn)象可以對數(shù)據(jù)進行一些處理,如對每一組數(shù)據(jù)進行順序標記,這樣可以在應用層發(fā)現(xiàn)數(shù)據(jù)的丟失和亂序,從而予以更正;在數(shù)據(jù)包前后加一校驗碼保證接收數(shù)據(jù)正確等,這將在后續(xù)工作中討論。
參考文獻
[1] 王采蓮,郭志強.嵌入式TCP/IP協(xié)議棧在指揮網絡中的實現(xiàn)[C].AECC專題學術研討會論文集,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以太網通信系統(tǒng)中的應用[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基礎、實現(xiàn)及應用[M].潘琢金,徐蕾,拱長青,等,譯.北京:北京航空航天大學出版社,2008.

此內容為AET網站原創(chuàng),未經授權禁止轉載。
主站蜘蛛池模板: 久久亚洲欧美成人精品 | 在线国产视频 | 中文字幕亚洲精品 | 国产自产在线 | 在线观看日韩www视频免费 | xxxx成年视频免费 | 清清草在线视频 | 一级毛片在线观看视频 | 亚洲成年网站 | 天天干干干 | 久久国产午夜精品理论篇小说 | 国产欧美一区二区三区久久 | 丁香午夜 | 东方aⅴ免费观看久久av | 日本黄在线观看免费播放 | 在线免费观看黄视频 | 欧美日韩国产另类一区二区三区 | 在线亚洲黄色 | 日韩精品欧美激情国产一区 | 男人使劲桶女人下面动态图片 | 中文字幕欧美日韩久久 | 欧美日韩精彩视频 | 国产成人综合在线 | 男女做爽爽视频免费观看 | 日韩日韩精品无砖专区2020 | 亚洲成人18 | 看片网站免费 | 最新精品亚洲成a人在线观看 | 91精品国产乱码久久久久久 | 欧美在线观看免费一区视频 | 亚洲三级久久 | 放一个特别黄的录像 | 国产精品久久久久久久免费 | 欧美日韩在线播一区二区三区 | 青青草国产97免久久费观看 | 日本欧美不卡一区二区三区在线 | 91视频免费入口 | 成人免费视频一区 | 9久热久re爱免费精品视频 | 男女www视频 | 一级大片免费观看 |