當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]基于ARM和Linux交叉開(kāi)發(fā)環(huán)境的搭建

摘要:交叉開(kāi)發(fā)環(huán)境是嵌入式Linux開(kāi)發(fā)的基礎(chǔ).后續(xù)的開(kāi)發(fā)過(guò)程幾乎都是基于此環(huán)境的。而ARM作為一種高性能、低成本的嵌入式RISC微處理器。已成為應(yīng)用最廣泛的嵌入式處理器。本文內(nèi)容包括基于32位ARM920T核“GEC2410”開(kāi)發(fā)板的硬件結(jié)構(gòu)和嵌入式Linux交叉開(kāi)發(fā)環(huán)境的概念和配置.開(kāi)發(fā)工具的使用以及交叉調(diào)試器制作的方法。利用虛擬機(jī)在Windows操作系統(tǒng)下,為“GEC2410”開(kāi)發(fā)板搭建了一個(gè)嵌入式Linux的運(yùn)行平臺(tái)。

關(guān)鍵詞:交叉開(kāi)發(fā)環(huán)境;ARM;Linux

0 引言

目前,隨著ARM技術(shù)的日益成熟和廣泛應(yīng)用,基于ARM核的微處理器已經(jīng)成為嵌入式市場(chǎng)的主流。而建立面向ARM構(gòu)架的嵌入式操作系統(tǒng)也就成為當(dāng)前研究的熱點(diǎn)問(wèn)題.在眾多的嵌入式操作系統(tǒng)中,許多開(kāi)發(fā)人員都選擇Hnux,主要是因?yàn)樗窃创a公開(kāi)而且是免費(fèi)的,可以讓任何人將其修改移植到自己的目標(biāo)平臺(tái)系統(tǒng)里使用。系統(tǒng)可以通過(guò)配置內(nèi)核,動(dòng)態(tài)地加載和卸載內(nèi)核模塊機(jī)制,可以方便地在內(nèi)核中添加新的組件或卸載不再需要的內(nèi)核組件。

本文介紹了如何在Windows操作系統(tǒng)下利用Linux虛擬機(jī)、針對(duì)32位ARM920T內(nèi)核的$3C2410微處理器實(shí)現(xiàn)嵌入式LintLx應(yīng)用軟件的交叉開(kāi)發(fā)環(huán)境,提出了一個(gè)比較完整的解決方案,并成功地為GEC2410開(kāi)發(fā)板搭建了一個(gè)嵌入式應(yīng)用軟件開(kāi)發(fā)環(huán)境。

1 GECMlO開(kāi)發(fā)板硬件構(gòu)成

ARM處理器是一種支持16/32位雙指令集的高性能、低成本、低功耗的R ISC微處理器,目前已經(jīng)占領(lǐng)了75%以I:的32位RISC嵌入式產(chǎn)品f仃場(chǎng)。本文所選用的ARM920T微處理器屬于中端產(chǎn)品,應(yīng)用也十分廣泛。$3C2410是32位低功耗RISC宏單元,其工作頻率為203 MHz,同時(shí)支持Thumbl6位精。簡(jiǎn)指令集,從而能以較小的存儲(chǔ)空間需求,獲得32位的系統(tǒng)性能。64M字節(jié)的SDRAM,由兩片K4S561632組成,工作在32位模式下;64M字節(jié)NAND Flash,采用的是K9F1208,可以兼容16M,32M或128M字節(jié);10M以太網(wǎng)接口,采用的是CS8900Q3,帶傳輸和連接指示燈;2路UART串行口,波特率可高達(dá)115200bps,并具有RS232電乎轉(zhuǎn)換電路Embedded·ICE(20腳標(biāo)準(zhǔn)JTAG)接口和并口式j(luò)TAG接口,支持ADS,SDT軟件的卜.載和調(diào)試以及FLASH的燒寫(xiě)。

2 嵌入式Linux開(kāi)發(fā)環(huán)境的搭建及開(kāi)發(fā)工具的使用

2.1宿主機(jī)——目標(biāo)機(jī)模式

進(jìn)行項(xiàng)目開(kāi)發(fā)前,先要做的是搭建一套基于Linux操作系統(tǒng)的應(yīng)用開(kāi)發(fā)環(huán)境,一般由目標(biāo)板(GEC2410開(kāi)發(fā)板)和宿主機(jī)(LiUUX虛擬機(jī))所構(gòu)成。如圖1所示。嵌入式系統(tǒng)通常是一個(gè)資源受限的系統(tǒng),因此直接在嵌入式系統(tǒng)的硬件平臺(tái)上編寫(xiě)軟件比較困難,有時(shí)候甚拿是不可能的.目前一般采用的解決辦法是首先在通用計(jì)算機(jī)上編寫(xiě)程序,然后通過(guò)交叉編譯生成目標(biāo)平臺(tái)七可以運(yùn)行的二進(jìn)制代碼格式,最后再下載到目標(biāo)平臺(tái)上的特定位置.卜運(yùn)行.用來(lái)編譯這種程序的編譯器就叫交叉編譯器。為了不跟本地編譯器混淆,交叉編澤器的名字一般都有前綴。例如:arm.1inux—gcc。交叉開(kāi)發(fā)環(huán)境是指編譯、鏈接和調(diào)試嵌入式應(yīng)用軟件的環(huán)境,它與運(yùn)行嵌入式應(yīng)用軟件的環(huán)境有所不同,通常采用宿主機(jī)/目標(biāo)機(jī)模式。

2.2 Linux服務(wù)器交叉編譯環(huán)境的建立

Linux服務(wù)器是嵌入式Linux內(nèi)核編譯、應(yīng)用程序開(kāi)發(fā)、編譯等的公共平臺(tái),在一個(gè)嵌入式系統(tǒng)的開(kāi)發(fā)過(guò)程中,有許多工作需要通過(guò)它來(lái)完成。交叉編譯工具用于編譯在目標(biāo)系統(tǒng)上運(yùn)行的嵌入式Linux內(nèi)核及應(yīng)用程序,包括編譯器、連接器、調(diào)試器以及代碼轉(zhuǎn)換J二具等實(shí)用程序,一般以瓜縮軟件包的方式提供給我們,稱(chēng)為開(kāi)發(fā)工具鏈(Toolchain).目前基于ARM架構(gòu)的交叉編澤工具鏈為:allll-liuux.gcc-2.95.3。

1)GNU交叉工具鏈的下載

ARM官方網(wǎng)站F載刪.a(chǎn)rm.tinux.org.a(chǎn)k,可以從該站點(diǎn)下載2.95.3工具鏈:

ftp://tip.a(chǎn)rm.Iinux.org.uk/pub/armlinux/toolehain/cross-2.95.3.tar.bz2

2)cross-2.95.3.tar.bz2包的安裝步驟

a.#mkdir/mr/local/arm;

b.#cp CROSS一2.95.3.tar.bz2/usr/local/ann;

C.#tar jxvf crog$一2.95.3.tar.bz2;

d.添加環(huán)境變量:在文{牛/ete/bashrc文件最后添加:

export PATH=/usr/local/arm/2.95.3/bin:$PATH:

e.工具鏈安裝完成。

2.3配置NFS服務(wù)的步驟

NFS服務(wù)就是將宿主機(jī)的一個(gè)目錄通過(guò)網(wǎng)絡(luò)可以被掛載到其他計(jì)算機(jī)上。并且作為其他計(jì)算機(jī)的一個(gè)目錄,其目的就是讓不同的機(jī)器、不同的操作系統(tǒng)之間可以彼此共享文件。

NFS的使用分服務(wù)器端和客戶(hù)端,其中服務(wù)器端提供要共享的文件,客戶(hù)端通過(guò)掛載“mount”這一動(dòng)作實(shí)現(xiàn)對(duì)共享文件的訪(fǎng)問(wèn)操作。下面主要介紹GEC24 10開(kāi)發(fā)板的Linux系統(tǒng)與虛擬機(jī)的LintLx通過(guò)NFS實(shí)現(xiàn)文件共享的方法與步驟:

1)在虛擬機(jī)linux配置nfs服務(wù),編輯nfs配置文件/etdexports,設(shè)置共享目錄如:vi/etc/exports,添加:/root/nfs—share·(rw,sync,no—root—squash)。rW表示允許下位機(jī)讀寫(xiě)該目錄,no_root_squash允許下位機(jī)以主機(jī)root用戶(hù)身份掛載根文件系統(tǒng)。

2)在虛擬機(jī)linux啟動(dòng)NFS服務(wù):(修改配置文件后就需要蕈新啟動(dòng)施服務(wù))#/etc/init.d/nfs reSTart或者用命令:#service nfs restarto.

3)防火墻的關(guān)閉。選擇系統(tǒng)設(shè)置一>安全級(jí)別,將安全級(jí)別改為“無(wú)防火墻”。

4)用交叉網(wǎng)線(xiàn)連接PC機(jī)(虛擬機(jī))與開(kāi)發(fā)板,目的讓兩個(gè)linux處在同一個(gè)網(wǎng)絡(luò)內(nèi)。

開(kāi)發(fā)板的ip地址是:192.168.2.223,因此配置虛擬機(jī)ip為192.168.2開(kāi)頭的ip地址,如可用下列命令配置:#ifcONfigethO 192.168.2.23。

5)在開(kāi)發(fā)板linux系統(tǒng)中掛載虛擬機(jī)linux的NFS共享目錄,執(zhí)行下列命令:#mkdir/tmp/nfs#mount—t nfs一0 nolock192.168.2.23:/root/nfs—share/trap/nfs。

2.4交叉調(diào)試器的制作

2.4.1交叉調(diào)試器的結(jié)構(gòu)

程序的調(diào)試足檢杏程序正確性、可靠性、穩(wěn)定性的重要手段,也是應(yīng)用程序開(kāi)發(fā)必不可少的組成部分。嵌入式軟件開(kāi)發(fā)過(guò)程中的交叉調(diào)試與本地軟件開(kāi)發(fā)過(guò)程中的調(diào)試方式有所差別。本地軟件開(kāi)發(fā)調(diào)試器與被調(diào)試的程序往往運(yùn)行在同一臺(tái)計(jì)算機(jī)}:。而嵌入式軟件開(kāi)發(fā)過(guò)程中,調(diào)試時(shí)采用的是在宿主機(jī)和目標(biāo)機(jī)之間進(jìn)行的交叉調(diào)試。調(diào)試器運(yùn)行在宿主機(jī),但被調(diào)試的進(jìn)程卻是運(yùn)行在目標(biāo)板。調(diào)試器和被調(diào)試進(jìn)程通過(guò)串口或者網(wǎng)絡(luò)進(jìn)行通信,調(diào)試器可以控制、訪(fǎng)問(wèn)被調(diào)試進(jìn)程,讀取被調(diào)試進(jìn)程的當(dāng)前狀態(tài),并能夠改變被調(diào)試進(jìn)程的運(yùn)行狀態(tài)。

2.4.2制作交叉調(diào)試器的方法

1)解壓源碼包:tar zxf gdb一6.0.tar.gz

2)配置:cd gdb一6.0

mkdir build..a(chǎn)rm..1inux

cd build..a(chǎn)rm..1inux

../configure--target=arm·linux一一prefix=/usr/local/arm/2.95.3/

3)編譯:make

4)安裝:make install

在/usr/locaL/arm/2.95.3/bin/目錄下生成alTfl-linuxgdb工具

5)編譯生成針對(duì)f1.Eln處理器的gdbserver

a.進(jìn)入sdb源代碼包中的gdb$erver目錄

cd sdb-6.0

cd gdb/gdbserver

b.配置生成gdbserver

chmod U+X configure

CC=arnl—linux—gcc./configure一一host=arm-linux

c.Make,生成gdbserver、gdbreplay

6)通過(guò)凼,將gdbserver/gdbreplay到目標(biāo)板中

7)啟動(dòng)目標(biāo)板上的gdbserversabserver 192.168.1.88:2345 cross-teat其中192.168.1.88是目標(biāo)板的IP地址。2345是任意指定的端口,也可以是其他端口。

8)啟動(dòng)宿主機(jī)端arm.1inux-gdb調(diào)試器在宿主機(jī)的工作目錄中有對(duì)應(yīng)的程序和源文件

#arm·hnux-柚CI‘OS8一teat

(gdb)target remote 192.168.1.88:2345

連接遠(yuǎn)程gdbserver

(sab)b main

設(shè)置斷點(diǎn)

(Sdb)C運(yùn)行

3 結(jié)束語(yǔ)

本文在分析了GEC2410開(kāi)發(fā)板和Linux的特點(diǎn)的基礎(chǔ)上,介紹了嵌入式Linux開(kāi)發(fā)平臺(tái)的搭建過(guò)程,并詳細(xì)介紹了配置NFS服務(wù)和制作交叉調(diào)試器的方法和步驟。這樣就可以在此基礎(chǔ)上進(jìn)行各種驅(qū)動(dòng)程序和應(yīng)用程序的開(kāi)發(fā)。

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

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

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

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

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

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(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ì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

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

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話(huà)語(yǔ)權(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)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

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