IPv6的嵌入式設計與實現
引言
隨著嵌入式系統應用的快速發展,為實現對其他設備的控制、監視或管理等功能,需要將嵌入式設備連入互聯網,以便于遠程控制和監測。為將嵌入式設備連入互聯網,需要有通信模塊實現通信協議。目前嵌入式設備能夠通過主流的TCP/IP 協議可直接與外網連接。然而隨著網絡規模的日益擴大、上網設備和人數的激增,目前采用的IPv4逐漸接近其自身發展的極限,其中比較顯著的問題是IP 地址資源的不足。IPv6[1] 采用長度為128 位的地址,地址空間幾乎可以視為無限,IPv6不僅完全地解決了地址短缺問題,還對在IPv4 中解決不好的其他問題(如,端到端IP連接、服務質量、安全性、移動性等方面)進行了改進。IPv6成為嵌入式設備進行網絡互連的首選。
1 嵌入式系統中TCP/IPv6 協議棧的特點與設計
1.1 嵌入式系統中TCP/IPv6 協議棧的特點
嵌入式系統不同于普通系統,它在硬件資源的占有量以及處理器的處理能力等方面受到限制,因此TCP/IP 協議棧在嵌入式系統與其在通用操作系統中的實現有很大不同。對于嵌入式系統而言,考慮到TCP/IP協議的復雜性以及嵌入式系統自身資源的有限,對TCP/IP 的實現并不是一件容易的事情[2]。因此就需要對原本復雜的TCP/IPv6 協議棧的實現進行精簡。嵌入式IPv6 協議棧獨立于嵌入式設備的操作,代碼空間小、移植性好,可以在無法承載操作系統的小存儲空間的嵌入式設備上實施,以實現這些設備間的基本網絡功能。
1.2 嵌入式系統中TCP/IPv6 協議棧的設計
芯片采用挪威Chipcon 公司推出的符合2.4GHz IEEE802.15.4 標準的射頻收發器CC2420[3] 。該協議棧要實現TCP/IPv6 協議棧的基本功能,運行于無線網環境下。底層協議采用IEEE 802.15 工作組制定的802.15.4 協議,802.15.4 協議是一個短距離的無線通信標準。網絡層支持TCP、ICMPv6 協議,不實現UDP 協議。
1.2.1 網絡接口層
網絡接口層是TCP/IPv6 協議棧與以太網設備的驅動程序之間的接口。一方面,它將從網卡接收到的數據提交給上層網絡層協議軟件處理;另一方面,它將從網絡層接收來的數據傳送給網卡驅動。接口函數介紹如下:
(1)初始化函數
初始化函數InitNi()負責實現網絡接口層以及下層的物理設備驅動程序的初始化。主要包括以太網控制器的上電復位、MAC 地址的配置、收發緩沖環首尾地址的配置以及DMA 的初始化和收發數據格式的定義等。
(2)發送函數
在發送數據時,網絡接口層發送函數Send_Ethernet_Frame()負責接收IP協議產生的數據,將其封裝成以太網數據幀后,調用下層的Send_ Packet()函數實現發送。Send_Packet()函數實現的是把以太網數據幀通過遠程DMA 通道送到RTL8019AS 中的發送緩存區,然后再啟動本地DMA,將數據發送網上。
評論