Linux開發(fā)環(huán)境的建立步驟
傳統(tǒng)的嵌入式開發(fā)環(huán)境需要單片機(jī)的仿真器,包括C語言、匯編語言、調(diào)試工具等的集成開發(fā)環(huán)境IDE、實(shí)時(shí)操作系統(tǒng)等。
本文引用地址:http://m.butianyuan.cn/article/150550.htm由于Flash技術(shù)的發(fā)展,仿真器已可以省去。隨著BDM調(diào)試工具的標(biāo)準(zhǔn)化,BDM調(diào)試工具會(huì)變得越來越簡(jiǎn)單、越來越通用。
軟件方面,Linux下的自由軟件GNU gcc可以完成幾乎所有知名CPU以及DSP的交叉C編譯和調(diào)試,故IDE可以省去。
操作系統(tǒng)方面,uClinux、RTLinux、μC/OS等源碼開放的、免費(fèi)的嵌入式操作系統(tǒng)也都性能穩(wěn)定可靠。
因此,全部使用自由軟件開發(fā)嵌入式應(yīng)用無疑是一種不錯(cuò)的選擇。我們?cè)?2位MCU ColdFire上實(shí)現(xiàn)了上述全部開發(fā)過程。這一過程原則上也適合其它幾乎所有的32位嵌入式應(yīng)用系統(tǒng)的開發(fā)。
1 提倡使用自由軟件開發(fā)嵌入式系統(tǒng)
自由軟件有強(qiáng)大的網(wǎng)上技術(shù)支持是公認(rèn)的,不斷升級(jí)的新版本的推出表明了自由軟件強(qiáng)大的生命力。然而,使用自由軟件有一定的難度,首先要熟悉Linux的使用,學(xué)會(huì)看Linux下的幫助信息。然后是學(xué)會(huì)遇到問題如何解決。向高手請(qǐng)教是解決問題的辦法之一。在清華大學(xué),校園網(wǎng)中的BBS是研究生交流的極好方式。還有一個(gè)方法是在網(wǎng)上搜索,因?yàn)槟龅降膯栴}其他人以前或許也遇到過,解決辦法可能網(wǎng)上就有。再有一個(gè)辦法就是直接給作者發(fā)電子郵件。自由軟件有源碼、大多都有作者的Email 地址。我們體會(huì)使用Linux下的GNU gcc 等軟件的難點(diǎn)主要在使用環(huán)境的建立上,一旦使用環(huán)境建立起來了,僅僅是使用并不難。在國(guó)外,這部分工作有專門的系統(tǒng)管理員為你做好,而國(guó)內(nèi)這部分工作往往要自己做,故增加了Linux系統(tǒng)的使用難度。以GNU gcc 為例,根據(jù)我們的研究生的經(jīng)驗(yàn),建立并熟悉使用的過程大約需要2個(gè)月的時(shí)間。而熟悉一個(gè)買來的商業(yè)軟件也需要2周乃至1個(gè)月的時(shí)間。也就是說,買商業(yè)軟件可以節(jié)省1個(gè)月的時(shí)間。
2 Linux開發(fā)環(huán)境的建立
一個(gè)人用Linux開發(fā)嵌入式應(yīng)用,可以在自己的PC機(jī)上裝一套Linux,例如,Red Hat Linux??梢允褂肔inux中的X windows(xterm)開若干個(gè)窗口用于編譯、下載、調(diào)試等;可以使用Linux中的emacs作文本編譯。Windows 中有的軟件在Linux 中幾乎都有。但由于多數(shù)人對(duì)Linux環(huán)境和Linux中的應(yīng)用程序不熟悉,寧愿用PC上基于Windows的操作系統(tǒng),此時(shí)可以在Windows環(huán)境下裝上Cygwin軟件。GNU中的Cygwin是在Windows下運(yùn)行Linux的自由軟件。但我們發(fā)現(xiàn),Cygwin的兼容性似乎不太好,在有的PC機(jī)上能裝得上,有的PC機(jī)上裝不上。Cygwin的安裝過程要兩三個(gè)小時(shí),有時(shí)裝到一半出現(xiàn)錯(cuò)誤很不好處理。據(jù)說VMWare的Windows版本也可以在Windows環(huán)境下開出Linux的窗口,但VMWare不是自由軟件。
我們采用的辦法是用1臺(tái)PC機(jī)運(yùn)行Linux作為服務(wù)器。開發(fā)小組中每個(gè)成員都可以通過局域網(wǎng)用Telnet登錄到這臺(tái)Linux服務(wù)器上去,被開發(fā)的目標(biāo)板也掛在網(wǎng)上。在服務(wù)器的Linux環(huán)境下,用GNU gcc編譯生成目標(biāo)代碼,再用FTP傳回到自己的PC機(jī)上,然后通過串行口或網(wǎng)絡(luò)下載到目標(biāo)機(jī)上。BDM工具主要用于硬件調(diào)試。因?yàn)锽DM工具的支持軟件也是Linux下的自由軟件,故BDM工具只能接在Linux服務(wù)器的并口上。硬件調(diào)試完成后,可以把Debug程序?qū)懭隖lash,然后就不需要BDM工具了。
檢驗(yàn)開發(fā)環(huán)境是否建立好了得有1塊目標(biāo)板。在開發(fā)環(huán)境建立起來之前,冒然設(shè)計(jì)自己的硬件,難度較大。可以用商家提供的評(píng)估板作為目標(biāo)板先把開發(fā)環(huán)境建立起來??梢酝ㄟ^用GNU gcc 編譯uClinux 然后下載到目標(biāo)板上運(yùn)行的辦法來熟悉Linux下 GNU gcc的開發(fā)環(huán)境,檢驗(yàn)開發(fā)環(huán)境是否已建立好。如果是購(gòu)買第3方的硬件,則要特別小心。有些惡劣廠商的產(chǎn)品的確可以運(yùn)行uClinux,但其是在軟件或硬件中做了些陷阱,使用戶只能用他的硬件。
3 GNU gcc交叉編譯器
運(yùn)行于Linux操作系統(tǒng)下的自由軟件GNU gcc編譯器,不僅可以編譯Linux操作系統(tǒng)下運(yùn)行的應(yīng)用程序、編譯Linux本身,還可以作交叉編譯,編譯運(yùn)行于其它CPU上的程序??梢宰鹘徊婢幾g的CPU(或DSP)涵蓋了幾乎所有知名廠商的產(chǎn)品。用于嵌入式應(yīng)用的、眾所周知的CPU包括:Intel的i386、Intel960、AMD29K、ARM、M32、MIPS、M68K、ColdFare、PowerPC、68HC11/12、TI的TMS32等等。詳細(xì)列表可查看http://gcc.gnu.org/reading網(wǎng)站。
GNU gcc編譯器是一套完整的交叉C編譯器,包括:
◇ C交叉編譯器 gcc;
◇ 交叉匯編工具 as;
◇ 反匯編工具 objdump;
◇ 連接工具 Ld;
◇ 調(diào)試工具 gbd。
可以用批處理文件 makefile 將上述工具組合成方便的命令行形式。makefile 是用bash語言寫的。bash語言是很像BASIC語言的一種命令解釋語言,范例可以從網(wǎng)上獲得。
4 嵌入式操作系統(tǒng)
嵌入式應(yīng)用中的操作系統(tǒng)多為實(shí)時(shí)操作系統(tǒng)。μC /OS是一個(gè)免費(fèi)的小實(shí)時(shí)操作系統(tǒng)內(nèi)核,內(nèi)核代碼僅幾K~十幾K。已有10年的應(yīng)用史,并已經(jīng)被移植到了幾乎所有的嵌入式應(yīng)用類CPU上。它的實(shí)時(shí)性、穩(wěn)定性已得到世人的公認(rèn)。由于μC/OS的商業(yè)價(jià)值,后來的μC /OS-II不再是免費(fèi)的,但仍是一個(gè)低價(jià)位的操作系統(tǒng)。帶有文件系統(tǒng)、功能更強(qiáng)的嵌入式操作系統(tǒng)有uCLinux,它的內(nèi)核需要至少512 KB存儲(chǔ)空間。面向各種不同的商業(yè)硬件平臺(tái)的、各種版本的uClinux的源碼在網(wǎng)上都可以找到。我們是從www. uclinux.org上下載uClinux源代碼的。用GNU gcc編譯,通過編譯運(yùn)行uClinux熟悉了這一套開發(fā)環(huán)境。uClinux是一套很優(yōu)秀的自由軟件,很多掌上電腦都是基于uClinux開發(fā)的,今后PC機(jī)上有什么軟件,掌上電腦(例如以ARM為CPU的掌上電腦)上就會(huì)有什么軟件。這些軟件都可以是基于uClinux的。uClinux不是實(shí)時(shí)的,而自由軟件RTLinux是實(shí)時(shí)的。由于上述操作系統(tǒng)都是有源碼的,其硬件相關(guān)部分可以通過定義一些函數(shù)移植上去。有 Linux的開發(fā)環(huán)境,有GNU gcc的C交叉編譯器,有操作系統(tǒng)的源代碼,就可以自如地設(shè)計(jì)自己的應(yīng)用了。
經(jīng)典的uClinux下載地址為http://www.uclinux.org,但對(duì)于某些平臺(tái)(比如ARM),用GOOGLE搜索一下uClinux+ARM往往能找到比uClinux.org更好的網(wǎng)址。不過Coldfire還是推薦用http://www.uclinux.org/ports/coldfire/,上面的版本是uClinux目前最主要的維護(hù)者Greg Ungerer(gerg@snapgear.com)開發(fā)的,是uClinux最原始、最規(guī)范的版本。
我們用的是:
◇ 內(nèi)核代碼
?。?a >http://www.uclinux.org/ports/coldfire/source.html上的Full Source Distribution)
uClinux-dist-20020306.tar.gz
◇ 交叉編譯器
?。?a >http://www.uclinux.org/ports/coldfire/source.html上的M68K/ColdFire Binary Tools (m68k-elf tool chain) )
m68k-elf-tools-20020218.tar.gz
評(píng)論