• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于ARM和Linux交叉開發(fā)環(huán)境的搭建

    基于ARM和Linux交叉開發(fā)環(huán)境的搭建

    作者: 時間:2011-12-16 來源:網(wǎng)絡(luò) 收藏

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

    本文引用地址:http://www.czjhyjcfj.com/article/149982.htm

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

    0 引言

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

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

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

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

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

    2.1宿主機——目標機模式

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

    交叉開發(fā)環(huán)境

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

    Linux服務(wù)器是嵌入式Linux內(nèi)核編譯、應(yīng)用程序開發(fā)、編譯等的公共平臺,在一個嵌入式系統(tǒng)的開發(fā)過程中,有許多工作需要通過它來完成。交叉編譯工具用于編譯在目標系統(tǒng)上運行的嵌入式Linux內(nèi)核及應(yīng)用程序,包括編譯器、連接器、調(diào)試器以及代碼轉(zhuǎn)換J二具等實用程序,一般以瓜縮軟件包的方式提供給我們,稱為開發(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,可以從該站點下載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ù)就是將宿主機的一個目錄通過網(wǎng)絡(luò)可以被掛載到其他計算機上。并且作為其他計算機的一個目錄,其目的就是讓不同的機器、不同的操作系統(tǒng)之間可以彼此共享文件。

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

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

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

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

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

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

    5)在開發(fā)板linux系統(tǒng)中掛載虛擬機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)用程序開發(fā)必不可少的組成部分。嵌入式軟件開發(fā)過程中的交叉調(diào)試與本地軟件開發(fā)過程中的調(diào)試方式有所差別。本地軟件開發(fā)調(diào)試器與被調(diào)試的程序往往運行在同一臺計算機}:。而嵌入式軟件開發(fā)過程中,調(diào)試時采用的是在宿主機和目標機之間進行的交叉調(diào)試。調(diào)試器運行在宿主機,但被調(diào)試的進程卻是運行在目標板。調(diào)試器和被調(diào)試進程通過串口或者網(wǎng)絡(luò)進行通信,調(diào)試器可以控制、訪問被調(diào)試進程,讀取被調(diào)試進程的當前狀態(tài),并能夠改變被調(diào)試進程的運行狀態(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)編譯生成針對f1.Eln處理器的gdbserver

    a.進入sdb源代碼包中的gdb$erver目錄

    cd sdb-6.0

    cd gdb/gdbserver

    b.配置生成gdbserver

    chmod U+X configure

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


    6)通過凼,將gdbserver/gdbreplay到目標板中

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

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

    #arm·hnux-柚CI'OS8一teat

    (gdb)target remote 192.168.1.88:2345

    連接遠程gdbserver

    (sab)b main

    設(shè)置斷點

    (Sdb)C運行

    3 結(jié)束語

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

    linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

    linux相關(guān)文章:linux教程




    評論


    相關(guān)推薦

    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 黄平县| 容城县| 鹤岗市| 麦盖提县| 六安市| 汉中市| 兴山县| 噶尔县| 婺源县| 鸡泽县| 沿河| 云南省| 江油市| 南岸区| 延长县| 济宁市| 获嘉县| 吉林省| 浦县| 荔波县| 习水县| 于田县| 简阳市| 越西县| 分宜县| 古丈县| 明水县| 沙田区| 双桥区| 哈巴河县| 德江县| 海城市| 富平县| 绥芬河市| 绍兴市| 建阳市| 龙川县| 瓮安县| 濮阳县| 舞钢市| 广南县|