- 相關推薦
在TMS320VC5402上實現的嵌入式TCP/IP協議棧
摘要:實現一個運行在16位數字信號處理器TMS320VC5402上的小型嵌入式TCP/IP協議棧。對TCP/IP協議中的IP協議、ARP協議、UDP協議進行分析,完成基于TCP/IP協議的嵌入式網絡系統。引言
隨著嵌入式系統應用范圍的不斷擴展及網絡應用的日益普及,使得越來越多的嵌入式系統需要支持網絡功能。TCP/IP是目前一種被廣泛采用的網絡協議。TCP/IP是一套把因特網上的各種系統互連起來的協議組,已成為事實上最常用的網絡標準之一。本文對TCP/IP協議中的IP協議、ARP協議和UDP協議進行了分析,利用DSP的專用匯編語言實現了自己的通信協議。由此可使DSP直接對Ethernet發來的數據包解分析,并能按照TCP/IP協議正確打包和發送,最終實現DSP與PC機的數據通信,成功地完成了語音數據的采集和發送,實現了DSP與PC機的語音數據傳輸。
1 TCP/IP協議分析
一般在嵌入式系統中實現的TCP/IP協議都是面向數據采集和傳輸的,所以大部分實現都是IP協議、ARP協議、UDP協議或者是TCP協議。本文完成的是IP協議、ARP協議和UDP協議。一般認為TCP/IP為四層協議,實現的協議棧結構如圖1所示。
DSP程序自下而上實現以下協議:
①媒介訪問控制MAC(Media Access Control),向以太網收發數據。傳送的數據格式為Ethernet數據幀格式。Ethernet幀的長度是可變的,但都大于64字節,小于1518字節。它包括頭部、數據和尾部三部分。8字節的前導用于幀同步,CRC域用于幀校驗。目的地址和源端地址是指網卡的物理地址(MAC地址),具有唯一性。
②地址解析協議ARP(Address Resolution Protocol),使得物理地址和IP地址可以對應起來。在Ethernet上,使用地址解析協議ARP協議來實現IP地址到MAC地址的動態轉換。ARP Request(ARP請求)和ARP Response(ARP響應)類型都是0X0806。ARP報文格式包括硬件類型、協議類型、硬件地址長度、協議地址長度、操作字段、源端物理地址、源端IP地址、目的物理地址和目的IP地址。
③Internet網核心協議IP(Internet Protocol),實現IP網絡上的數據傳輸的基礎。IP協議提供了一種高效、不可靠和無連接的傳輸方式。IP報文是IP協議的基本處理單元,是由報頭和數據兩部分組成的。IP報頭包括20字節的固定部分和變長的選項部分。20字節的固定部分包括IP協議的版本號、IP首部長度、服務類型、報文總長度、標識符、片偏移、報文生存時間、首部校驗和以及源端IP地址和目的端IP地址。
④用戶數據報協議UDP(User Datagram Protocol),提供不可靠的數據傳輸功能。它不對要發送的數據進行緩沖,直接把從應用層收到的數據加上UDP首部發送出去。UDP不會把應用層多、次發送的數據合并成為一個包發送出去。這對于編寫簡單的請求/響應模式的應用是很方便的,而且利用UDP協議對傳輸速率也沒有太大的影響。UDP協議的數據報格式包括源端口口、目的端口號、數據報長度、UDP校驗和以及UDP數據。
⑤上層應用協議,對語音數據打包傳輸,實現DSP與PC機的語音數據傳輸。
2 硬件接口電路
硬件接口電路如圖2所示。
微處理器采用的是TI公司生產的TMS320VC5402數字信號處理器。它采用了改進的哈佛結構,操作速率達到了100MIPS。以太網控制芯片采用RTL8019AS,是臺灣Realtek公司生產的一種高度集成的以太網控制器。它實現了以太網媒介訪問層(MAC)和物理層(PHY)的全部功能。譯碼、電平變換及向功能由XC95144xl完成。它是Xilinx公司生產的低功耗CPLD器件。HR61001G是中山漢仁電子有限公司生產的10BASE-T接口器件,起低通濾波和隔離變壓等作用。
3 軟件設計
3.1 DSP上嵌入式TCP/IP協議的匯編程序設計
由于DSP的資源有限,所以網絡協議根據嵌入式應用進行了裁減。本設計中完成了ARP、IP、UDP等部分協議,既能夠保證DSP接入以太網,又使DSP資源能夠滿足嵌入式系統應用的要求。
首先介紹一下所設計的DSP接收和發送以太網數據包所使用的數據結構。作者選擇了聯合體結構作為DSP接收和發送以太網數據包的緩沖區。聯合體允許大小和類型不同的定義臨時存儲在同一存儲器空間。這樣的好處是各層協議之間數據的傳遞,實質上是數據指針在傳遞,而不是數據拷貝傳遞。而且各層協議可以直接使用該緩沖區,因為緩沖區內的結構體完全是按照各個協議的幀格式設計的。在聯合體databuf中有四個結構體成員—ethernetpkt、ippkt、udppkt、arppkt,分別對應著以太網數據幀、IP協議、UDP協議、ARP協議的幀格式。這4個結構體成員是按照它們各自協議的幀格式進行定義的。值得注意的是,因為databuf中存儲的是RTL8019AS發送的以太網數據幀,聯合體的成員共用databuf緩沖區,所以在各個結構體中要預留低層協議報頭存儲空間。例如,IP協議的結構體ippkt就要在結構體定義中留下ethernetpkt報頭的存儲空間,即ippkt定義中前9個整型空間不能使用,從第10個整型空間開始才是IP數據報的內容。
下面分4層介紹所完成的嵌入式TCP/IP協議。
①物理層:主要完成以太網控制器RTL8019AS的復位,寄存器的初始化,并設置RTL8019AS的工作方式、中斷響應、DMA通道接收緩沖區的地址設置等。
初始化程序如下:
WRITE 0x21,CR /*設置命令寄存器,選中第0頁*/
WRITE 0x4c,PSTART/*頁起始地址寄存器初始化,設定接收緩沖區起始頁地址*/
WRITE 0x80,PSTOP /*頁停止地址寄存器初始化,設定接收緩沖區終止頁地址*/
【在TMS320VC5402上實現的嵌入式TCP/IP協議!肯嚓P文章:
TCP/IP安全性研究03-08
嵌入式TCP/IP協議單片機技術在網絡通信中的應用03-07
Syn Flood攻擊是利用TCP/IP協議的什么漏洞03-20
IP協議設計實現—重裝模塊(一)03-07