嵌入式Linux開(kāi)發(fā)流程_第1頁(yè)
嵌入式Linux開(kāi)發(fā)流程_第2頁(yè)
嵌入式Linux開(kāi)發(fā)流程_第3頁(yè)
嵌入式Linux開(kāi)發(fā)流程_第4頁(yè)
嵌入式Linux開(kāi)發(fā)流程_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

嵌入式Linux開(kāi)發(fā)流程嵌入式Linux開(kāi)發(fā)概述嵌入式Linux軟件開(kāi)發(fā)的五個(gè)階段嵌入式Linux開(kāi)發(fā)流程嵌入式Linux開(kāi)發(fā)工具簡(jiǎn)介第一頁(yè),共35頁(yè)。第二頁(yè),共35頁(yè)。第三頁(yè),共35頁(yè)。BackGroundDebuggingMode(摩托羅拉公司支持的一種OCD的調(diào)試模式)第四頁(yè),共35頁(yè)。第五頁(yè),共35頁(yè)。第六頁(yè),共35頁(yè)。交叉編譯環(huán)境建立第七頁(yè),共35頁(yè)。交叉編譯環(huán)境建立第八頁(yè),共35頁(yè)。嵌入式Linux開(kāi)發(fā)環(huán)境交叉開(kāi)發(fā)環(huán)境(主機(jī)—目標(biāo)機(jī)的工作方式)第九頁(yè),共35頁(yè)。嵌入式Linux開(kāi)發(fā)環(huán)境Linux下開(kāi)發(fā)

Windows下開(kāi)發(fā) Cygwin Vmware(虛擬機(jī))+Linux

其它集成開(kāi)發(fā)環(huán)境第十頁(yè),共35頁(yè)。嵌入式Linux軟件組成嵌入式Linux系統(tǒng)軟件由以下部分組成:嵌入式Linux啟動(dòng)裝載器:BootLoaderBootLoader驅(qū)動(dòng)程序嵌入式Linux操作系統(tǒng)內(nèi)核Linux設(shè)備驅(qū)動(dòng)程序最小支持文件系統(tǒng)應(yīng)用程序第十一頁(yè),共35頁(yè)。嵌入式Linux組成—BootLoader啟動(dòng)裝載器完成Linux操作系統(tǒng)內(nèi)核的啟動(dòng)加載。系統(tǒng)上電后執(zhí)行,初始化硬件。提供基本的交互操作界面,如內(nèi)存查看與修改,設(shè)備查詢等功能。提供下載(讀取)Linux內(nèi)核的功能。提供從裝載器到Linux內(nèi)核傳送參數(shù)的功能。裝載Linux操作系統(tǒng)到內(nèi)存中,并將控制轉(zhuǎn)移到Linux內(nèi)核起始執(zhí)行處。完成Linux內(nèi)核的啟動(dòng)。第十二頁(yè),共35頁(yè)。嵌入式Linux組成—BootLoader驅(qū)動(dòng)啟動(dòng)裝載器驅(qū)動(dòng)程序驅(qū)動(dòng)基本設(shè)備,提供獲取內(nèi)核能力。啟動(dòng)裝載器驅(qū)動(dòng)程序只在裝載器環(huán)境中使用,與Linux驅(qū)動(dòng)不同。一般采用相對(duì)較為簡(jiǎn)單的方式,如一般可以不必采用中斷方式,而是采用查詢方式。驅(qū)動(dòng)串行接口,進(jìn)行控制臺(tái)(console)操作。驅(qū)動(dòng)網(wǎng)口,提供從網(wǎng)絡(luò)下載內(nèi)核的能力。驅(qū)動(dòng)FLASH,提供從FLASH讀取內(nèi)核能力。第十三頁(yè),共35頁(yè)。嵌入式Linux組成—Linux內(nèi)核嵌入式Linux內(nèi)核(Kernel)是整個(gè)嵌入式操作系統(tǒng)的核心,它直接管理硬件,并通過(guò)系統(tǒng)調(diào)用為上層應(yīng)用提供服務(wù)。

為適應(yīng)嵌入式環(huán)境,需對(duì)內(nèi)核進(jìn)行裁減與配置。提供支持特定硬件平臺(tái)的內(nèi)核啟動(dòng)代碼去除多余功能,減小體積增加實(shí)時(shí)功能添加特殊的系統(tǒng)調(diào)用第十四頁(yè),共35頁(yè)。嵌入式Linux組成—Linux設(shè)備驅(qū)動(dòng)Linux硬件驅(qū)動(dòng)提供目標(biāo)系統(tǒng)硬件在Linux操作系統(tǒng)下的驅(qū)動(dòng)程序,供系統(tǒng)以及之上的應(yīng)用存取硬件使用。Linux下的設(shè)備劃分為3類(lèi):字符設(shè)備char(如鍵盤(pán)、串口等)、塊設(shè)備block(如磁盤(pán)等)、網(wǎng)絡(luò)設(shè)備一般列為單獨(dú)的一類(lèi)設(shè)備由于Linux運(yùn)行時(shí)候劃分內(nèi)核空間與用戶空間,而驅(qū)動(dòng)程序一般運(yùn)行在內(nèi)核空間中。對(duì)于運(yùn)行在用戶空間的應(yīng)用程序而言,從相應(yīng)硬件中獲取數(shù)據(jù)需要經(jīng)過(guò)一個(gè)內(nèi)核空間到用戶空間拷貝的過(guò)程。第十五頁(yè),共35頁(yè)。嵌入式Linux組成—最小文件系統(tǒng)嵌入式Linux必須要有文件系統(tǒng)支持才能運(yùn)行嵌入式系統(tǒng)中一般采用MTD的物理設(shè)備作為文件系統(tǒng)駐留空間:如RAM、Flash等。文件系統(tǒng)中必須包含的內(nèi)容系統(tǒng)init程序;Shell;應(yīng)用程序;應(yīng)用程序函數(shù)庫(kù)。必須采取措施,減小文件系統(tǒng)的體積,以適應(yīng)嵌入式應(yīng)用的需求。第十六頁(yè),共35頁(yè)。嵌入式Linux組成—應(yīng)用程序應(yīng)用程序應(yīng)用程序完成整個(gè)嵌入式系統(tǒng)的對(duì)外功能需求與功能接口。應(yīng)用程序一般運(yùn)行在Linux的用戶空間,作為一個(gè)用戶進(jìn)程在運(yùn)行。應(yīng)用程序通過(guò)系統(tǒng)調(diào)用進(jìn)入內(nèi)核,訪問(wèn)內(nèi)核提供的服務(wù)。存取硬件??梢杂卸鄠€(gè)應(yīng)用程序同時(shí)運(yùn)行。應(yīng)用程序崩潰一般不會(huì)導(dǎo)致系統(tǒng)崩潰。Linux支持Posix線程:pthread。第十七頁(yè),共35頁(yè)。嵌入式Linux開(kāi)發(fā)流程嵌入式Linux開(kāi)發(fā)概述嵌入式Linux軟件開(kāi)發(fā)的五個(gè)階段嵌入式Linux開(kāi)發(fā)流程嵌入式Linux開(kāi)發(fā)工具簡(jiǎn)介第十八頁(yè),共35頁(yè)。嵌入式Linux軟件開(kāi)發(fā)的五個(gè)開(kāi)發(fā)階段根據(jù)整個(gè)嵌入式Linux應(yīng)用開(kāi)發(fā)過(guò)程的時(shí)間先后可以分為以下5個(gè)開(kāi)發(fā)階段:Boot程序(含Boot驅(qū)動(dòng))開(kāi)發(fā)Linux內(nèi)核開(kāi)發(fā)Linux驅(qū)動(dòng)程序開(kāi)發(fā)應(yīng)用程序開(kāi)發(fā)

Linux目標(biāo)系統(tǒng)集成

每個(gè)開(kāi)發(fā)階段對(duì)應(yīng)于一個(gè)完整嵌入式Linux系統(tǒng)的一些組成部分進(jìn)行的開(kāi)發(fā)工作第十九頁(yè),共35頁(yè)。Boot及驅(qū)動(dòng)程序開(kāi)發(fā)——Step1開(kāi)發(fā)目標(biāo)啟動(dòng)嵌入式目標(biāo)系統(tǒng),使系統(tǒng)具有加載并啟動(dòng)Linux內(nèi)核的能力。工作重點(diǎn)CPU初始化;RAM初始化;串口、網(wǎng)卡、以及FLASH驅(qū)動(dòng);基本的網(wǎng)絡(luò)UDP/IP協(xié)議棧支持。工作產(chǎn)品目標(biāo)系統(tǒng)的啟動(dòng)ROM??梢詥?dòng)目標(biāo)系統(tǒng)的BootLoader。第二十頁(yè),共35頁(yè)。Linux內(nèi)核開(kāi)發(fā)——Step2開(kāi)發(fā)目標(biāo)獲得一個(gè)滿足目標(biāo)系統(tǒng)功能與性能需求,可以啟動(dòng)的Linux內(nèi)核。

工作重點(diǎn)啟動(dòng)最小系統(tǒng)(內(nèi)核配置和生成)開(kāi)發(fā)、外圍設(shè)備驅(qū)動(dòng)的開(kāi)發(fā)。

工作產(chǎn)品可以啟動(dòng)系統(tǒng)的Linux內(nèi)核(bzImage、pImage等)第二十一頁(yè),共35頁(yè)。Linux設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)——Step3開(kāi)發(fā)目標(biāo)驅(qū)動(dòng)目標(biāo)系統(tǒng)上的相關(guān)設(shè)備,為上層應(yīng)用提供存取硬件的能力。

工作重點(diǎn)關(guān)注設(shè)備身的特性,采用合適的驅(qū)動(dòng)方式。

工作產(chǎn)品可以是內(nèi)核的一部分,也可以是模塊化的驅(qū)動(dòng)程序(內(nèi)核可裝載模塊)的目標(biāo)文件(*.o)。第二十二頁(yè),共35頁(yè)。Linux應(yīng)用程序開(kāi)發(fā)——Step4開(kāi)發(fā)目標(biāo)實(shí)現(xiàn)單板需要實(shí)現(xiàn)的產(chǎn)品功能與接口。提供相應(yīng)的單板服務(wù)與響應(yīng)。工作重點(diǎn)關(guān)注應(yīng)用本身。如果在封裝過(guò)的操作系統(tǒng)平臺(tái)上開(kāi)發(fā),需要關(guān)注所封裝的接口。

工作產(chǎn)品可以執(zhí)行的應(yīng)用程序,一般為ELF格式,采用動(dòng)態(tài)或者靜態(tài)連接,可以在目標(biāo)系統(tǒng)上運(yùn)行。第二十三頁(yè),共35頁(yè)。Linux目標(biāo)系統(tǒng)集成——Step5開(kāi)發(fā)目標(biāo)提供產(chǎn)品化的嵌入式Linux系統(tǒng)。

工作重點(diǎn)關(guān)注系統(tǒng)占用的存儲(chǔ)空間,文件系統(tǒng)選擇。系統(tǒng)啟動(dòng)腳本。

工作產(chǎn)品無(wú)需開(kāi)發(fā)主機(jī)配合就可以獨(dú)立運(yùn)行的產(chǎn)品化的嵌入式Linux系統(tǒng)。。第二十四頁(yè),共35頁(yè)。嵌入式Linux開(kāi)發(fā)流程嵌入式Linux開(kāi)發(fā)概述嵌入式Linux軟件開(kāi)發(fā)的五個(gè)階段嵌入式Linux開(kāi)發(fā)流程嵌入式Linux開(kāi)發(fā)工具簡(jiǎn)介第二十五頁(yè),共35頁(yè)。Linux開(kāi)發(fā)流程--操作系統(tǒng)的裁剪——1操作系統(tǒng)的裁剪對(duì)應(yīng)于PC機(jī)上的軟件開(kāi)發(fā),這應(yīng)該屬于系統(tǒng)設(shè)計(jì),針對(duì)嵌入式系統(tǒng)的硬件環(huán)境,必須對(duì)操作系統(tǒng)進(jìn)行裁剪設(shè)計(jì),一方面卸載和刪除無(wú)用的模塊,修改和簡(jiǎn)化需要的模塊;另一方面增加板極支持包的支持,相對(duì)嵌入式硬件系統(tǒng),完善相對(duì)應(yīng)的操作系統(tǒng),使得系統(tǒng)最為緊湊、小巧。第二十六頁(yè),共35頁(yè)。Linux開(kāi)發(fā)流程--嵌入式操作系統(tǒng)內(nèi)核的配置和編譯——2嵌入式操作系統(tǒng)內(nèi)核的配置和編譯當(dāng)系統(tǒng)設(shè)計(jì)確定后,就可以具體對(duì)操作系統(tǒng)的內(nèi)核進(jìn)行合理配置和編譯,形成新的應(yīng)用于嵌入式硬件系統(tǒng)的定制的內(nèi)核,最后一般形成內(nèi)核影象文件,下載到系統(tǒng)的FLASH中,完成內(nèi)核的“量身定做”。第二十七頁(yè),共35頁(yè)。Linux開(kāi)發(fā)流程--文件系統(tǒng)的建立——3文件系統(tǒng)的建立對(duì)于操作系統(tǒng),內(nèi)核裁剪完成后,接著對(duì)文件系統(tǒng)進(jìn)行裁剪,由于每一種操作系統(tǒng)都支持很多文件系統(tǒng),對(duì)于嵌入式操作系統(tǒng)的文件系統(tǒng)裁剪,和內(nèi)核一樣,針對(duì)板子上的并口FLASH、串口FLASH,各種存儲(chǔ)卡、U盤(pán)等等,構(gòu)造和裁剪出相應(yīng)的文件系統(tǒng),完成文件系統(tǒng)的建立。第二十八頁(yè),共35頁(yè)。Linux開(kāi)發(fā)流程--用戶程序的編寫(xiě)和簡(jiǎn)單的仿真調(diào)試——4用戶程序的編寫(xiě)和簡(jiǎn)單的仿真調(diào)試建立交叉編譯的開(kāi)發(fā)環(huán)境,開(kāi)發(fā)用戶的應(yīng)用程序,并且盡可能采用一些開(kāi)發(fā)工具,如vi等,把一些模塊下載到目標(biāo)板上,進(jìn)行測(cè)試。第二十九頁(yè),共35頁(yè)。Linux開(kāi)發(fā)流程--整體系統(tǒng)的目標(biāo)板仿真調(diào)試——5整體系統(tǒng)的目標(biāo)板仿真調(diào)試應(yīng)用程序開(kāi)發(fā)完后,和文件系統(tǒng)一起,形成文件系統(tǒng)的映像文件,然后通過(guò)仿真工具(仿真機(jī)、調(diào)試串口等)和host-target開(kāi)發(fā)環(huán)境,對(duì)系統(tǒng)進(jìn)行仿真和調(diào)試第三十頁(yè),共35頁(yè)。Linux開(kāi)發(fā)流程--系統(tǒng)下載和脫機(jī)運(yùn)行——6系統(tǒng)下載和脫機(jī)運(yùn)行當(dāng)仿真完成,確定系統(tǒng)功能開(kāi)發(fā)達(dá)到目標(biāo)后,把最終形成的影象文件,內(nèi)核影象文件和文件系統(tǒng)影象通過(guò)開(kāi)發(fā)系統(tǒng)的下載工具進(jìn)行下載,然后測(cè)試。第三十一頁(yè),共35頁(yè)。嵌入式Linux開(kāi)發(fā)流程嵌入式Linux開(kāi)發(fā)概述嵌入式Linux軟件開(kāi)發(fā)的五個(gè)階段嵌入式Linux開(kāi)發(fā)流程嵌入式Linux開(kāi)發(fā)工具簡(jiǎn)介第三十二頁(yè),共35頁(yè)。GNU基礎(chǔ)工具鏈Binutilsbinutils是二進(jìn)制工具,它是一套處理二進(jìn)制文件的工具的集合,需要使用它進(jìn)行可執(zhí)行文件的生成等工作。GCCGCC是GNUC語(yǔ)言編譯器,使用它來(lái)進(jìn)行Linux內(nèi)核、庫(kù)文件、以及應(yīng)用程序的編譯。

GlibcGlibc是GNU的C語(yǔ)言函數(shù)庫(kù),使用它提供C語(yǔ)言庫(kù)函數(shù)的支持。

GdbGdb是GNUDebuger,是Linux平臺(tái)上的標(biāo)準(zhǔn)調(diào)試工具。第三十三頁(yè),共35頁(yè)。輔助工具M(jìn)ake根據(jù)目標(biāo)與依賴條件的時(shí)間關(guān)系,去執(zhí)行相關(guān)指令。

CygwinCygwin

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論