- 相關(guān)推薦
用GNU工具開發(fā)基于ARM的嵌入式系統(tǒng)
摘要:介紹如何利用GNU的工具開發(fā)基于ARM的嵌入式系統(tǒng),以及使用編譯器、連接器和調(diào)試工具的具體方法,為廣大嵌入式系統(tǒng)開發(fā)人員提供一種低成本的開發(fā)手段。關(guān)鍵詞:ARM GNU MC928MX1 gcc gdb gdbserver
當(dāng)前,ARM公司的32位RISC處理器,以其內(nèi)核耗電少、成本低、功能強(qiáng)、特有16/32位雙指令集,已成為移動(dòng)通信、手持計(jì)算、多媒體數(shù)字消費(fèi)等嵌入式解決方案的RISC標(biāo)準(zhǔn),市場占有率超過了75 %。多家公司都推出了自己的基于ARM內(nèi)核的處理器產(chǎn)品,越來越多的開發(fā)人員開始了針對(duì)ARM平臺(tái)的開發(fā)。通常開發(fā)人員需要購買芯片廠商或第三方提供的開發(fā)板,還需要購買開發(fā)軟件,如C編譯器或者集成了實(shí)時(shí)操作系統(tǒng)的開發(fā)環(huán)境。開發(fā)板的價(jià)格從數(shù)百到上千美元,而編譯器、實(shí)時(shí)操作系統(tǒng)價(jià)格更是動(dòng)輒數(shù)千到數(shù)萬美元。這樣,在開發(fā)初期,軟硬件上的投資就需要上萬美元,對(duì)于國內(nèi)大多數(shù)開發(fā)人員來說,無疑是太貴了。
慶幸的是,GNU所倡導(dǎo)的自由軟件給開發(fā)者帶來了福音。1984 年,旨在開發(fā)一個(gè)類似 Unix 的,并且是完全免費(fèi)的完整操作系統(tǒng)和配套工具:GNU 系統(tǒng)(發(fā)音為"guh-NEW")。GNU的操作系統(tǒng)和開發(fā)工具都是免費(fèi)的,遵循GNU 通用公共許可證 (GPL)協(xié)議,任何人都可以從網(wǎng)上獲取全部的源代碼。關(guān)于GNU和公共許可證協(xié)議的詳細(xì)資料,讀者可參看GNU網(wǎng)站的中文介紹:http://www.gnu.org/home.cn.html。
除了大家熟知的Linux操作系統(tǒng)外,GNU的軟件還包括編譯器(gcc,g++)、二進(jìn)制轉(zhuǎn)換工具(objdump,objcopy)、調(diào)試工具(gdb,gdbserver,kgdb)和基于不同硬件平臺(tái)的開發(fā)庫。GNU開發(fā)工具的主要缺點(diǎn)是采用命令行方式,用戶掌握和使用比較困難,不如基于Windows系統(tǒng)的開發(fā)工具好用。但是,GNU工具的復(fù)雜性是由于它更貼近編譯器和操作系統(tǒng)的底層,并提供了更大的靈活性。一旦學(xué)習(xí)和掌握了相關(guān)工具,也就了解了系統(tǒng)設(shè)計(jì)的基礎(chǔ)知識(shí),為今后的開發(fā)工作打下基礎(chǔ)。GNU的開發(fā)工具都是免費(fèi)的,遵循GPL協(xié)議,任何人都可以從網(wǎng)上獲取。筆者參與了一個(gè)基于ARM平臺(tái)的嵌入式Linux系統(tǒng)開發(fā),采用的是摩托羅拉龍珠系列的MC928MX1。從測試代碼、引導(dǎo)程序、嵌入式Linux移植、應(yīng)用程序、圖形界面都可以用GNU工具進(jìn)行開發(fā),不需要在開發(fā)工具上做額外的投入。本文所介紹的開發(fā)方法同樣適用于其它公司的基于ARM的產(chǎn)品。
1 硬件平臺(tái)
MC928MX1(以下簡稱MX1)是摩托羅拉公司基于ARM核心的第一款MCU,主要面向高端嵌入式應(yīng)用。內(nèi)部采用ARM920T內(nèi)核,并集成了SDRAM/Flash、LCD、USB、藍(lán)牙(bluetooth)、多媒體閃存卡(MMC)、CMOS攝像頭等控制器。關(guān)于MX1的詳細(xì)資料,感興趣的讀者可以參考http://www.motorola.com.cn/semiconductors/。作為應(yīng)用開發(fā)的最小系統(tǒng)必須包括RAM(程序運(yùn)行空間)、Flash(存放目標(biāo)代碼)和串行接口(用于調(diào)試和下載程序)。MX1提供了6個(gè)片選端(CS0~CS5),內(nèi)置了SDRAM控制器,數(shù)據(jù)寬度32位。在筆者的系統(tǒng)中采用了2片8M×16位的SDRAM和2片4M×16位的同步Flash存儲(chǔ)器,分別接入數(shù)據(jù)線的低16位和高16位,如圖1所示。
圖1中SDRAM接片選端CS2,F(xiàn)lash接片選端CS3,其余為SDRAM/Flash的控制信號(hào)。最小系統(tǒng)還包括至少1個(gè)串行接口,可以采用MX1內(nèi)置的UART控制器,圖略。
2 自舉模式
目前,許多嵌入式處理器都提供了自舉模式(Bootstrap),供用戶寫入引導(dǎo)代碼。自舉模式利用了固化在芯片內(nèi)部的一段引導(dǎo)程序,當(dāng)處理器復(fù)位時(shí),如果在特定引腳上加信號(hào),則處理器將在復(fù)位后執(zhí)行固化ROM中的程序。
[1] [2] [3] [4]
【用GNU工具開發(fā)基于ARM的嵌入式系統(tǒng)】相關(guān)文章:
基于ARM的GPS定位系統(tǒng)設(shè)計(jì)04-27
基于ARM的嵌入式web服務(wù)器的設(shè)計(jì)04-29
基于AUTOSAR的汽車電子控制系統(tǒng)嵌入式軟件開發(fā)04-26
基于ARM的無人機(jī)飛行控制系統(tǒng)的實(shí)現(xiàn)04-30
基于MicroStation的工程測量系統(tǒng)開發(fā)04-28
基于嵌入式列車油量遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)04-28
基于ARM9和SIM300的汽車監(jiān)控系統(tǒng)設(shè)計(jì)04-28
基于FPGA的嵌入式系統(tǒng)FLASH接口設(shè)計(jì)與實(shí)現(xiàn)05-02