|
參加嵌入式培訓(xùn)班_關(guān)于幾種嵌入式開發(fā)環(huán)境介紹,
做linux嵌入式系統(tǒng)的對(duì)常見的幾種嵌入式開發(fā)環(huán)境一定不會(huì)默生,由于主要接觸網(wǎng)絡(luò)相關(guān)產(chǎn)品的一些系統(tǒng)設(shè)計(jì),因此,將可能用到的嵌入式開發(fā)環(huán)境簡(jiǎn)要總結(jié)一下。主要涉及下面的幾個(gè)東東: emdebian - emdebian.sourceforge.net uclinux - www.uclinux.org buildroot - buildroot.uclibc.org scratchbox - www.scratchbox.org openembedded - http://oe.handhelds.org emdebian emdebian基于將debian用于嵌入式系統(tǒng)的目的而開發(fā)。debian是一個(gè)發(fā)展很快的項(xiàng)目,在我第一次用debian時(shí),就再也不愿意換用其它的發(fā)布版了,目前我用的debian已經(jīng)安裝了有兩年的時(shí)間了,但現(xiàn)在系統(tǒng)仍然是“最新”版本,良好的在線軟件升級(jí)系統(tǒng)是debian成功的原因之一。目前debian已經(jīng)支持11個(gè)體系的系統(tǒng),包括x86、ppc、mips、arm、sh等(據(jù)最近的一則消息,arm有可能不再支持),并包含了大量的軟件。這些要?dú)w功于debian的開發(fā)團(tuán)隊(duì),正因?yàn)橛性S多人使用和支持,因此,不是比較偏門的軟件,基本上不需要從源碼來(lái)安裝,這也是我喜歡用 debian的原因之一! ∵@樣好的一個(gè)系統(tǒng),當(dāng)然有人愿意將其用到嵌入式系統(tǒng)中去。emdebian基于一個(gè)很簡(jiǎn)易的嵌入式系統(tǒng)開發(fā)的想法來(lái)構(gòu)造嵌入式系統(tǒng),即從一個(gè)成熟的系統(tǒng)中去除不需要的部份(如文檔和不需要的工具),精簡(jiǎn)出一個(gè)小的系統(tǒng),這與下面要介紹的幾個(gè)工具的想法剛好相反(下面幾個(gè)都是基于 from scratch 即從無(wú)到有,從頭構(gòu)建的方式)。emdebian提供一些工具來(lái)協(xié)助完成從現(xiàn)有的系統(tǒng)或安裝包(deb文件,類似redhat的rpm)中提取需要的東東,并協(xié)助完成完整系統(tǒng)的構(gòu)建,當(dāng)然也支持交叉構(gòu)建了,比如你可以在x86 的pc上構(gòu)建一個(gè)基于arm的嵌入式系統(tǒng),而整個(gè)過(guò)程不需要編譯任何一行源代碼! №樌沓烧碌,emdebian的重要優(yōu)勢(shì)就展現(xiàn)出來(lái)了,現(xiàn)在你用的cpu超出11個(gè)debian支持范圍了嗎?沒(méi)有,那么你可以簡(jiǎn)單的通過(guò) emdebian構(gòu)建目標(biāo)系統(tǒng);你所需要的主體軟件在debian支持的官方和非官方近2萬(wàn)個(gè)軟件以外嗎?沒(méi)有,那么恭喜你,明天就可以給老板交工了。當(dāng)然,對(duì)于特定的軟件,可能還是需要從源碼來(lái)構(gòu)建,不過(guò)同樣的,我們可以將其生成deb包,然后將配置加到emdebian工具集中,什么是一嵌入式期權(quán), 嵌入式軟件開發(fā)等級(jí), 嵌入式已經(jīng)不行, 嵌入式程序刪除, 測(cè)溫嵌入式開發(fā), 四級(jí)嵌入式有什么用, 批量改嵌入式照片, 嵌入式設(shè)備名稱, 嵌入式系統(tǒng)外文教學(xué), 嵌入式軟廣告是什么, 嵌入式內(nèi)存管理摘要, 嵌入式stl, 嵌入式系統(tǒng)3模塊, 嵌入式怎么接項(xiàng)目, 嵌入式試題gpio, 達(dá)內(nèi)培訓(xùn)有嵌入式嗎, 嵌入式電子溫度表, 嵌入式吊頂施工, 嵌入式拉手怎么裝, 汽車嵌入式電子狗, 嵌入式小游戲編程, 嵌入式和網(wǎng)工哪個(gè)好考, 同其它所有軟件一樣的選取和配置! mdebian的發(fā)展似乎不是想像的那么好,現(xiàn)在主頁(yè)上的新聞更新還是2004年的! uildroot emdebian實(shí)際上并不一定適合于資源非常緊缺的超小型系統(tǒng),比如只有2m flash的小型控制系統(tǒng)。另外發(fā)行版的軟件通常會(huì)以通用代碼來(lái)編譯,例如,為了盡可能在各種x86平臺(tái)上都能夠安裝,大多數(shù)發(fā)行版通常會(huì)以i686甚至 i386代碼集來(lái)編譯軟件,可以使文件的通用性很強(qiáng),但cpu的性能卻不能發(fā)恢到最好(這就是為什么有時(shí)會(huì)看到一些廠商或愛好者發(fā)布piii、piv、 athlon等優(yōu)化系統(tǒng)的原因),這對(duì)于嵌入式系統(tǒng)來(lái)說(shuō)也不會(huì)是一件好事情。另外,沒(méi)有源碼的控制權(quán),一些需要定制的東西也會(huì)變得難以實(shí)現(xiàn),因此,從源碼開始構(gòu)建仍然有必要! ∏度胧絣inux開發(fā)中使用的cpu速度往往向?qū)Σ粫?huì)太高,因此,盡可能提高代碼的性能就非常必要。通常開發(fā)人員應(yīng)該對(duì)該cpu的具體型號(hào)有一定的了解,以便啟用編譯器中對(duì)該型號(hào)的優(yōu)化,以arm為例,我們可以通過(guò) -march=armv5te 和 -mtune=arm9tdmi 來(lái)對(duì)代碼在arm9上的運(yùn)行進(jìn)行優(yōu)化。有時(shí)這些優(yōu)化體現(xiàn)出來(lái)的性能改善是比較大的,我曾對(duì)比過(guò)一些復(fù)雜算法的代碼優(yōu)化前后的性能(執(zhí)行速度),都有一定的提升。另外在piv上測(cè)試過(guò)以i686和pentium4對(duì)一個(gè)語(yǔ)音編碼算法進(jìn)行優(yōu)化,運(yùn)算速度居然提高了幾倍! ∵@種幅度的提升可能只是一個(gè)特例,這個(gè)算法有大量的復(fù)雜浮點(diǎn)運(yùn)算,使用i386或i686指令集和使用更先進(jìn)的piv指令集編譯出來(lái)的機(jī)器代碼對(duì)于同一個(gè)運(yùn)算的解釋可能采用完全不同的指令來(lái)完成,因此性能提升較大就不足為奇了。同樣這種代碼,在arm上通過(guò)arm4和arm5來(lái)優(yōu)化后在arm9上運(yùn)行,卻沒(méi)有那么大的提升?磥(lái)對(duì)cpu的一定了解也應(yīng)該是嵌入式系統(tǒng)軟件設(shè)計(jì)者應(yīng)該具備的能力。 那么又如何控制可執(zhí)行文件的大小呢?除了卻除軟件中不需要的部份外,我們還應(yīng)該考慮軟件所引用的庫(kù)文件。gnu的glibc是一個(gè)非常寵大而完整的庫(kù),至少對(duì)于嵌入式系統(tǒng)來(lái)說(shuō),其體積顯得過(guò)于大了一些。uclibc的提出較好的解決了這樣一個(gè)問(wèn)題。uclibc盡可能的兼容glibc,大多數(shù)應(yīng)用程序可以在很小或完全不修改的情況下就可能使用uclibc替代glibc。通過(guò)uclibc來(lái)代替glibc,可以在不改變應(yīng)用程序功能的前提下,大大減少發(fā)布文件的大小,無(wú)論應(yīng)用程序以靜態(tài)鏈接來(lái)編譯,還是以動(dòng)態(tài)鏈接形式編譯! 〔贿^(guò)使用uclibc代替并不是簡(jiǎn)單的設(shè)置一兩個(gè)參數(shù)就行了,通常需要使用一個(gè)不同的工具集(gcc/binutils等)來(lái)編譯代源碼。手工的構(gòu)造這樣一個(gè)環(huán)境,對(duì)于大多數(shù)普通程序員來(lái)說(shuō),不一定是一件很簡(jiǎn)單的事情,因此,uclibc的開發(fā)者創(chuàng)造出 |
|