基于SF0020芯片的嵌入式TCP/IP協議族設計與實現
1、 引言
TCP/IP起源于60年代末美國政府資助的一個分組交換網絡研究項目,到現今已發展成為計算機之間最常應用的組網形式。盡管標準的TCP/IP協議族在數據傳輸的可靠性與數據流量的控制上作的很好,但是8位微控制器性能的限制下,標準的TCP/IP協議族的實現占用大量系統資源是實際應用所不允許的。因此要在不改變TCP/IP協議族標準的前提下對其進行裁剪,使其實時性提高同時保證可靠性以滿足嵌入式系統的要求。
SF0020是NEC公司推出的兼容80C51的8位微控制器芯片。根據系統在網絡監控系統控制終端應用的需要,外部接25MHz晶體,內部倍頻至50MHz。該芯片內嵌有10M/100Mbps的MAC模塊并提供MII界面,可與外部的Ethernet PHY芯片方便連接。芯片有256字節內部數據存儲器,外部可擴充至512K字節。具備的DMA通道實現了在RAM中和在MAC與RAM之間進行快速數據傳輸的功能;支持校驗和模塊,在實現TCP/IP時可以節省控制器運算開銷。指令周期為4個時鐘周期(標準80C51為12時鐘周期/指令周期)。其性能滿足實現嵌入式TCP/IP協議族的基本要求。
2、 協議族總體框架設計與裁剪策略
為了實現在局域網環境中作為客戶端控制前端監控設備(硬盤錄像機、編碼器、解碼、視頻服務器等)的應用要求,必須在有限的硬件資源的條件下保證數據傳輸的可靠性和實時性。因此數據鏈路層采用目前應用最為廣泛的以太網協議;上層利用TCP/IP的實現采用在運輸層直接采用可靠的TCP協議,然后對其進行適當裁剪的方法。這是因為考慮到通用性、兼容性和通信的可靠程度,而沒有使用在應用層加入控制策略運輸層使用簡單UDP協議的方案。本地數據的流動要實現向應用程序提供可靠的數據,與底層以太網驅動程序交互數據報功能。
協議族系統結構框架如下圖1所示,其中虛線部分是本文所要完成的,包括socket子層、運輸層的TCP協議、網絡層的IP和ICMP協議、ARP協議和以太網子層。
圖1 協議族系統框架
2.1 接口子層實現
以太網子層提供了與以太網驅動程序的接口,其實現驅動程序存儲空間和協議空間之間數據搬移的功能;以及數據報流入的分路和流出的封裝處理。
Socket(插口)子層向上層提供了創建一個socket描述符,將本地的IP地址與端口號綁定到一個socket上,TCP連接的建立、斷開,數據的接收與發送的功能。
2.2 網絡層實現
網絡層實現包括IP協議(Internet Protocol網際協議)和基于IP協議的ICMP協議(Internet Control Messages Protocol控制報文協議)。圖1中該層下部的ARP(Address Resolution Protocol 地址解析協議)為IP提供動態地址解析服務。
IP是TCP/IP協議族中最為核心的協議。所有的網絡層和運輸層數據都以IP數據報格式傳輸。為了減小TCP/IP協議族的負擔,接收時首先要檢查數據報的正確性,其次還要過濾目的地址不是本機的報文;此外如果收到被IP分片的數據報立即丟棄。最后判斷協議交給TCP或ICMP協議處理。因為禁止IP層分片可以提高通信的效率和可靠性,根據以太網最大傳輸單元(MTU)的限制,socket子層控制了用戶每次傳輸分組的最大字節數。同樣服務端也對IP分片加以限制使IP無需把有限的系統資源消耗在IP報文重裝上,這正是丟棄被分片的IP數據報的原因。
ICMP提供主機或路由器報告差錯或提供查詢信息的服務。ICMP報文可以分成兩類:差錯和查詢。查詢報文是用一對請求和回答定義的。ICMP差錯報文通常包含了引起錯誤的IP數據報的第一個分片的IP首部(和選項),加上該分片數據部分的前8個字節。由于運輸層僅僅使用TCP協議,ICMP也進行了裁剪。協議支持ping命令請求回顯應答,用于檢查協議族的運行狀況;差錯控制全部交給運輸層TCP協議處理。
tcp/ip相關文章:tcp/ip是什么
評論