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

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

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

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

 


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

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

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

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

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 18男女很黄的视频 | 午夜成a人片在线观看 | 影音先锋色小姐 | 久久综合久久久 | 亚洲最大成人 | 五月欧美 | a高清免费毛片久久 | 日本三级欧美三级人妇英文 | 日日爽天天干 | 日韩欧美国产高清在线观看 | 日韩免费高清一级毛片 | 亚洲三级视频在线观看 | 一级女性全黄久久生活片免费 | 好吊爽在线播放视频 | 一个人看的高清www视频免费 | 精品欧洲videos| 玖玖在线免费视频 | 日韩精品一区二区三区国语自制 | 涩涩涩在线视频 | 免费中文字幕在线观看 | 69黄在线看片免费视频 | 国产精品欧美亚洲韩国日本99 | 免费99精品国产自在现线观看 | 一级生活录像 | 亚洲国产一 | 国产一二三区在线观看 | 欧美日韩大片在线观看 | 亚洲视频一区二区在线观看 | 男女下面进视频免费 | 天天躁狠狠躁狠狠躁夜夜躁 | 久久精品亚洲欧美日韩久久 | 天天插天天干天天射 | 黄色片网站在线播放 | 高清一级毛片免免费看 | 日韩欧美一区二区久久 | 狠狠色综合网站久久久久久久 | 日韩精品欧美精品中文精品 | 宅男在线午夜影院 | 亚洲综合网在线观看 | 亚洲字幕| 日韩视频在线观看一区二区 |