熟女人妻水多爽中文字幕,国产精品鲁鲁鲁,隔壁的少妇2做爰韩国电影,亚洲最大中文字幕无码网站

技術頻道

娓娓工業
您現在的位置: 中國傳動網 > 技術頻道 > 技術百科 > 基于嵌入式調試器的網絡通信方法設計與實現

基于嵌入式調試器的網絡通信方法設計與實現

時間:2008-05-04 14:47:00來源:ronggang

導語:?本文介紹了在嵌入式調試器中如何通過以太網口進行嵌入式軟件調試,實現了主機與開發板之間的網口通信
摘 要:本文介紹了在嵌入式調試器中如何通過以太網口進行嵌入式軟件調試,實現了主機與開發板之間的網口通信。針對具體的嵌入式開發板S3C4510B對網口驅動和網絡協議進行了研究,裁減了網口驅動和網絡協議的冗余部分,既保證了調試器可以通過以太網進行遠程調試,又能滿足嵌入式系統對資源占用的要求。 關鍵詞:嵌入式開發板;網絡協議;嵌入式調試器 0.引言   隨著嵌入式系統的廣泛應用,嵌入式軟件開發變得日趨重要。嵌入式軟件開發有別于桌面軟件開發,其顯著特點是軟件開發的調試過程采用宿主機/目標機的模式進行,其交叉調試器分為宿主機和目標機兩部分,因此在軟件調試過程中就需要進行主機與目標機之間的通信。   目前宿主機與目標機之間的通信方式主要有串口方式、以太網接口方式和USB接口方式三種,其中串口通信實現簡單,穩定可靠,是目前廣泛使用的通信方式,但是串口通信存在著速度慢、通信距離受限等弊端,而以太網接口方式則可以克服串口方式的不足,不僅可提供穩定可靠的數據傳輸,而且無論是傳輸速度還是傳輸距離都遠遠優于串口方式,是一種快速高效的通信方式。目前網絡通信協議的發展已經相當成熟,Internet工程委員會IETF及其下屬的管理組IESG在RFC文擋中已經明確定義了Internet協議族的規范,該規范已經成為一種標準在Internet中廣泛應用。本文根據此規范討論了在嵌入式調試器中如何實現以太網接口通信,給出了一種基于嵌入式調試器的網絡通信方法。 1.硬件結構   S3C4510B是三星公司開發的一款16/32位RISC嵌入式處理器,芯片內部集成了一個10Mbps/100Mvps以太網控制器,網卡芯片采用的是RTL8201。以太網控制器主要分為BDMA控制器和MAC子層兩部分,該控制器工作于MAC層,兼容IEEE802.3協議標準,支持半雙工或全雙工模式,采用介質獨立接口(MII)與網卡芯片通信。 2.通信協議   在嵌入式調試器的通信中,主機向目標機發送命令,目標機接收、執行命令并將結果返回主機,網口通信主要是面向數據和字符串傳輸的,因此在通信中主要用到IP協議、ARP協議和UDP協議。要通過網絡調試目標機,那么目標機IP地址的設置是必不可少的,因此目標機還需要實現BOOTP協議,通過BOOTP協議向主機申請本機IP地址,完成IP地址的配置。   BOOTP協議即引導程序協議,是一種基于UDP/IP的協議,主要用于客戶機從服務器獲得本機IP地址、服務器IP地址及其它配置信息,如本地子網掩碼等。UDP協議即用戶數據報協議,是一個簡單的面向數據報的傳輸協議,與TCP不同,UDP不提供對IP協議的可靠機制、流控制以及錯誤恢復功能,所以實現起來比較簡單,且不影響傳輸速度,適用于嵌入式系統。IP協議即網際協議,是網絡上實現數據傳輸的基礎,所有的TCP、UDP數據都以IP數據報格式傳輸,該協議提供了一種高效不可靠的無連接傳輸方式。ARP協議即地址解析協議,為IP地址與對應的物理地址提供映射。 3. 網絡通信程序實現   具體的程序實現主要包括網口驅動和通信協議兩部分,網口驅動即初始化S3C4510B的硬件,主要是以太網控制器和收發緩沖的設置;網絡協議的實現主要是完成數據的收發,保證目標板接入以太網。程序實現流程如圖1所示。
圖1 程序實現流程圖
  3.1網口驅動實現   網口驅動的實現主要是針對具體的開發板所做的硬件初始化,配置硬件工作環境。   3.1.1管理網卡芯片   在4510開發板中由MAC層的狀態管理控制機通過MII接口來讀取和設置網卡的工作狀態,物理設備地址及其內部寄存器地址存放在站管理控制與地址寄存器STACON中,而要設置或讀取的數據則放在站管理數據寄存器STADATA中。   在實際應用中,網卡的MAC地址可以從ICC EEPROM中讀取,也可自行設定,只要保證在同一局域網內該地址的唯一性即可。   3.1.2初始化以太網控制器   ①關閉MAC、BDMA收發中斷,保證初始化程序的順利進行。   ②設置MAC、BDMA中斷向量表。S3C4510B中共有21個中斷源,MAC和BDMA發送/接收中斷源占用16~19四個中斷號。   ③設置MAC、BDMA控制器的初始值,即初始化BDMA接收/發送控制寄存器和MAC接收/控制寄存器,具體收發細節。   ④配置以太網的收發緩沖區。發送幀和接收幀的幀描述符起始地址分別存放在寄存器BDMATXPTR和BDMARXPTR中,在BDMA的操作過程中它們會更新為下一個幀地址。其中,幀描述符定義為結構類型,結構體成員描述了幀信息。   ⑤使能BDMA接收中斷和MAC發送中斷。將中斷屏蔽寄存器INTMSK中的相應位清零,響應BDMA和MAC中斷請求。   3.1.3收發以太數據幀   ①發送以太數據幀:調用發送函數DrvEthWrite(),從BDMATXPTR中獲得發送幀地址,為發送幀緩沖賦值,將數據幀的控制權交給BDMA控制器,以太網控制器自動為發送數據加上同步位、分割位、校驗位以及填充字段并將以太幀發送出去。   ②接收以太數據幀:接收時產生BDMA接收中斷,中斷處理函數BDMA_Rx_isr()完成數據的接收,并做相關的處理,如清楚中斷標志位、檢查數據幀的所有權、獲取下一個未處理的幀結構指針等。   部分主要程序如下:   /*配置物理設備*/   MIIWrite(0x0, 0x2, 1<<13|1<<8);/*設置物理設備的狀態*/   status = MIIRead(0x1, 0x0);/*讀取物理設備的狀態*/   /*配置MAC地址*/   GetMyMacAddr():   /*關閉收發中斷*/   Disable_Int(nMAC_RX_INT);   Disable_Int(nMAC_TX_INT);   Disable_Int(nBDMA_RX_INT);   Disable_Int(nBDMA_TX_INT);   /*設置MAC發送中斷和BDMA接收中斷向量*/   SetInterrupt(nMAC_TX_INT, MAC_Tx_isr);   SetInterrupt(nBDMA_RX_INT, BDMA_Rx_isr);   /*初始化MAC、BDMA控制器*/   BDMARXCON = BRxRS; /*設置BDMA接收控制寄存器*/   BDMATXCON = BTxRS; /*設置BDMA發送控制寄存器*/   MACCON = Reset; /*復位MAC控制寄存器*/   BDMARXLSZ = MaxRxFrameSize+40; /*接收幀的最大尺寸*/   MACON = gMacCon; /*設置為全雙工方式*/   /*配置以太網的收發緩沖*/   TxFDInitialize();   RxFDInitialize();   /*使能BDMA接收中斷和MAC發送中斷*/   Enable_Int(nBDMA_RX_INT);   Enable_Int(nMAC_TX_INT);   3.2通信協議實現   本文采用結構類型定義數據結構bootphdr、Udphdr、ip和arphdr,分別用來記錄BOOTP、UDP、IP和ARP協議數據報報頭的各種信息。   3.2.1配置目標機IP地址   目標機首先向主機發送BOOTP請求,主機運行DHCP服務為目標機分配IP地址,向目標機發送BOOTP應答包,目標機收到應答包后,按照協議格式獲取主機和本機的IP地址以及其它相關信息。   ①生成BOOTP請求。初始化bootphdr中各個結構體成員的值,客戶IP地址和主機IP地址分別設為0.0.0.0和255.255.255.255,在系統進行引導時0.0.0.0是一個有效的IP地址,目標機在不知道目的主機的IP地址時可以使用廣播地址255.255.255.255,以廣播的方式發送BOOTP請求。MAC地址已在初始化時獲得,并存放在全局變量MyMacSrcAddr中,其它成員變量可以按照協議的格式設置即可。   ②發送BOOTP請求。BOOTP請求需封裝在UDP數據報中發送,BOOTP的服務器端口和客戶端口分別使用知名端口67和68;UDP校驗和通過調用函數udpChksum()計算獲取。IP報頭各成員按照IP數據報格式設置,源IP地址與目的IP地址分別是0.0.0.0和255.255.255.255,IP校驗和通過調用函數ipChksum()計算獲得。本機MAC地址作為源MAC地址,廣播形式的MAC地址0xffffffff作為目的MAC地址,封裝成以太數據幀,調用寫函數DrvEthWrite()發送。調用發送中斷處理函數MAC_Tx_isr(),更新當前幀結構描述指針并復位MAC控制器。   ③接收BOOTP應答包,獲取主機和本機的IP地址。采用中斷方式接收BOOTP應答包。中斷處理函數BDMA_Rx_isr()將接收到的包存放在接收幀描述符RxFDBaseAddr中,提取有效數據放入BOOTP接收緩沖區BOOTP_REC_BUF中,并且復位相應的BDMA控制寄存器道和中斷控制位。   ③按照協議的數據報格式從BOOTP_REC_BUF中提取數據,記錄本機和主機的IP地址。   3.2.2數據收發   數據的收發主要是涉及IP、UDP和ARP三個重要的協議,在具體實現中根據嵌入式系統的特性有針對性地做了裁減,既保證了網口的正常工作,又節省了嵌入式系統的資源。   ①有以太網數據包到來,首先進行判斷。如果是ARP請求則發送一個ARP應答;如果是ARP應答,則記錄發送方的IP地址和以太網地址;如果是IP數據包,則開始接收數據。   ②接收數據:IP數據包到來,中斷處理函數將數據包放在接收幀描述符RxFDBaseAddr中,提取IP包放入接收緩沖區IP_REC_BUF。從IP_REC_BUF中提取有效數據交給調試器進行處理。   ③發送數據:發送的數據封裝在UDP數據報中,目標機IP地址和主機IP地址分別記錄在全局變量MyIpAddr和HostIpAddr中,按照UDP和IP協議的數據報格式為數據加上UDP報頭和IP報頭。以本機MAC地址作為源物理地址,以ARP應答中獲得的主機物理地址作為目的地址,封裝成以太數據幀,調用寫函數DrvEthWrite()發送,中斷處理函數MAC_Tx_isr()進行發送中斷處理。   部分主要通信程序如下:   SendBootpRequest(bootp_id);/*發送BOOTP請求,bootp_id是該請求隨機分配的標識號*/   /*等待BOOTP應答包*/   /*BOOTP應答包到來,從接收緩沖BOOTP_REC_BUF提取數據*/   memcpy(MyIpAddr,bhdr->your_ip,4); /*提取目標板的IP地址放在全局變量MyIpAddr中*/   memcpy(HostIpAddr,bhdr->server_ip,4); /*提取主機IP地址放在全局變量HostIpAddr中*/   /*檢查到來的包*/   if(pro_type==ETHERTYPE_IP) IpProcess(IP_REC_BUF);/*處理到來的IP包*/   if(pro_type==ETHERTYPE_ARP) ArpProcess(IP_REC_BUF,42);/*處理到來的ARP包*/ 4.結語   用C語言實現的程序代碼已調試通過,并成功應用于嵌入式調試器中。該功能模塊針對具體的開發板所設計的網口驅動和協議棧,裁減了冗余的功能部分,既能滿足嵌入式系統對資源占用的要求,又能保證數據準確、無丟失傳輸。測試證明對于批量數據的傳輸,網口的速度遠遠優于串口,有效地實現了主機與目標機之間的調試通信,具有一定的實際意義。   本文作者創新點:設計并實現了嵌入式調試器的以太網接口通信方式,針對具體的開發板對網口驅動和協議棧做了裁減,既能滿足嵌入式系統的資源占用要求,又能保證數據高效傳輸。 參考文獻:   [1]喬容,彭思鵬,柏桂枝.嵌入式軟件源碼級交叉調試器的設計與實現.艦船電子工程.2004,24(3):56-59.   [2]龐繼勇,李維英,王竟.網絡通信處理器S3C4510B的網口驅動設計.單片機與嵌入式系統應用.2004,(4):26-28.   [3]胡德斌.基于ucOSⅡ操作系統的嵌入式網絡服務器的設計與實現.微計算機信息.2005,21(8-2):24-26.   [4]寇向輝,陳利學,田家林.基于S3C44BOX+ucLinux的嵌入式以太網設計與分析.2005,(35):   [5]代勇,李昌禧.基于嵌入式以太網接口的數據采集處理系統.微機發展.2005,15(5):125-127.   [6]ADAM DUNKELS.《uIP-A Free Small TCP/IP Stack》.Sweden:Swedish Institute of Computer Science,2003

標簽:

點贊

分享到:

上一篇:基于DS80C410內嵌CAN總線食堂...

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.hysjfh.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

相關資訊

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業自動化與智能制造的全媒體“互聯網+”創新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業執照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號

主站蜘蛛池模板: 莱西市| 岚皋县| 伊宁市| 滨州市| 札达县| 临清市| 巫溪县| 枞阳县| 蓬安县| 会昌县| 丰台区| 达孜县| 龙川县| 岳普湖县| 宜都市| 阳泉市| 福鼎市| 小金县| 会同县| 色达县| 格尔木市| 西乡县| 九江县| 宜黄县| 惠安县| 定州市| 祁东县| 台中市| 共和县| 新津县| 临桂县| 哈巴河县| 罗田县| 丰顺县| 禹州市| 衢州市| 安庆市| 攀枝花市| 乡城县| 济源市| 秭归县|