www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]基于嵌入式調試器的網絡通信方法設計與實現(xiàn)

摘要:本文介紹了在嵌入式調試器中如何通過以太網口進行嵌入式軟件調試,實現(xiàn)了主機與開發(fā)板之間的網口通信。針對具體的嵌入式開發(fā)板S3C4510B對網口驅動和網絡協(xié)議進行了研究,裁減了網口驅動和網絡協(xié)議的冗余部分,既保證了調試器可以通過以太網進行遠程調試,又能滿足嵌入式系統(tǒng)對資源占用的要求。
關鍵詞:嵌入式開發(fā)板;網絡協(xié)議;嵌入式調試器

0.引言

    隨著嵌入式系統(tǒng)的廣泛應用,嵌入式軟件開發(fā)變得日趨重要。嵌入式軟件開發(fā)有別于桌面軟件開發(fā),其顯著特點是軟件開發(fā)的調試過程采用宿主機/目標機的模式進行,其交叉調試器分為宿主機和目標機兩部分,因此在軟件調試過程中就需要進行主機與目標機之間的通信。

    目前宿主機與目標機之間的通信方式主要有串口方式、以太網接口方式和USB接口方式三種,其中串口通信實現(xiàn)簡單,穩(wěn)定可靠,是目前廣泛使用的通信方式,但是串口通信存在著速度慢、通信距離受限等弊端,而以太網接口方式則可以克服串口方式的不足,不僅可提供穩(wěn)定可靠的數(shù)據(jù)傳輸,而且無論是傳輸速度還是傳輸距離都遠遠優(yōu)于串口方式,是一種快速高效的通信方式。目前網絡通信協(xié)議的發(fā)展已經相當成熟,Internet工程委員會IETF及其下屬的管理組IESG在RFC文擋中已經明確定義了Internet協(xié)議族的規(guī)范,該規(guī)范已經成為一種標準在Internet中廣泛應用。本文根據(jù)此規(guī)范討論了在嵌入式調試器中如何實現(xiàn)以太網接口通信,給出了一種基于嵌入式調試器的網絡通信方法。

1.硬件結構

    S3C4510B是三星公司開發(fā)的一款16/32位RISC嵌入式處理器,芯片內部集成了一個10Mbps/100Mvps以太網控制器,網卡芯片采用的是RTL8201。以太網控制器主要分為BDMA控制器和MAC子層兩部分,該控制器工作于MAC層,兼容IEEE802.3協(xié)議標準,支持半雙工或全雙工模式,采用介質獨立接口(MII)與網卡芯片通信。

2.通信協(xié)議

    在嵌入式調試器的通信中,主機向目標機發(fā)送命令,目標機接收、執(zhí)行命令并將結果返回主機,網口通信主要是面向數(shù)據(jù)和字符串傳輸?shù)?,因此在通信中主要用到IP協(xié)議、ARP協(xié)議和UDP協(xié)議。要通過網絡調試目標機,那么目標機IP地址的設置是必不可少的,因此目標機還需要實現(xiàn)BOOTP協(xié)議,通過BOOTP協(xié)議向主機申請本機IP地址,完成IP地址的配置。

    BOOTP協(xié)議即引導程序協(xié)議,是一種基于UDP/IP的協(xié)議,主要用于客戶機從服務器獲得本機IP地址、服務器IP地址及其它配置信息,如本地子網掩碼等。UDP協(xié)議即用戶數(shù)據(jù)報協(xié)議,是一個簡單的面向數(shù)據(jù)報的傳輸協(xié)議,與TCP不同,UDP不提供對IP協(xié)議的可靠機制、流控制以及錯誤恢復功能,所以實現(xiàn)起來比較簡單,且不影響傳輸速度,適用于嵌入式系統(tǒng)。IP協(xié)議即網際協(xié)議,是網絡上實現(xiàn)數(shù)據(jù)傳輸?shù)幕A,所有的TCP、UDP數(shù)據(jù)都以IP數(shù)據(jù)報格式傳輸,該協(xié)議提供了一種高效不可靠的無連接傳輸方式。ARP協(xié)議即地址解析協(xié)議,為IP地址與對應的物理地址提供映射。

3. 網絡通信程序實現(xiàn)

    具體的程序實現(xiàn)主要包括網口驅動和通信協(xié)議兩部分,網口驅動即初始化S3C4510B的硬件,主要是以太網控制器和收發(fā)緩沖的設置;網絡協(xié)議的實現(xiàn)主要是完成數(shù)據(jù)的收發(fā),保證目標板接入以太網。程序實現(xiàn)流程如圖1所示。

圖1 程序實現(xiàn)流程圖

3.1網口驅動實現(xiàn)

    網口驅動的實現(xiàn)主要是針對具體的開發(fā)板所做的硬件初始化,配置硬件工作環(huán)境。

3.1.1管理網卡芯片

    在4510開發(fā)板中由MAC層的狀態(tài)管理控制機通過MII接口來讀取和設置網卡的工作狀態(tài),物理設備地址及其內部寄存器地址存放在站管理控制與地址寄存器STACON中,而要設置或讀取的數(shù)據(jù)則放在站管理數(shù)據(jù)寄存器STADATA中。

    在實際應用中,網卡的MAC地址可以從ICC EEPROM中讀取,也可自行設定,只要保證在同一局域網內該地址的唯一性即可。

3.1.2初始化以太網控制器

①關閉MAC、BDMA收發(fā)中斷,保證初始化程序的順利進行。

②設置MAC、BDMA中斷向量表。S3C4510B中共有21個中斷源,MAC和BDMA發(fā)送/接收中斷源占用16~19四個中斷號。

③設置MAC、BDMA控制器的初始值,即初始化BDMA接收/發(fā)送控制寄存器和MAC接收/控制寄存器,具體收發(fā)細節(jié)。

④配置以太網的收發(fā)緩沖區(qū)。發(fā)送幀和接收幀的幀描述符起始地址分別存放在寄存器BDMATXPTR和BDMARXPTR中,在BDMA的操作過程中它們會更新為下一個幀地址。其中,幀描述符定義為結構類型,結構體成員描述了幀信息。

⑤使能BDMA接收中斷和MAC發(fā)送中斷。將中斷屏蔽寄存器INTMSK中的相應位清零,響應BDMA和MAC中斷請求。

3.1.3收發(fā)以太數(shù)據(jù)幀

①發(fā)送以太數(shù)據(jù)幀:調用發(fā)送函數(shù)DrvEthWrite(),從BDMATXPTR中獲得發(fā)送幀地址,為發(fā)送幀緩沖賦值,將數(shù)據(jù)幀的控制權交給BDMA控制器,以太網控制器自動為發(fā)送數(shù)據(jù)加上同步位、分割位、校驗位以及填充字段并將以太幀發(fā)送出去。

②接收以太數(shù)據(jù)幀:接收時產生BDMA接收中斷,中斷處理函數(shù)BDMA_Rx_isr()完成數(shù)據(jù)的接收,并做相關的處理,如清楚中斷標志位、檢查數(shù)據(jù)幀的所有權、獲取下一個未處理的幀結構指針等。

部分主要程序如下:

/*配置物理設備*/

MIIWrite(0x0, 0x2, 1<<13|1<<8);/*設置物理設備的狀態(tài)*/

status = MIIRead(0x1, 0x0);/*讀取物理設備的狀態(tài)*/

/*配置MAC地址*/

GetMyMacAddr():

/*關閉收發(fā)中斷*/

Disable_Int(nMAC_RX_INT);

Disable_Int(nMAC_TX_INT);

Disable_Int(nBDMA_RX_INT);

Disable_Int(nBDMA_TX_INT);

/*設置MAC發(fā)送中斷和BDMA接收中斷向量*/

SetInterrupt(nMAC_TX_INT, MAC_Tx_isr);

SetInterrupt(nBDMA_RX_INT, BDMA_Rx_isr);

/*初始化MAC、BDMA控制器*/

BDMARXCON = BRxRS; /*設置BDMA接收控制寄存器*/

BDMATXCON = BTxRS; /*設置BDMA發(fā)送控制寄存器*/

MACCON = Reset; /*復位MAC控制寄存器*/

BDMARXLSZ = MaxRxFrameSize+40; /*接收幀的最大尺寸*/

MACON = gMacCon; /*設置為全雙工方式*/

/*配置以太網的收發(fā)緩沖*/

TxFDInitialize();

RxFDInitialize();

/*使能BDMA接收中斷和MAC發(fā)送中斷*/

Enable_Int(nBDMA_RX_INT);

Enable_Int(nMAC_TX_INT);

3.2通信協(xié)議實現(xiàn)

    本文采用結構類型定義數(shù)據(jù)結構bootphdr、Udphdr、ip和arphdr,分別用來記錄BOOTP、UDP、IP和ARP協(xié)議數(shù)據(jù)報報頭的各種信息。

3.2.1配置目標機IP地址

    目標機首先向主機發(fā)送BOOTP請求,主機運行DHCP服務為目標機分配IP地址,向目標機發(fā)送BOOTP應答包,目標機收到應答包后,按照協(xié)議格式獲取主機和本機的IP地址以及其它相關信息。

①生成BOOTP請求。初始化bootphdr中各個結構體成員的值,客戶IP地址和主機IP地址分別設為0.0.0.0和255.255.255.255,在系統(tǒng)進行引導時0.0.0.0是一個有效的IP地址,目標機在不知道目的主機的IP地址時可以使用廣播地址255.255.255.255,以廣播的方式發(fā)送BOOTP請求。MAC地址已在初始化時獲得,并存放在全局變量MyMacSrcAddr中,其它成員變量可以按照協(xié)議的格式設置即可。

②發(fā)送BOOTP請求。BOOTP請求需封裝在UDP數(shù)據(jù)報中發(fā)送,BOOTP的服務器端口和客戶端口分別使用知名端口67和68;UDP校驗和通過調用函數(shù)udpChksum()計算獲取。IP報頭各成員按照IP數(shù)據(jù)報格式設置,源IP地址與目的IP地址分別是0.0.0.0和255.255.255.255,IP校驗和通過調用函數(shù)ipChksum()計算獲得。本機MAC地址作為源MAC地址,廣播形式的MAC地址0xffffffff作為目的MAC地址,封裝成以太數(shù)據(jù)幀,調用寫函數(shù)DrvEthWrite()發(fā)送。調用發(fā)送中斷處理函數(shù)MAC_Tx_isr(),更新當前幀結構描述指針并復位MAC控制器。

③接收BOOTP應答包,獲取主機和本機的IP地址。采用中斷方式接收BOOTP應答包。中斷處理函數(shù)BDMA_Rx_isr()將接收到的包存放在接收幀描述符RxFDBaseAddr中,提取有效數(shù)據(jù)放入BOOTP接收緩沖區(qū)BOOTP_REC_BUF中,并且復位相應的BDMA控制寄存器道和中斷控制位。

③按照協(xié)議的數(shù)據(jù)報格式從BOOTP_REC_BUF中提取數(shù)據(jù),記錄本機和主機的IP地址。

3.2.2數(shù)據(jù)收發(fā)

    數(shù)據(jù)的收發(fā)主要是涉及IP、UDP和ARP三個重要的協(xié)議,在具體實現(xiàn)中根據(jù)嵌入式系統(tǒng)的特性有針對性地做了裁減,既保證了網口的正常工作,又節(jié)省了嵌入式系統(tǒng)的資源。

①有以太網數(shù)據(jù)包到來,首先進行判斷。如果是ARP請求則發(fā)送一個ARP應答;如果是ARP應答,則記錄發(fā)送方的IP地址和以太網地址;如果是IP數(shù)據(jù)包,則開始接收數(shù)據(jù)。

②接收數(shù)據(jù):IP數(shù)據(jù)包到來,中斷處理函數(shù)將數(shù)據(jù)包放在接收幀描述符RxFDBaseAddr中,提取IP包放入接收緩沖區(qū)IP_REC_BUF。從IP_REC_BUF中提取有效數(shù)據(jù)交給調試器進行處理。

③發(fā)送數(shù)據(jù):發(fā)送的數(shù)據(jù)封裝在UDP數(shù)據(jù)報中,目標機IP地址和主機IP地址分別記錄在全局變量MyIpAddr和HostIpAddr中,按照UDP和IP協(xié)議的數(shù)據(jù)報格式為數(shù)據(jù)加上UDP報頭和IP報頭。以本機MAC地址作為源物理地址,以ARP應答中獲得的主機物理地址作為目的地址,封裝成以太數(shù)據(jù)幀,調用寫函數(shù)DrvEthWrite()發(fā)送,中斷處理函數(shù)MAC_Tx_isr()進行發(fā)送中斷處理。

部分主要通信程序如下:

SendBootpRequest(bootp_id);/*發(fā)送BOOTP請求,bootp_id是該請求隨機分配的標識號*/

/*等待BOOTP應答包*/

/*BOOTP應答包到來,從接收緩沖BOOTP_REC_BUF提取數(shù)據(jù)*/

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語言實現(xiàn)的程序代碼已調試通過,并成功應用于嵌入式調試器中。該功能模塊針對具體的開發(fā)板所設計的網口驅動和協(xié)議棧,裁減了冗余的功能部分,既能滿足嵌入式系統(tǒng)對資源占用的要求,又能保證數(shù)據(jù)準確、無丟失傳輸。測試證明對于批量數(shù)據(jù)的傳輸,網口的速度遠遠優(yōu)于串口,有效地實現(xiàn)了主機與目標機之間的調試通信,具有一定的實際意義。

    本文作者創(chuàng)新點:設計并實現(xiàn)了嵌入式調試器的以太網接口通信方式,針對具體的開發(fā)板對網口驅動和協(xié)議棧做了裁減,既能滿足嵌入式系統(tǒng)的資源占用要求,又能保證數(shù)據(jù)高效傳輸。

參考文獻:

[1]喬容,彭思鵬,柏桂枝.嵌入式軟件源碼級交叉調試器的設計與實現(xiàn).艦船電子工程.2004,24(3):56-59.
[2]龐繼勇,李維英,王竟.網絡通信處理器S3C4510B的網口驅動設計.單片機與嵌入式系統(tǒng)應用.2004,(4):26-28.
[3]胡德斌.基于ucOSⅡ操作系統(tǒng)的嵌入式網絡服務器的設計與實現(xiàn).微計算機信息.2005,21(8-2):24-26.
[4]寇向輝,陳利學,田家林.基于S3C44BOX+ucLinux的嵌入式以太網設計與分析.2005,(35):
[5]代勇,李昌禧.基于嵌入式以太網接口的數(shù)據(jù)采集處理系統(tǒng).微機發(fā)展.2005,15(5):125-127.
[6]ADAM DUNKELS.《uIP-A Free Small TCP/IP Stack》.Sweden:Swedish Institute of Computer Science,2003

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據(jù)LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉