基于OMAP平臺的TCP/IP開發(fā)及實現(xiàn)
隨著人們對智能化產(chǎn)品需求的增加,未來的嵌入式產(chǎn)品,包括各種家電、通信、PDA、儀器儀表等設(shè)備正逐漸走向網(wǎng)絡(luò)化,以共享互聯(lián)網(wǎng)中龐大的信息資源,因此使嵌入式設(shè)備的網(wǎng)絡(luò)化開發(fā)有廣闊市場前景,由于嵌入式硬件資源有限,而傳統(tǒng)的TCP/IP等網(wǎng)絡(luò)通信協(xié)議對計算機(jī)存儲器、運算速度的要求較高,所以不能直接應(yīng)用,為此,必須開發(fā)一套適合嵌入式系統(tǒng)的、高度優(yōu)化的、最為精簡的TCP/IP協(xié)議棧。
本文引用地址:http://butianyuan.cn/article/247106.htm開放式多媒體應(yīng)用平臺OMAP(Open Multimedia Application Platform)是美國德州儀器公司推出的高度集成的軟硬件平臺。OMAP具有獨特的雙芯結(jié)構(gòu),結(jié)合了DSP與RISC內(nèi)核,可為無線多媒體設(shè)備提供獨一無二的性能和功耗優(yōu)勢,OMAP可連接十分豐富的外圍設(shè)備,包括USB、攝像頭、聲音設(shè)備、視頻設(shè)備、網(wǎng)絡(luò)設(shè)備等,OMAP擁有開放式體系結(jié)構(gòu),其應(yīng)用環(huán)境完全可編程。
軟件協(xié)議的設(shè)計與實現(xiàn)在很大深度上決定了通信終端的質(zhì)量,基于OMAP的3G移動終端軟件協(xié)議結(jié)構(gòu)由信令協(xié)議棧和應(yīng)用業(yè)務(wù)協(xié)議棧組成,如圖1所示,TCP/IP協(xié)議棧位于應(yīng)用業(yè)務(wù)協(xié)議棧的底層,為上層的H.323協(xié)議棧提供基礎(chǔ)與服務(wù),其性能質(zhì)量將直接決定整個通信終端軟件系統(tǒng)的運行質(zhì)量。因此,針對嵌入式系統(tǒng)聯(lián)網(wǎng)的發(fā)展方向,為OMAP系統(tǒng)其設(shè)計一套高效、簡潔的TCP/IP協(xié)議,對其應(yīng)用具有十分重要的意義。
1 開發(fā)方案
PC上有功能強(qiáng)大的VC平臺和網(wǎng)絡(luò)分析工具(如Sniffer)便于調(diào)試,其設(shè)計不針對任何一個嵌入式芯片,具有較好的通用性和可移植性,在PC機(jī)上實現(xiàn)的TCP/IP協(xié)議,除了以太網(wǎng)層要結(jié)合OMAP平臺的網(wǎng)卡硬件重寫外,基本上可以直接移植到OMAP平臺上,不需要再做大的改動,作為一個通信程序,必須需要兩端程序同時調(diào)試,在PC機(jī)上編好的程序能度OMAP平臺上程序的調(diào)試提供可靠的幫助,因此,協(xié)議開發(fā)采用先模擬再移植、先整體再部分的設(shè)計思路,而協(xié)議各層實現(xiàn)的順序為自下而上。具體步驟是:
(1)在PC機(jī)上的Windows操作系統(tǒng)及VC6.0開發(fā)平臺上,實現(xiàn)嵌入式系統(tǒng)TCP/IP協(xié)議族的模擬器,該模擬器應(yīng)該能實現(xiàn)TCP/IP協(xié)議的基本功能,包括以太網(wǎng)驅(qū)動程序、ARP、IP、UDP、TCP等,并且實現(xiàn)的ARP、IP、UDP、TCP層的程序應(yīng)該通用于各嵌入式系統(tǒng)并可移植。
(2)將該模擬器移植到OMAP開發(fā)平臺,用其以太網(wǎng)卡的驅(qū)動程序替換原模擬器的鏈路層程序,在TI提供的CCS平臺上最終實現(xiàn)基于OMAP的TCP/IP協(xié)議。
2 開發(fā)平臺
OMAP的多媒體開發(fā)平臺Innovator主要由4個模塊組成:PM(處理器模塊)、IM(接口模塊)、M(擴(kuò)展模塊)、BOB(主連接板)。OMAP處理器在PM上,以太網(wǎng)卡在BOB上,可以通過Innovator上的OMAP1510芯片的ARM微處理器對單片以太網(wǎng)控制器LAN91C96的工作進(jìn)行控制,實現(xiàn)以太網(wǎng)幀的收發(fā),并通過CCS對程序調(diào)試,圖2為OMAP平臺調(diào)試環(huán)境。
3 在PC上實現(xiàn)協(xié)議的基本模塊
3.1 主要模塊介紹
(1)主流程:首先對TCP/IP協(xié)議族的各層初始化,成功則進(jìn)入主循環(huán),主循環(huán)采用"中斷+循環(huán))"結(jié)構(gòu),簡單且分層清晰,中斷作為應(yīng)用層發(fā)出命令,調(diào)用下層的入口。對于接收到的以太網(wǎng)幀,則由下到上分別進(jìn)入各層進(jìn)行處理。協(xié)議實現(xiàn)主流程如圖3所示。
(2)PC上的以太網(wǎng)層:在內(nèi)存中開辟接收和發(fā)送兩個相同的循環(huán)緩沖區(qū),用于存放接收和發(fā)送的以太網(wǎng)幀。 Winpcap軟件是基于Windows平臺的一個網(wǎng)絡(luò)包工具,它提供一個系統(tǒng)內(nèi)核級的動態(tài)鏈接庫Packet.dll作為標(biāo)準(zhǔn)的API,具有獨立于操作系統(tǒng)的編程接口。利用其提供的API可直接聯(lián)系網(wǎng)卡驅(qū)動與已定義的循環(huán)緩沖區(qū),將緩沖區(qū)中的數(shù)據(jù)發(fā)出,并將網(wǎng)卡接收的數(shù)據(jù)存入緩沖區(qū)。
(3)ARP層,在內(nèi)存中開辟一塊循環(huán)存儲區(qū)域用于存放已知的IP-MAC對應(yīng)表,該表可以由上層添加,在接收到ARP應(yīng)答時會自動添加,也可以上層清空。處理ARP層函數(shù)的過程中:根據(jù)以太網(wǎng)首部協(xié)議字段過濾出ARP包,針對ARP請求與ARP應(yīng)答進(jìn)行不同的處理,應(yīng)答對方的請求,記錄對方的應(yīng)答。
(4)IP層:根據(jù)以太網(wǎng)首部的幀類型標(biāo)注判斷接收到的是不是IP包來處理IP層函數(shù),如果是:則調(diào)用IP包的接收函數(shù),對給收到的IP包用各種條件進(jìn)行過濾,對于滿足條件的包獲取其長度與指針信息供上層使用。本層另一個主要函數(shù)是IP包發(fā)送函數(shù),由上層調(diào)用進(jìn)行IP封裝。
IP的檢驗和僅包括IP首部,長度一般為20字節(jié)(如果沒有選項)。在接收端,丟棄檢驗和不為OxFFFF的包,在發(fā)送端,將計算所得值的反碼填入檢驗和字節(jié),由于主機(jī)和網(wǎng)絡(luò)對數(shù)據(jù)中高低字節(jié)默認(rèn)的順序不同,在讀寫包中的16、32數(shù)據(jù)時,應(yīng)該先進(jìn)行高低字節(jié)的交換。
(5)UDP 層,處理UDP層函數(shù)應(yīng)根據(jù)IP首部的協(xié)議字段判斷是否UDP包。如果是:則調(diào)用UDP包接收函數(shù),用各種條件對其進(jìn)行過濾,提出UDP數(shù)據(jù)及各種有用信息,根據(jù)端口號提交給應(yīng)用進(jìn)程處理,本層的另一個主要函數(shù)是UDP發(fā)送函數(shù),實現(xiàn)封裝UDP包(包括載入UDP數(shù)據(jù),計算并填入UDP首部信息),最后調(diào)用IP發(fā)送函數(shù),較由IP層處理。
(6)TCP層:與UDP不同,TCP主機(jī)要進(jìn)行數(shù)據(jù)通信之前,必須與對方建立連。與幾個主機(jī)通信,就要建立幾個連接。然而,若要知道接收到的TCP包屬于哪個連接且使得幾個不同的連接之間獨立工作、互不干擾,則需要定義TCP的控制模塊,這里用一個結(jié)構(gòu)體數(shù)組實現(xiàn),存放所有關(guān)于連接的信息。
tcp/ip相關(guān)文章:tcp/ip是什么
評論