色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于ARM9和DM9000芯片解決UDP協議的通信問題

電子設計 ? 來源:郭婷 ? 作者:電子設計 ? 2018-12-04 08:25 ? 次閱讀

引 言

隨著嵌入式技術和網絡技術的迅速發展,以太網接口嵌入式系統中的應用越來越廣泛。以太網通信速度快。通用,可直接與Internet 相連接,提供更大范圍的遠程訪問。目前在工控嵌入式領域,網絡通信通常采用UDP 和TCP 協議.UDP 與TCP 相比,UDP 使用非連接的。不可靠的通信方式,因此網絡傳輸速度快,實時性相對較好。文中設計實用S3C2440.以太網控制器DM9000 和經過自行裁剪的TCP / IP 協議棧,構成嵌入式系統的以太網接口,實現UDP 通信。

1 系統的硬件介紹

該系統采用優龍科技公司YLP2440 作為開發的硬件系統,YLP2440 采用三星S3C2440A 作為CPU,最高主頻400MHz,帶有64MB SDRAM 和64MB NANDFlash 的外部存儲器,有兩個五線異步串行口,波特率高達115200bps,一個10M / 100M DM900AEP 網絡接口卡,帶有連接和傳輸指示燈.DM9000A 是一個全集成。功能強大。性價比高的快速以太網MAC 控制器,它帶有一個通用處理接口.EEPROM 接口.10/ 100MPHY 和SRAM,采用單電源供電,可兼容3. 3V.5V 的IO 接口電平.DM9000A 同樣支持MII (Media IndependentInterface,介質無關接口),它包含一系列可被訪問控制的狀態寄存器,這些寄存器是字節對齊的,在硬件或者軟件復位時被設置成初始化。

硬件框圖如圖1 所示。

基于ARM9和DM9000芯片解決UDP協議的通信問題

2 以太網軟件的設計

2. 1 以太網卡控制器的初始化

首先DM9000A 自檢,讀取DM9000 的生產廠家ID和設備ID 與已經設定好的ID 進行比對,判斷DM9000網卡是否存在,初始化DM9000A,它的過程就是適當配置DM9000A 寄存器的過程,具體過程分為以下幾個步驟:

(1)啟動DM9000A,設置CPCR[REG_1E] = 0×1,使DM9000 的GPIO3 為輸出,GPR[REG_1F] =0×0,使DM9000 的GPIO3 輸出為低以激活內部PHY.延時2ms 以上以等待PHY 上電。

(2)進行兩次軟復位,設置DM9000 為正常工作模式,根據芯片設計要求,要想使芯片在上電之后工作正常就要進行兩次軟復位,設置為NCR[REG_00] =0×01,NCR[REG_00] =0×00,這兩步操作進行兩次。

(3) 清除各種狀態標志位和中斷標志位,NSR[REG_01] =0x2c,ISR[REG_FE] =0x3f.

(4)設置接收和發送控制寄存器,并且設置FIFO的大小,RCR[REG_05] =0×39.TCR[REG_02] =0×00.FCTR[REG_09] =0×38.

(5)設置板子自身的MAC 地址。

(6)再一次清除各種狀態標志位和中斷標志位,NSR[REG_01] =0x2c,ISR[REG_FE] =0x3f.

(7)設置中斷屏蔽寄存器,打開接收中斷,IMR[REG_FF] =0×81.

當進行了以上步驟的設置之后,DM9000A 芯片就處于正常工作狀態了。在以后進行通信的過程中,如果發生異常引起芯片重啟,則再一次進行同樣的設置。

2. 2 以太網卡數據的發送和接收

DM9000A 發送數據采用的是循環查詢模式,接收數據采用的是中斷模式,DM9000 內部有0x3FF 大小的SRAM 用于接收和發送數據緩存。在發送或接收數據包之前,數據是暫存在這個SRAM 中的。當需要連續發送或接收數據時,需要分別把DM9000 寄存器MWCMD 或MRCMD 賦予數據端口,這樣就指定了SRAM 中的某個地址,并且在傳輸完一個數據后,指針會指向SRAM 中的下一個地址,從而完成了連續訪問數據的目的。但當發送或接收一個數據后, 指向SRAM 的數據指針不需要變化時,則要把MWCMDX 或MRCMDX 賦予數據端口 。

發送數據比較簡單,接收數據就略顯復雜,因為它是有一定格式要求的。在接收到的一包數據中的首字節如果為0×01,則表示這是一個可以接收的數據包;如果為0×0,則表示沒有可接收的數據包。因此在讀取其他字節時,一定要先判斷首字節是否為0×01.數據包的第二個字節為數據包的一些信息,它的高字節的格式與DM9000 的寄存器RSR 完全一致。第三個和第四個字節為數據包的長度。后面的數據就是真正要接收的數據了。

2. 2. 1 UDP 協議棧的裁剪實現

在系統中主要使用UDP 通信,只需要實現ARP協議.IP 協議,對TCP/ IP 協議進行部分的實現.UDP協議通信(即用戶數據報協議)與TCP 一樣都是屬于傳輸層協議,位于IP(網際協議)協議的頂層.UDP 相對于TCP 是一種簡單協議,提供的是最少的服務,編寫的代碼量也小,所需的程序和內存空間少,運行速度快.ARP 為IP 地址對應的硬件地址之間提供動態映射,發送終端把以太網數據幀發送到位于同一局域網上的另一臺主機時,是根據48bit 的以太網地址來確定目的接口的。設備驅動程序從不檢查IP 數據報中的目的IP 地址.IP 協議是TCP/ IP 協議中最為核心的協議,它提供不可靠。無連接的數據報傳送服務 。

2. 2. 2 數據的發送過程

數據發送過程如圖2 所示。發送終端在第一次發送數據的時候,要知道接收端的IP 地址和端口號,還要得到對方的物理MAC 地址,因為兩個終端最后通信是通過尋找對方的MAC 地址來進行的,因此首先得通過ARP 協議,把對方的IP 地址轉換為MAC 地址,得到了物理地址之后才能通信。如果長時間不能得到這個物理地址,則只能說明請求失敗,需要重新發送ARP 請求,ARP 的封裝過程如圖3(b)所示。

基于ARM9和DM9000芯片解決UDP協議的通信問題

基于ARM9和DM9000芯片解決UDP協議的通信問題

2. 2. 3 數據包的封裝過程

UDP 協議數據包的封裝在運輸層進行,打好包的UDP 數據將送往網絡層進行IP 協議的打包,UDP 要完成進程到進程的通信,把報文交付給正確的進程。當進程有報文要通過UDP 發送時,它就把這個報文連同一對套接字地址以及數據長度傳遞給UDP.UDP 收到數據后就加上UDP 首部,也就是UDP 數據包的封裝如圖3(c)所示。然后UDP 就把該用戶數據包連同IP 加上自己首部,在協議字段使用值17,指出該數據是從UDP 協議來的,這個過程就是IP 數據包的封裝過程如圖3(a)所示。這個IP 數據包再傳遞給數據鏈路層。數據鏈路層收到IP 數據包之后,加上自己的首部(可能還有尾部),再傳遞給物理層。物理層把這些位編碼為電信號或者光信號,然后把它發送到遠程的機器。

2. 2. 4 數據的接收

系統接收數據采用的是中斷模式。當網卡接收到數據時,就觸發一個中斷,啟動中斷服務程序。在中斷服務程序中首先清除中斷標志位,以防在接收數據的時候再次引發中斷,然后判斷寄存器MRMDX 的值,確定網卡是否接收到了數據,如果接收到了數據就要進行數據處理,也就是對數據包的解封,得到應用程序發送來的數據,如果沒有得到數據則說明網卡初始化失敗,重新初始化網卡。中斷接收程序的流程圖如圖4所示。

基于ARM9和DM9000芯片解決UDP協議的通信問題

在接收到以太網數據幀中,首先判斷數據類型字段,如果是ARP 協議,則進入ARP 處理流程,如果是IP 協議,則進入IP 協議流程.ARP 協議處理過程:

首先判斷ARP 包目的IP 地址是否與本地IP 地址一致,如果不一致,丟棄不處理;如果一致,再判斷ARP類型,操作類型字段為1 時表示ARP 請求,調用ARP發送函數發送ARP 響應包。操作類型字段為2 時,記錄下對方的MAC 地址,以后通信就是根據這個MAC傳送數據的。

IP 協議處理過程如下所述:首先判斷IP 包目的IP地址是否與本地IP 一致,如果不一致,丟棄不處理,如果一致,則再判斷協議類型,是否為UDP 數據包,是就進入UDP 處理過程,不是就進入其他協議處理過程。

3 實驗結果和分析

3. 1 ARP 通信測試

實驗中測試了ARP 請求和UDP 通信,設置ARM開發板的IP 地址為219. 243. 50. 187,MAC 地址為0×52,0×54,0x4c,0×38,0xf7,0×42,PC 機的IP 地址為219. 243. 50. 188,MAC 地址為0×00,0×23,0x5A,0×15,0×73,0xF4.經過測試當開板向PC 發送ARP 請求時,PC 能夠正確應答響應包,并且多次請求都能夠得到正確的響應,證明ARP 協議能夠穩定運行,實驗結果如圖5 所示。

當開發板得到了PC 機的MAC 地址之后,就可以與它進行正常的UDP 通信了。在中斷程序之中判定協議類型,接收到的數據包是ARP 協議還是UDP 協議,當接收的是ARP 協議,則進行ARP 協議處理,得出圖5 的實驗結果,當得到的是UDP 協議,則進行UDP 協議處理,得出的實驗結果如圖6 所示。經過長時間的通信可以發現,傳輸的數據沒有出現誤碼,可以說明這種通信方式比較穩定可行。

基于ARM9和DM9000芯片解決UDP協議的通信問題

3. 2 UDP 通信測試

在UDP 通信實驗中,設置兩個數據終端的IP 地址和通信端口分別為219.243.50.187:6000,219.243.50.186:10005,然后發送數據,用抓包工具sniffer 抓包的結果如圖6 所示。通過圖中結果可以看出,SrcIP 為219. 243. 50. 87,Src Port 為6000,DestIP 為219. 243.50. 186,Dst Port 為10005,這都與設置的相同.Protocol為0×800 表示為UDP 協議類型,而且能夠正確地接收到發送的數據,并且經過多次的實驗,結果都是正確的,這證明系統通信穩定可靠,通過移植的協議棧能夠正常的工作,達到了預期的目標。

4 結束語

文中實現了基于ARM9 和DM9000 芯片的UDP通信,成功地對TCP/ IP 協議棧裁剪移植實現UDP.ARP 等協議通信。詳細介紹了DM9000 網卡驅動程序過程,并且實現了網口接收發送數據的功能,通過對大量數據的傳輸實驗,證明了ARM9 和DM9000 構成的通信系統性能的穩定性。能夠較好地解決大量數據通過UDP 協議通信的問題.

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5086

    文章

    19140

    瀏覽量

    305871
  • 以太網
    +關注

    關注

    40

    文章

    5432

    瀏覽量

    171896
  • 三星電子
    +關注

    關注

    34

    文章

    15865

    瀏覽量

    181052
收藏 人收藏

    評論

    相關推薦

    STM32+LWIP網絡協議棧移植(網卡采用DM9000)

    本篇文章主要講解如何在STM32F103工程里添加移植LWIP協議,最終完成TCP服務器、TCP客戶端的通信測試。 網卡采用的是DM9000,工程代碼中,采用STM32的FSMC接口來驅動DM
    的頭像 發表于 03-11 09:49 ?8727次閱讀
    STM32+LWIP網絡<b class='flag-5'>協議</b>棧移植(網卡采用<b class='flag-5'>DM9000</b>)

    DM9000芯片快速以太網控制器簡介

    ?DM9000 是一款完全集成的、性價比高、引腳數少、帶有通用處理器接口的單芯片快速以太網控制器。 自 帶一個 10/100M PHY 和 4K 雙字的 SRAM ,DM9000A 為適應各種處理器提供了 8 位、16 位數據接
    的頭像 發表于 06-01 09:08 ?1.2w次閱讀
    <b class='flag-5'>DM9000</b>單<b class='flag-5'>芯片</b>快速以太網控制器簡介

    DM9000系列

    dm9000   1、總體介紹  該DM9000是一款完全集成的和符合成本效益單芯片快速以太網MAC控制器與一般處理接口,一個10/100M自適應的PHY和4K DWORD值的SRAM 。它的目的
    發表于 05-17 10:17

    dm9000讀寫寄存器的問題

    )方式2的函數名為phy_read,估摸著意思是讀網卡芯片的寄存器,但我看DM9000的時候只看到一類寄存器,并沒有分成兩類,那么這兩種讀取方式有什么區別?{:36:}
    發表于 10-31 16:13

    【NUCLEO-F412ZG申請】合作式調度器構建以及基于DM9000的LWIP移植及調試

    DM90005、移植LWIP協議棧,實現TCP/UDP通信,并通過上位機軟件同Demo板進行數據傳輸。6、移植FreeRTOS,顯現串口守護任務,進行串口數據收發。7、實現NRF24L
    發表于 10-31 15:31

    U-Boot移植DM9000網卡分享!

    講的CS8900網卡了。DM9000網卡與CS8900網卡接口方式不一樣,經過幾天的折騰,終于移植成功,現將筆記整理如下。一、移植環境1.u-boot版本1.1.62.開發板Jz2440(ARM9
    發表于 07-29 00:06

    如何在uboot使用命令打開DM9000?

    在使用開發板ping虛擬機的時候 發現了ERROR: resetting DM9000 -> not responding 這個錯誤 DM9000沒有打開,我使用的是沒有默認打開
    發表于 09-25 22:14

    DM9000/DM9010 pdf datasheet (E

    DM9000/DM9000A & 9010 10/100 Mbps Single Chip Ethernet Controller with General Processor
    發表于 12-25 21:57 ?8次下載

    dm9000/dm9000a linux驅動程序 (Ethe

    dm9000/dm9000a以太網卡芯片linux驅動程序 :dm9000/dm9000a Ethernet chips linux dri
    發表于 12-26 00:13 ?117次下載

    基于ARMDM9000的網卡接口設計與實現

    針對ARM CPU S3C2410的特點,設計開發了外圍網卡接口平臺,通過驅動程序對以太網控制芯片DM9000的控制,實現了網絡數據傳輸功能。硬件方面主要涉及以太網網絡接口的設計,軟件方
    發表于 10-09 16:16 ?144次下載

    DM9000的以太網藏文信息控制平臺

    DM9000的以太網藏文信息控制平臺 摘要:基于DM9000的以太網電路,單片機端移植精簡TCP/IP協議棧unIP,實現簡易的TCP服務器。對該簡易的TCP服務器進行改造,把藏文網頁存儲
    發表于 04-13 12:47 ?5697次閱讀
    <b class='flag-5'>DM9000</b>的以太網藏文信息控制平臺

    單片機驅動DM9000網卡芯片詳細調試過程

    單片機驅動DM9000網卡芯片詳細調試過程
    發表于 11-02 11:03 ?0次下載

    基于ARM9UDP協議棧的設計與實現

    基于ARM9UDP協議棧的設計與實現
    發表于 01-19 21:22 ?9次下載

    使用單片機驅動DM9000網卡芯片的詳細調試過程資料免費下載

    本文主要介紹單片機驅動DM9000E網卡芯片的詳細過程。從網卡電路的連接,到網卡初始化相關程序調試,再到ARP協議的實現,一步一步詳細介紹調試過程。如果有時間也會把UDP和TCP通訊實
    發表于 08-27 17:30 ?14次下載
    使用單片機驅動<b class='flag-5'>DM9000</b>網卡<b class='flag-5'>芯片</b>的詳細調試過程資料免費下載

    DM9000芯片快速以太網MAC控制器英文手冊

    電子發燒友網站提供《DM9000芯片快速以太網MAC控制器英文手冊.pdf》資料免費下載
    發表于 07-16 17:30 ?0次下載
    主站蜘蛛池模板: 含羞草国产亚洲精品岁国产精品| 天天射天天爱天天干| 日本一在线中文字幕| 亚洲精品无AMM毛片| jk白丝袜美女被男人桶| 精品国产人成亚洲区| 日韩吃奶摸下AA片免费观看| 依恋影院在线观看| 精品国产乱码久久久久久免费 | www.狠狠色| 扒开女人下面使劲桶视频| 成人精品视频| 美女脱三角裤| 亚洲日韩欧美国产中文在线| 都市妖奇谈有声| 奶水四溅54p| 一二三四高清中文版视频| 国产精品v片在线观看不卡| 欧美乱妇日本无乱码特黄大片| 伊人精品在线| 国产亚洲精品久久久久久国| 日本大尺码喷液过程视频| 中文字幕中文字幕永久免费| 国产在线精品一区二区在线看| 肉动漫无码无删减在线观看| 757一本到午夜宫| 久久精品免视看国产| 亚洲成人免费观看| 国产成人女人视频在线观看| 奇米色偷偷| 97久久无码精品AV| 久久婷婷久久一区二区三区| 亚在线观看免费视频入口| 动漫女主被扒开双腿羞辱| 男生插曲女生身全过程| 在线亚洲精品福利网址导航| 回复术士人生重启在线观看| 香蕉eeww99国产精品| 国产99精品在线观看| 秋霞在线看片无码免费| 99re5.久久热在线视频|