<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 幾種Linux下嵌入式開發(fā)環(huán)境的簡(jiǎn)單介紹

          幾種Linux下嵌入式開發(fā)環(huán)境的簡(jiǎn)單介紹

          作者: 時(shí)間:2009-11-13 來(lái)源:網(wǎng)絡(luò) 收藏

            uC

            uC與emDebian至少有兩個(gè)重要的區(qū)別,第一是構(gòu)建方式,前面已經(jīng)提到過(guò)了,uC屬于 from scratch 一類的。另一個(gè)不同的地方,是支持不在emDebian支持的11種CPU的,當(dāng)然,這個(gè)說(shuō)法不是很恰當(dāng),正確的說(shuō)法是支持那些不具備MMU單元的CPU體系。的第一個(gè)目的是支持MC68328芯片,現(xiàn)在已經(jīng)能構(gòu)支持更多的CPU,如Intel i960,ARM等。不過(guò),uCLinux的主體開發(fā)團(tuán)隊(duì)目前已經(jīng)不再支持ARM了,還好 Samsung 的 Hyok S. Choi 接過(guò)了接勵(lì)棒,Linux 2.6版本的補(bǔ)丁可以在 uCLinux/ARM2.6 找到。

            uCLinux之前僅是核心的一些補(bǔ)丁,后來(lái)發(fā)展成為一個(gè)包括核心、庫(kù)、應(yīng)用程序、工具和編譯相關(guān)的配置文件的一個(gè)集成開發(fā)環(huán)境。與 buildroot不同的是,uCLinux不編譯目標(biāo)系統(tǒng)的工具集,也就是說(shuō),相應(yīng)的編譯工具應(yīng)該提前安裝好。如,對(duì)于arm來(lái)說(shuō),需要先安裝ARM交叉編譯器。uCLinux的編譯器也需要一些補(bǔ)丁,其中比較重要的兩個(gè)方面主要包括:

            用于生成FLT文件的補(bǔ)?。河捎贛MU的關(guān)系,uCLinux不支持ELF可執(zhí)行文件,這個(gè)補(bǔ)丁主要包括bin2flt工具包和一個(gè)ld的wrapper腳本等,用于(透明于用戶)生成FLT文件;

            用于支持XIP(Execute In Place)的補(bǔ)?。哼@個(gè)補(bǔ)丁需要對(duì)gcc進(jìn)行一些小的修改;支持XIP主要是為了解決小內(nèi)存環(huán)境中運(yùn)行的問(wèn)題。

            XIP不一定適用于每種應(yīng)用環(huán)境,對(duì)于內(nèi)在要求特別嚴(yán)格的系統(tǒng)來(lái)說(shuō)(空間第一位,如手機(jī)要求使用片內(nèi)RAM),可以通過(guò)將核心和應(yīng)用程序編譯為XIP支持,然后直接在Flash上運(yùn)行,內(nèi)存僅用于運(yùn)行時(shí)數(shù)據(jù);而對(duì)于性能要求為主的系統(tǒng)(如高速網(wǎng)絡(luò)處理器),則不能因?yàn)楣?jié)省一點(diǎn)空間而使用XIP將程序直接在Flash上運(yùn)行,這樣可能會(huì)降低指令的讀取速度而影響系統(tǒng)性能(但仍然可以使用 XIP,使程序的多個(gè)實(shí)例在內(nèi)存中共享代碼空間,以后詳細(xì)說(shuō)); + FLT可執(zhí)行文件支持動(dòng)態(tài)鏈接庫(kù)(目前僅m68k支持,參見 uCdot: Shared libraries under uCLinux mini-HOWTO)的補(bǔ)?。?

            uCLinux的編譯過(guò)程大致是,首先,通過(guò)可視配置界面(menuconfig/xconfig)選取Vendor和board(實(shí)際上是選擇了一些配置文件和產(chǎn)品相關(guān)的文件),然后根據(jù)選擇構(gòu)造一個(gè)適用于target的開發(fā)環(huán)境,如生成頭文件和需要的庫(kù)文件(uClibc、glibc或uC-libc 以及其它一些庫(kù)),然后編譯核心、庫(kù)、應(yīng)用程序,最后將所有的輸出安裝到romfs目錄中,根據(jù)需要生成目標(biāo)平臺(tái)需要的映像文件(如: romfs.img、Linux.bin、rootfs.gz等)

            由于一些過(guò)程細(xì)節(jié)被隱藏起來(lái),uCLinux現(xiàn)在的編譯過(guò)程方便到只需要配置一下(make menuconfig),然后 make 就可以直接獲得最終輸出。不過(guò)這反倒成為一些初學(xué)者學(xué)習(xí)的一個(gè)麻煩,本文完成后,根據(jù)對(duì)本文的反饋,將進(jìn)一步對(duì)uCLinux進(jìn)行詳細(xì)介紹。

            總的來(lái)說(shuō),目前的uCLinux是一套主要用于無(wú)MMU核(但不限于此)的嵌入式Linux集成環(huán)境,也是一個(gè)非常好的 Linux from scratch 的示例。拋開其MMU相關(guān)的補(bǔ)丁,uCLinux也可以作為一套用于包含MMU系統(tǒng)的集成開發(fā)環(huán)境,Snapgear 就是一個(gè)很好的例子。實(shí)際上,我們可以從官方的uCLinux源碼就可以直接編譯一個(gè)支運(yùn)行于X86的uCLinux。

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


          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();