應(yīng)用c進(jìn)行嵌入式Linux的研究
1.引言
嵌入式Linux是一種開放源碼的真正32位的操作系統(tǒng),并且可以進(jìn)行裁減和優(yōu)化,性能穩(wěn)定,并且支持多任務(wù)和軟實(shí)時(shí),所以深受開發(fā)者的信賴。它支持從IntelX86到MotorolaPowerPC,ARM,CompaqAlpha等多種硬件平臺(tái),并且提供了豐富的軟件資源,具有強(qiáng)大的網(wǎng)絡(luò)支持功能,支持GUI開發(fā),并且嵌入式Linux的開發(fā)技術(shù)資源豐富。如何管理各個(gè)應(yīng)用在系統(tǒng)中無沖突安全地工作?如何把開發(fā)的系統(tǒng)快速的轉(zhuǎn)化為可發(fā)布的產(chǎn)品?如何優(yōu)化和管理嵌入式系統(tǒng)的開發(fā)過程,保證在有限的工期之內(nèi)完成高質(zhì)量的產(chǎn)品?使用平臺(tái)創(chuàng)建套件(PCS)來開發(fā)嵌入式Linux應(yīng)用可以很好地解決這些問題。
2.平臺(tái)創(chuàng)建套件介紹
平臺(tái)創(chuàng)建套件(PlatformCreationSuit)是由Metrowerks公司開發(fā)的一套專門用于進(jìn)行嵌入式Linux應(yīng)用的一套系統(tǒng),它提供的主要功能有:配置操作系統(tǒng),開發(fā)自己的應(yīng)用,自動(dòng)編譯(Build),部署(Deploy),調(diào)試(Debug),檢查許可文件,集成新的軟件等等。
平臺(tái)創(chuàng)建套件包含三個(gè)主要的組成部分:
目標(biāo)向?qū)Чぞ?TargetWizardTools),用來管理,配置,擴(kuò)展,生成和部署傳統(tǒng)的開放源碼的Linux軟件元素,來全面的支持目標(biāo)產(chǎn)品的需要。如圖一。目標(biāo)向?qū)Чぞ咛峁┝藬U(kuò)展基本的Linux環(huán)境的功能,它允許集成千萬種可下載的開放源代碼和二進(jìn)制應(yīng)用,GNU工具集,新的Linux內(nèi)核,或者用來提高內(nèi)核功能的改進(jìn)的設(shè)備支持,安全,實(shí)時(shí)性能,服務(wù)質(zhì)量(QOS)和網(wǎng)絡(luò)等部件。
CodeWarrior可視化開發(fā)環(huán)境,用來進(jìn)行項(xiàng)目管理,創(chuàng)建和生成嵌入式Linux應(yīng)用軟件。CodeWarrior可視化開發(fā)環(huán)境是一個(gè)非常優(yōu)秀的可視化開發(fā)工具,包括編輯環(huán)境,調(diào)試環(huán)境和項(xiàng)目管理功能,快速開發(fā)工具,等等。因?yàn)镃odeWarrior可視化開發(fā)環(huán)境已被眾多的嵌入式應(yīng)用開發(fā)人員所熟悉,這里不再詳細(xì)介紹。
板極支持包工具(BoardSupportPackage),包括用來創(chuàng)建,部署和調(diào)試操作系統(tǒng),驅(qū)動(dòng)程序,和針對(duì)目標(biāo)硬件平臺(tái)的應(yīng)用所需要的所有元素,通常一個(gè)BSP中包括Linux內(nèi)核,設(shè)備驅(qū)動(dòng)程序,應(yīng)用和服務(wù),各種類庫(kù),GNU工具集(編譯器,連接器,等等),部署向?qū)У鹊取?/p>
圖一:平臺(tái)創(chuàng)建套件
這張圖是PCS中最常用的模塊:TargetWizard的界面。在TargetWizard中所有的部件都以樹型結(jié)構(gòu)顯示,部件的圖標(biāo)表明它的狀態(tài),這樣整個(gè)系統(tǒng)中各個(gè)部件及其狀態(tài)都一目了然。開發(fā)者可以很方便的對(duì)部件進(jìn)行裁減,只要通過簡(jiǎn)單菜單操作來打開(Enable)和關(guān)閉(Disable)就可以對(duì)系統(tǒng)中的部件進(jìn)行配置。PCS會(huì)自動(dòng)管理各個(gè)部件之間的依賴和沖突關(guān)系,這就避免了開發(fā)者在研究部件依賴關(guān)系和解決部件沖突的時(shí)候花費(fèi)大量的時(shí)間。開發(fā)者在打開一個(gè)部件的時(shí)候,如果它所依賴的部件并沒有打開,那么在狀態(tài)窗口中會(huì)顯示出這個(gè)部件的依賴信息,開發(fā)者可以根據(jù)這些信息逐一地解決。當(dāng)有沖突的時(shí)候,在狀態(tài)窗口中會(huì)顯示出具體的沖突信息,開發(fā)者可以順利地解決問題。在沒有沖突檢測(cè)的情況下,開發(fā)者可能意識(shí)不到?jīng)_突的存在,而直到運(yùn)行的時(shí)候才發(fā)現(xiàn)沖突的存在,PCS在很大程度上避免了類似問題的發(fā)生。
TargetWizard同時(shí)與其它的功能模塊緊密相連,PackageEditor是一個(gè)可視化的環(huán)境來導(dǎo)入新的驅(qū)動(dòng)程序、應(yīng)用和庫(kù)文件,PCS同時(shí)也提供了手動(dòng)方式來完成這些功能的方法;LinuxKernelImportTool可以用來導(dǎo)入新的Kernel;GNUToolchainImportTool可以用來導(dǎo)入新的toolchain;DebianBinaryImportTool允許開發(fā)者下載并導(dǎo)入多種公開發(fā)布的DebianGNU/Linux二進(jìn)制應(yīng)用程序;ExportBSPtool可以用來導(dǎo)出BSP,是生成BSP的工具;SkeletonDeploymentWizard是可以設(shè)置一些通用屬性的部署工具;GDB(GNUDebugger)和DDD(DataDisplayDebugger)是目標(biāo)鏡像文件已經(jīng)部署到目標(biāo)板上的調(diào)試工具。
3.基于平臺(tái)創(chuàng)建套件的嵌入式Linux應(yīng)用的開發(fā)過程
進(jìn)行嵌入式Linux的開發(fā)大致都采用以下的開發(fā)過程:
1.基于功能需求選擇一個(gè)目標(biāo)板(MCG,Force,PC104,PPC,等等)或者根據(jù)需求選擇一個(gè)處理器(購(gòu)買一個(gè)評(píng)估開發(fā)板)和外圍芯片,定制目標(biāo)板。
2.定制和配置操作系統(tǒng)。
3.開發(fā)定制的應(yīng)用。
4.重新配置軟件,進(jìn)行部署。
5.維護(hù)軟件。
使用平臺(tái)創(chuàng)建套件(PCS)可以加速整個(gè)嵌入式系統(tǒng)的開發(fā)過程。下面介紹使用平臺(tái)創(chuàng)建套件(PCS)進(jìn)行嵌入式系統(tǒng)開發(fā)可以采用的詳細(xì)的開發(fā)過程。