




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、【W(wǎng)ord版本下載可任意編輯】 ARM9 的UDP 協(xié)議棧的設(shè)計(jì)與實(shí)現(xiàn) 摘 要:為了滿足以太網(wǎng)通信過程中大數(shù)據(jù)量的快速傳輸?shù)男枨?,往往可以犧牲一些可靠性換來(lái)高速的數(shù)據(jù)傳輸.根據(jù)方案,文中設(shè)計(jì)了一套基于YLP2440 的UDP 通信系統(tǒng),實(shí)現(xiàn)了簡(jiǎn)單實(shí)用的UDP 通信協(xié)議.首先介紹了系統(tǒng)整體硬件構(gòu)造,然后完成了以太網(wǎng)通信系統(tǒng)軟件設(shè)計(jì),以DM9000A 以太網(wǎng)卡驅(qū)動(dòng)程序?yàn)楦祝ㄟ^裁剪移植TCP/ IP 協(xié)議棧,實(shí)現(xiàn)了系統(tǒng)數(shù)據(jù)的接收和發(fā)送.對(duì)系統(tǒng)UDP 和ARP 通信開展了測(cè)試,結(jié)果說明UDP 通信系統(tǒng)整體穩(wěn)定可靠,并且系統(tǒng)開銷小.數(shù)據(jù)傳輸速度快,能夠滿足實(shí)際應(yīng)用需求. 0 引 言 隨著嵌入式技術(shù)和
2、網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,以太網(wǎng)接口在嵌入式系統(tǒng)中的應(yīng)用越來(lái)越廣泛.以太網(wǎng)通信速度快.通用,可直接與Internet 相連接,提供更大范圍的遠(yuǎn)程訪問.目前在工控嵌入式領(lǐng)域,網(wǎng)絡(luò)通信通常采用UDP 和TCP 協(xié)議.UDP 與TCP 相比,UDP 使用非連接的.不可靠的通信方式,因此網(wǎng)絡(luò)傳輸速度快,實(shí)時(shí)性相對(duì)較好.文中設(shè)計(jì)實(shí)用S3C2440.以太網(wǎng)控制器DM9000 和經(jīng)過自行裁剪的TCP / IP 協(xié)議棧,構(gòu)成嵌入式系統(tǒng)的以太網(wǎng)接口,實(shí)現(xiàn)UDP 通信. 1 系統(tǒng)的硬件介紹該系統(tǒng)采用優(yōu)龍科技公司YLP2440 作為開發(fā)的硬件系統(tǒng),YLP2440 采用三星S3C2440A 作為CPU,主頻400MHz,帶
3、有64MB SDRAM 和64MB NANDFlash 的外部存儲(chǔ)器,有兩個(gè)五線異步串行口,波特率高達(dá)115200bps,一個(gè)10M / 100M DM900AEP 網(wǎng)絡(luò)接口卡,帶有連接和傳輸指示燈.DM9000A 是一個(gè)全集成.功能強(qiáng)大.性價(jià)比高的快速以太網(wǎng)MAC 控制器,它帶有一個(gè)通用處理接口.EEPROM 接口.10/ 100MPHY 和SRAM,采用單電源供電,可兼容3. 3V.5V 的IO 接口電平.DM9000A 同樣支持MII (Media IndependentInterface,介質(zhì)無(wú)關(guān)接口),它包含一系列可被訪問控制的狀態(tài)存放器,這些存放器是字節(jié)對(duì)齊的,在硬件或者軟件復(fù)位時(shí)
4、被設(shè)置成初始化. 硬件框圖如圖1 所示. 2 以太網(wǎng)軟件的設(shè)計(jì) 2. 1 以太網(wǎng)卡控制器的初始化 首先DM9000A 自檢,讀取DM9000 的生產(chǎn)廠家ID和設(shè)備ID 與已經(jīng)設(shè)定好的ID 開展比對(duì),判斷DM9000網(wǎng)卡是否存在,初始化DM9000A,它的過程就是適當(dāng)配置DM9000A 存放器的過程,具體過程分為以下幾個(gè)步驟: (1)啟動(dòng)DM9000A,設(shè)置CPCR = 01,使DM9000 的GPIO3 為輸出,GPR =00,使DM9000 的GPIO3 輸出為低以激活內(nèi)部PHY.延時(shí)2ms 以上以等待PHY 上電. (2)開展兩次軟復(fù)位,設(shè)置DM9000 為正常工作模式,根據(jù)芯片設(shè)計(jì)要求,
5、要想使芯片在上電之后工作正常就要開展兩次軟復(fù)位,設(shè)置為NCR =001,NCR =000,這兩步操作開展兩次. (3) 去除各種狀態(tài)標(biāo)志位和中斷標(biāo)志位,NSR =0 x2c,ISR =0 x3f. (4)設(shè)置接收和發(fā)送控制存放器,并且設(shè)置FIFO的大小,RCR =039.TCR =000.FCTR =038. (5)設(shè)置板子自身的MAC 地址. (6)再去除各種狀態(tài)標(biāo)志位和中斷標(biāo)志位,NSR =0 x2c,ISR =0 x3f. (7)設(shè)置中斷屏蔽存放器,打開接收中斷,IMR =081. 當(dāng)開展了以上步驟的設(shè)置之后,DM9000A 芯片就處于正常工作狀態(tài)了.在以后開展通信的過程中,如果發(fā)生異常
6、引起芯片重啟,則再開展同樣的設(shè)置. 2. 2 以太網(wǎng)卡數(shù)據(jù)的發(fā)送和接收 DM9000A 發(fā)送數(shù)據(jù)采用的是循環(huán)查詢模式,接收數(shù)據(jù)采用的是中斷模式,DM9000 內(nèi)部有0 x3FF 大小的SRAM 用于接收和發(fā)送數(shù)據(jù)緩存.在發(fā)送或接收數(shù)據(jù)包之前,數(shù)據(jù)是暫存在這個(gè)SRAM 中的.當(dāng)需要連續(xù)發(fā)送或接收數(shù)據(jù)時(shí),需要分別把DM9000 存放器MWCMD 或MRCMD 賦予數(shù)據(jù)端口,這樣就指定了SRAM 中的某個(gè)地址,并且在傳輸完一個(gè)數(shù)據(jù)后,指針會(huì)指向SRAM 中的下一個(gè)地址,從而完成了連續(xù)訪問數(shù)據(jù)的目的.但當(dāng)發(fā)送或接收一個(gè)數(shù)據(jù)后, 指向SRAM 的數(shù)據(jù)指針不需要變化時(shí),則要把MWCMDX 或MRCMDX
7、賦予數(shù)據(jù)端口 . 發(fā)送數(shù)據(jù)比較簡(jiǎn)單,接收數(shù)據(jù)就略顯復(fù)雜,因?yàn)樗怯幸欢ǜ袷揭蟮?在接收到的一包數(shù)據(jù)中的首字節(jié)如果為001,則表示這是一個(gè)可以接收的數(shù)據(jù)包;如果為00,則表示沒有可接收的數(shù)據(jù)包.因此在讀取其他字節(jié)時(shí),一定要先判斷首字節(jié)是否為001.數(shù)據(jù)包的第二個(gè)字節(jié)為數(shù)據(jù)包的一些信息,它的高字節(jié)的格式與DM9000 的存放器RSR 完全一致.第三個(gè)和第四個(gè)字節(jié)為數(shù)據(jù)包的長(zhǎng)度.后面的數(shù)據(jù)就是真正要接收的數(shù)據(jù)了. 2. 2. 1 UDP 協(xié)議棧的裁剪實(shí)現(xiàn) 在系統(tǒng)中主要使用UDP 通信,只需要實(shí)現(xiàn)ARP協(xié)議.IP 協(xié)議,對(duì)TCP/ IP 協(xié)議開展部分的實(shí)現(xiàn).UDP協(xié)議通信(即用戶數(shù)據(jù)報(bào)協(xié)議)與TCP
8、 一樣都是屬于傳輸層協(xié)議,位于IP(網(wǎng)際協(xié)議)協(xié)議的頂層.UDP 相對(duì)于TCP 是一種簡(jiǎn)單協(xié)議,提供的是少的服務(wù),編寫的代碼量也小,所需的程序和內(nèi)存空間少,運(yùn)行速度快.ARP 為IP 地址對(duì)應(yīng)的硬件地址之間提供動(dòng)態(tài)映射,發(fā)送終端把以太網(wǎng)數(shù)據(jù)幀發(fā)送到位于同一局域網(wǎng)上的另一臺(tái)主機(jī)時(shí),是根據(jù)48bit 的以太網(wǎng)地址來(lái)確定目的接口的.設(shè)備驅(qū)動(dòng)程序從不檢查IP 數(shù)據(jù)報(bào)中的目的IP 地址.IP 協(xié)議是TCP/ IP 協(xié)議中為的協(xié)議,它提供不可靠.無(wú)連接的數(shù)據(jù)報(bào)傳送服務(wù) . 2. 2. 2 數(shù)據(jù)的發(fā)送過程 數(shù)據(jù)發(fā)送過程如圖2 所示.發(fā)送終端在次發(fā)送數(shù)據(jù)的時(shí)候,要知道接收端的IP 地址和端口號(hào),還要得到對(duì)方的
9、物理MAC 地址,因?yàn)閮蓚€(gè)終端通信是通過尋找對(duì)方的MAC 地址來(lái)開展的,因此首先得通過ARP 協(xié)議,把對(duì)方的IP 地址轉(zhuǎn)換為MAC 地址,得到了物理地址之后才能通信.如果長(zhǎng)時(shí)間不能得到這個(gè)物理地址,則只能說明請(qǐng)求失敗,需要重新發(fā)送ARP 請(qǐng)求,ARP 的封裝過程如圖3(b)所示. 2. 2. 3 數(shù)據(jù)包的封裝過程 UDP 協(xié)議數(shù)據(jù)包的封裝在運(yùn)輸層開展,打好包的UDP 數(shù)據(jù)將送往網(wǎng)絡(luò)層開展IP 協(xié)議的打包,UDP 要完成進(jìn)程到進(jìn)程的通信,把報(bào)文交付給正確的進(jìn)程.當(dāng)進(jìn)程有報(bào)文要通過UDP 發(fā)送時(shí),它就把這個(gè)報(bào)文連同一對(duì)套接字地址以及數(shù)據(jù)長(zhǎng)度傳遞給UDP.UDP 收到數(shù)據(jù)后就加上UDP 首部,也就是
10、UDP 數(shù)據(jù)包的封裝如圖3(c)所示.然后UDP 就把該用戶數(shù)據(jù)包連同IP 加上自己首部,在協(xié)議字段使用值17,指出該數(shù)據(jù)是從UDP 協(xié)議來(lái)的,這個(gè)過程就是IP 數(shù)據(jù)包的封裝過程如圖3(a)所示.這個(gè)IP 數(shù)據(jù)包再傳遞給數(shù)據(jù)鏈路層.數(shù)據(jù)鏈路層收到IP 數(shù)據(jù)包之后,加上自己的首部(可能還有尾部),再傳遞給物理層.物理層把這些位編碼為電信號(hào)或者光信號(hào),然后把它發(fā)送到遠(yuǎn)程的機(jī)器. 2. 2. 4 數(shù)據(jù)的接收 系統(tǒng)接收數(shù)據(jù)采用的是中斷模式.當(dāng)網(wǎng)卡接收到數(shù)據(jù)時(shí),就觸發(fā)一個(gè)中斷,啟動(dòng)中斷服務(wù)程序.在中斷服務(wù)程序中首先去除中斷標(biāo)志位,以防在接收數(shù)據(jù)的時(shí)候再次引發(fā)中斷,然后判斷存放器MRMDX 的值,確定網(wǎng)卡
11、是否接收到了數(shù)據(jù),如果接收到了數(shù)據(jù)就要開展數(shù)據(jù)處理,也就是對(duì)數(shù)據(jù)包的解封,得到應(yīng)用程序發(fā)送來(lái)的數(shù)據(jù),如果沒有得到數(shù)據(jù)則說明網(wǎng)卡初始化失敗,重新初始化網(wǎng)卡.中斷接收程序的流程圖如圖4所示. 在接收到以太網(wǎng)數(shù)據(jù)幀中,首先判斷數(shù)據(jù)類型字段,如果是ARP 協(xié)議,則進(jìn)入ARP 處理流程,如果是IP 協(xié)議,則進(jìn)入IP 協(xié)議流程.ARP 協(xié)議處理過程: 首先判斷ARP 包目的IP 地址是否與本地IP 地址一致,如果不一致,丟棄不處理;如果一致,再判斷ARP類型,操作類型字段為1 時(shí)表示ARP 請(qǐng)求,調(diào)用ARP發(fā)送函數(shù)發(fā)送ARP 響應(yīng)包.操作類型字段為2 時(shí),記錄下對(duì)方的MAC 地址,以后通信就是根據(jù)這個(gè)MA
12、C傳送數(shù)據(jù)的. IP 協(xié)議處理過程如下所述:首先判斷IP 包目的IP地址是否與本地IP 一致,如果不一致,丟棄不處理,如果一致,則再判斷協(xié)議類型,是否為UDP 數(shù)據(jù)包,是就進(jìn)入U(xiǎn)DP 處理過程,不是就進(jìn)入其他協(xié)議處理過程. 3 實(shí)驗(yàn)結(jié)果和分析 3. 1 ARP 通信測(cè)試 實(shí)驗(yàn)中測(cè)試了ARP 請(qǐng)求和UDP 通信,設(shè)置ARM開發(fā)板的IP 地址為219. 243. 50. 187,MAC 地址為052,054,0 x4c,038,0 xf7,042,PC 機(jī)的IP 地址為219. 243. 50. 188,MAC 地址為000,023,0 x5A,015,073,0 xF4.經(jīng)過測(cè)試當(dāng)開板向PC 發(fā)
13、送ARP 請(qǐng)求時(shí),PC 能夠正確應(yīng)答響應(yīng)包,并且多次請(qǐng)求都能夠得到正確的響應(yīng),證明ARP 協(xié)議能夠穩(wěn)定運(yùn)行,實(shí)驗(yàn)結(jié)果如圖5 所示. 當(dāng)開發(fā)板得到了PC 機(jī)的MAC 地址之后,就可以與它開展正常的UDP 通信了.在中斷程序之中判定協(xié)議類型,接收到的數(shù)據(jù)包是ARP 協(xié)議還是UDP 協(xié)議,當(dāng)接收的是ARP 協(xié)議,則開展ARP 協(xié)議處理,得出圖5 的實(shí)驗(yàn)結(jié)果,當(dāng)?shù)玫降氖荱DP 協(xié)議,則開展UDP 協(xié)議處理,得出的實(shí)驗(yàn)結(jié)果如圖6 所示.經(jīng)過長(zhǎng)時(shí)間的通信可以發(fā)現(xiàn),傳輸?shù)臄?shù)據(jù)沒有出現(xiàn)誤碼,可以說明這種通信方式比較穩(wěn)定可行. 3. 2 UDP 通信測(cè)試 在UDP 通信實(shí)驗(yàn)中,設(shè)置兩個(gè)數(shù)據(jù)終端的IP 地址和通信端口分別為87:6000,86:10005,然后發(fā)送數(shù)據(jù),用抓包工具sniffer 抓包的結(jié)果如圖6 所示.通過圖中結(jié)果可以看出,SrcIP 為219. 243. 50. 87,Src Port 為6000,DestIP 為219. 243.50. 186,Dst Port 為10005,這都與設(shè)置的相同.Protocol為0800 表示為UDP 協(xié)議類型,而且能夠正確地接收到發(fā)送的數(shù)據(jù),并且經(jīng)過多次的實(shí)驗(yàn),結(jié)果都是正
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 漿砌拱形護(hù)坡施工方案
- 公司聘用會(huì)計(jì)合同范例
- 鄉(xiāng)村振興設(shè)計(jì)合同范例
- 住建合同范例
- 公司收購(gòu)居間合同范例
- 全屋翻新出租合同范例
- 氟碳漆涂刷的施工方案
- 地理人教版2024版七年級(jí)初一上冊(cè)1.3地球的運(yùn)動(dòng)教案03
- 公路項(xiàng)目檢測(cè)委托合同范例
- 教師省骨干考試題及答案
- 馬達(dá)檢測(cè)報(bào)告
- 拼音瘋狂背古詩(shī)(6個(gè)單元120首)
- 閱讀讓我們更聰明
- 牙周病科普講座課件
- 實(shí)驗(yàn)室安全專項(xiàng)培訓(xùn)
- 工業(yè)地產(chǎn)營(yíng)銷推廣方案
- 2024年貴州能源集團(tuán)電力投資有限公司招聘筆試參考題庫(kù)附帶答案詳解
- 電子產(chǎn)品設(shè)計(jì)案例教程(微課版)-基于嘉立創(chuàng)EDA(專業(yè)版) 課件 第3章 多諧振蕩器的PCB設(shè)計(jì)
- 鐵路軌道與修理
- 紡織行業(yè)清潔生產(chǎn)評(píng)價(jià)指標(biāo)體系色紗
- 管理能力測(cè)試題大全
評(píng)論
0/150
提交評(píng)論