




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、【Word版本下載可任意編輯】 ARM9 的UDP 協議棧的設計與實現 摘 要:為了滿足以太網通信過程中大數據量的快速傳輸的需求,往往可以犧牲一些可靠性換來高速的數據傳輸.根據方案,文中設計了一套基于YLP2440 的UDP 通信系統,實現了簡單實用的UDP 通信協議.首先介紹了系統整體硬件構造,然后完成了以太網通信系統軟件設計,以DM9000A 以太網卡驅動程序為根底,通過裁剪移植TCP/ IP 協議棧,實現了系統數據的接收和發送.對系統UDP 和ARP 通信開展了測試,結果說明UDP 通信系統整體穩定可靠,并且系統開銷小.數據傳輸速度快,能夠滿足實際應用需求. 0 引 言 隨著嵌入式技術和
2、網絡技術的迅速發展,以太網接口在嵌入式系統中的應用越來越廣泛.以太網通信速度快.通用,可直接與Internet 相連接,提供更大范圍的遠程訪問.目前在工控嵌入式領域,網絡通信通常采用UDP 和TCP 協議.UDP 與TCP 相比,UDP 使用非連接的.不可靠的通信方式,因此網絡傳輸速度快,實時性相對較好.文中設計實用S3C2440.以太網控制器DM9000 和經過自行裁剪的TCP / IP 協議棧,構成嵌入式系統的以太網接口,實現UDP 通信. 1 系統的硬件介紹該系統采用優龍科技公司YLP2440 作為開發的硬件系統,YLP2440 采用三星S3C2440A 作為CPU,主頻400MHz,帶
3、有64MB SDRAM 和64MB NANDFlash 的外部存儲器,有兩個五線異步串行口,波特率高達115200bps,一個10M / 100M DM900AEP 網絡接口卡,帶有連接和傳輸指示燈.DM9000A 是一個全集成.功能強大.性價比高的快速以太網MAC 控制器,它帶有一個通用處理接口.EEPROM 接口.10/ 100MPHY 和SRAM,采用單電源供電,可兼容3. 3V.5V 的IO 接口電平.DM9000A 同樣支持MII (Media IndependentInterface,介質無關接口),它包含一系列可被訪問控制的狀態存放器,這些存放器是字節對齊的,在硬件或者軟件復位時
4、被設置成初始化. 硬件框圖如圖1 所示. 2 以太網軟件的設計 2. 1 以太網卡控制器的初始化 首先DM9000A 自檢,讀取DM9000 的生產廠家ID和設備ID 與已經設定好的ID 開展比對,判斷DM9000網卡是否存在,初始化DM9000A,它的過程就是適當配置DM9000A 存放器的過程,具體過程分為以下幾個步驟: (1)啟動DM9000A,設置CPCR = 01,使DM9000 的GPIO3 為輸出,GPR =00,使DM9000 的GPIO3 輸出為低以激活內部PHY.延時2ms 以上以等待PHY 上電. (2)開展兩次軟復位,設置DM9000 為正常工作模式,根據芯片設計要求,
5、要想使芯片在上電之后工作正常就要開展兩次軟復位,設置為NCR =001,NCR =000,這兩步操作開展兩次. (3) 去除各種狀態標志位和中斷標志位,NSR =0 x2c,ISR =0 x3f. (4)設置接收和發送控制存放器,并且設置FIFO的大小,RCR =039.TCR =000.FCTR =038. (5)設置板子自身的MAC 地址. (6)再去除各種狀態標志位和中斷標志位,NSR =0 x2c,ISR =0 x3f. (7)設置中斷屏蔽存放器,打開接收中斷,IMR =081. 當開展了以上步驟的設置之后,DM9000A 芯片就處于正常工作狀態了.在以后開展通信的過程中,如果發生異常
6、引起芯片重啟,則再開展同樣的設置. 2. 2 以太網卡數據的發送和接收 DM9000A 發送數據采用的是循環查詢模式,接收數據采用的是中斷模式,DM9000 內部有0 x3FF 大小的SRAM 用于接收和發送數據緩存.在發送或接收數據包之前,數據是暫存在這個SRAM 中的.當需要連續發送或接收數據時,需要分別把DM9000 存放器MWCMD 或MRCMD 賦予數據端口,這樣就指定了SRAM 中的某個地址,并且在傳輸完一個數據后,指針會指向SRAM 中的下一個地址,從而完成了連續訪問數據的目的.但當發送或接收一個數據后, 指向SRAM 的數據指針不需要變化時,則要把MWCMDX 或MRCMDX
7、賦予數據端口 . 發送數據比較簡單,接收數據就略顯復雜,因為它是有一定格式要求的.在接收到的一包數據中的首字節如果為001,則表示這是一個可以接收的數據包;如果為00,則表示沒有可接收的數據包.因此在讀取其他字節時,一定要先判斷首字節是否為001.數據包的第二個字節為數據包的一些信息,它的高字節的格式與DM9000 的存放器RSR 完全一致.第三個和第四個字節為數據包的長度.后面的數據就是真正要接收的數據了. 2. 2. 1 UDP 協議棧的裁剪實現 在系統中主要使用UDP 通信,只需要實現ARP協議.IP 協議,對TCP/ IP 協議開展部分的實現.UDP協議通信(即用戶數據報協議)與TCP
8、 一樣都是屬于傳輸層協議,位于IP(網際協議)協議的頂層.UDP 相對于TCP 是一種簡單協議,提供的是少的服務,編寫的代碼量也小,所需的程序和內存空間少,運行速度快.ARP 為IP 地址對應的硬件地址之間提供動態映射,發送終端把以太網數據幀發送到位于同一局域網上的另一臺主機時,是根據48bit 的以太網地址來確定目的接口的.設備驅動程序從不檢查IP 數據報中的目的IP 地址.IP 協議是TCP/ IP 協議中為的協議,它提供不可靠.無連接的數據報傳送服務 . 2. 2. 2 數據的發送過程 數據發送過程如圖2 所示.發送終端在次發送數據的時候,要知道接收端的IP 地址和端口號,還要得到對方的
9、物理MAC 地址,因為兩個終端通信是通過尋找對方的MAC 地址來開展的,因此首先得通過ARP 協議,把對方的IP 地址轉換為MAC 地址,得到了物理地址之后才能通信.如果長時間不能得到這個物理地址,則只能說明請求失敗,需要重新發送ARP 請求,ARP 的封裝過程如圖3(b)所示. 2. 2. 3 數據包的封裝過程 UDP 協議數據包的封裝在運輸層開展,打好包的UDP 數據將送往網絡層開展IP 協議的打包,UDP 要完成進程到進程的通信,把報文交付給正確的進程.當進程有報文要通過UDP 發送時,它就把這個報文連同一對套接字地址以及數據長度傳遞給UDP.UDP 收到數據后就加上UDP 首部,也就是
10、UDP 數據包的封裝如圖3(c)所示.然后UDP 就把該用戶數據包連同IP 加上自己首部,在協議字段使用值17,指出該數據是從UDP 協議來的,這個過程就是IP 數據包的封裝過程如圖3(a)所示.這個IP 數據包再傳遞給數據鏈路層.數據鏈路層收到IP 數據包之后,加上自己的首部(可能還有尾部),再傳遞給物理層.物理層把這些位編碼為電信號或者光信號,然后把它發送到遠程的機器. 2. 2. 4 數據的接收 系統接收數據采用的是中斷模式.當網卡接收到數據時,就觸發一個中斷,啟動中斷服務程序.在中斷服務程序中首先去除中斷標志位,以防在接收數據的時候再次引發中斷,然后判斷存放器MRMDX 的值,確定網卡
11、是否接收到了數據,如果接收到了數據就要開展數據處理,也就是對數據包的解封,得到應用程序發送來的數據,如果沒有得到數據則說明網卡初始化失敗,重新初始化網卡.中斷接收程序的流程圖如圖4所示. 在接收到以太網數據幀中,首先判斷數據類型字段,如果是ARP 協議,則進入ARP 處理流程,如果是IP 協議,則進入IP 協議流程.ARP 協議處理過程: 首先判斷ARP 包目的IP 地址是否與本地IP 地址一致,如果不一致,丟棄不處理;如果一致,再判斷ARP類型,操作類型字段為1 時表示ARP 請求,調用ARP發送函數發送ARP 響應包.操作類型字段為2 時,記錄下對方的MAC 地址,以后通信就是根據這個MA
12、C傳送數據的. IP 協議處理過程如下所述:首先判斷IP 包目的IP地址是否與本地IP 一致,如果不一致,丟棄不處理,如果一致,則再判斷協議類型,是否為UDP 數據包,是就進入UDP 處理過程,不是就進入其他協議處理過程. 3 實驗結果和分析 3. 1 ARP 通信測試 實驗中測試了ARP 請求和UDP 通信,設置ARM開發板的IP 地址為219. 243. 50. 187,MAC 地址為052,054,0 x4c,038,0 xf7,042,PC 機的IP 地址為219. 243. 50. 188,MAC 地址為000,023,0 x5A,015,073,0 xF4.經過測試當開板向PC 發
13、送ARP 請求時,PC 能夠正確應答響應包,并且多次請求都能夠得到正確的響應,證明ARP 協議能夠穩定運行,實驗結果如圖5 所示. 當開發板得到了PC 機的MAC 地址之后,就可以與它開展正常的UDP 通信了.在中斷程序之中判定協議類型,接收到的數據包是ARP 協議還是UDP 協議,當接收的是ARP 協議,則開展ARP 協議處理,得出圖5 的實驗結果,當得到的是UDP 協議,則開展UDP 協議處理,得出的實驗結果如圖6 所示.經過長時間的通信可以發現,傳輸的數據沒有出現誤碼,可以說明這種通信方式比較穩定可行. 3. 2 UDP 通信測試 在UDP 通信實驗中,設置兩個數據終端的IP 地址和通信端口分別為87:6000,86:10005,然后發送數據,用抓包工具sniffer 抓包的結果如圖6 所示.通過圖中結果可以看出,SrcIP 為219. 243. 50. 87,Src Port 為6000,DestIP 為219. 243.50. 186,Dst Port 為10005,這都與設置的相同.Protocol為0800 表示為UDP 協議類型,而且能夠正確地接收到發送的數據,并且經過多次的實驗,結果都是正
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 神經內科設備培訓
- 校園宿舍閑置空地的利用設計
- 車輛借用與租賃車輛保險理賠責任合同范本
- 商業地產項目場地承包經營合作協議書
- 餐飲企業員工勞動合同范本及培訓考核合同
- 特色主題餐廳經營合作協議
- 黨建聯學共建項目合作協議書
- 車輛抵押擔保汽車維修擔保服務合同
- 汽車抵押典當貸款業務合作協議
- 車棚租賃與停車誘導系統合作協議
- 醫院醫用耗材SPD服務項目投標方案
- 廈門大學海洋科學導論課件(水文部分)l
- 食品廠衛生安全員工培訓
- 質保協議合同范例
- 手術室神經外科護理進修
- 【MOOC】中西文化鑒賞-鄭州大學 中國大學慕課MOOC答案
- 鼻息肉摘除術手術配合
- 《血管活性藥物靜脈輸注護理》團體標準解讀
- 北師大版七年級上冊數學期末考試試題帶答案
- 高原隧道施工通風方案
- 腹腔鏡下膽囊切除術
評論
0/150
提交評論