當(dāng)前位置:首頁(yè) > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]本文介紹了在嵌入式調(diào)試器中如何通過以太網(wǎng)口進(jìn)行嵌入式軟件調(diào)試,實(shí)現(xiàn)了主機(jī)與開發(fā)板之間的網(wǎng)口通信。

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

0.引言

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

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

1.硬件結(jié)構(gòu)

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

2.通信協(xié)議

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

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

3. 網(wǎng)絡(luò)通信程序?qū)崿F(xiàn)

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

圖1 程序?qū)崿F(xiàn)流程圖

3.1網(wǎng)口驅(qū)動(dòng)實(shí)現(xiàn)

    網(wǎng)口驅(qū)動(dòng)的實(shí)現(xiàn)主要是針對(duì)具體的開發(fā)板所做的硬件初始化,配置硬件工作環(huán)境。

3.1.1管理網(wǎng)卡芯片

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

    在實(shí)際應(yīng)用中,網(wǎng)卡的MAC地址可以從ICC EEPROM中讀取,也可自行設(shè)定,只要保證在同一局域網(wǎng)內(nèi)該地址的唯一性即可。

3.1.2初始化以太網(wǎng)控制器

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

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

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

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

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

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

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

②接收以太數(shù)據(jù)幀:接收時(shí)產(chǎn)生BDMA接收中斷,中斷處理函數(shù)BDMA_Rx_isr()完成數(shù)據(jù)的接收,并做相關(guān)的處理,如清楚中斷標(biāo)志位、檢查數(shù)據(jù)幀的所有權(quán)、獲取下一個(gè)未處理的幀結(jié)構(gòu)指針等。

部分主要程序如下:

/*配置物理設(shè)備*/

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

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

/*配置MAC地址*/

GetMyMacAddr():

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

Disable_Int(nMAC_RX_INT);

Disable_Int(nMAC_TX_INT);

Disable_Int(nBDMA_RX_INT);

Disable_Int(nBDMA_TX_INT);

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

SetInterrupt(nMAC_TX_INT, MAC_Tx_isr);

SetInterrupt(nBDMA_RX_INT, BDMA_Rx_isr);

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

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

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

MACCON = Reset; /*復(fù)位MAC控制寄存器*/

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

MACON = gMacCon; /*設(shè)置為全雙工方式*/

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

TxFDInitialize();

RxFDInitialize();

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

Enable_Int(nBDMA_RX_INT);

Enable_Int(nMAC_TX_INT);

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

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

3.2.1配置目標(biāo)機(jī)IP地址

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

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

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

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

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

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

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

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

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

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

部分主要通信程序如下:

SendBootpRequest(bootp_id);/*發(fā)送BOOTP請(qǐng)求,bootp_id是該請(qǐng)求隨機(jī)分配的標(biāo)識(shí)號(hào)*/

/*等待BOOTP應(yīng)答包*/

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

memcpy(MyIpAddr,bhdr->your_ip,4); /*提取目標(biāo)板的IP地址放在全局變量MyIpAddr中*/

memcpy(HostIpAddr,bhdr->server_ip,4); /*提取主機(jī)IP地址放在全局變量HostIpAddr中*/

/*檢查到來的包*/

if(pro_type==ETHERTYPE_IP) IpProcess(IP_REC_BUF);/*處理到來的IP包*/

if(pro_type==ETHERTYPE_ARP) ArpProcess(IP_REC_BUF,42);/*處理到來的ARP包*/

4.結(jié)語

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

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

參考文獻(xiàn):

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

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

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉