嵌入式Linux小型化裁減_第1頁
嵌入式Linux小型化裁減_第2頁
嵌入式Linux小型化裁減_第3頁
嵌入式Linux小型化裁減_第4頁
嵌入式Linux小型化裁減_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、嵌入式Linux小型化裁減嵌入式Linux小型化裁減2主要內(nèi)容嵌入式Linux系統(tǒng)基本概念嵌入式Linux系統(tǒng)裁減與移植嵌入式LINUX軟件開發(fā)嵌入式Linux小型化裁減3主要內(nèi)容嵌入式Linux系統(tǒng)基本概念Linux嵌入式Linux系統(tǒng)裁減與移植嵌入式Linux應(yīng)用嵌入式Linux小型化裁減416.1.1 嵌入式系統(tǒng)的定義MPUMPU微處理器微處理器電源電源模塊模塊時鐘時鐘復(fù)位復(fù)位FlashFlashRAMRAMROMROMUSBUSBLCDLCDKeyboardKeyboard外圍電路外圍電路OtherOther外設(shè)外設(shè)嵌入式系統(tǒng)硬件組成嵌入式系統(tǒng)硬件組成 嵌入式Linux小型化裁減5嵌入

2、式系統(tǒng)設(shè)備常見接口I/OA/D、D/A鍵盤鍵盤LCD存儲器接口存儲器接口網(wǎng)絡(luò)設(shè)備接口網(wǎng)絡(luò)設(shè)備接口嵌入式Linux小型化裁減6CISC和RISC指令集CISCCISC:復(fù)雜指令集(:復(fù)雜指令集(Complex Instruction Set ComputerComplex Instruction Set Computer)l具有大量的指令和尋址方式具有大量的指令和尋址方式l8/28/2原則:原則:80%80%的程序只使用的程序只使用20%20%的指令的指令l大多數(shù)程序只使用少量的指令就能夠運行。大多數(shù)程序只使用少量的指令就能夠運行。l如如Intel X86Intel X86系列或者兼容的低功耗芯

3、片系列或者兼容的低功耗芯片RISCRISC:精簡指令集(:精簡指令集(Reduced Instruction Set Computer)Reduced Instruction Set Computer)l在通道中只包含最有用的指令在通道中只包含最有用的指令l確保數(shù)據(jù)通道快速執(zhí)行每一條指令確保數(shù)據(jù)通道快速執(zhí)行每一條指令l使使CPUCPU硬件結(jié)構(gòu)設(shè)計變得更為簡單硬件結(jié)構(gòu)設(shè)計變得更為簡單l如如PowerPC, MIPS, ARM/XScalePowerPC, MIPS, ARM/XScale 嵌入式Linux小型化裁減7馮諾依曼體系結(jié)構(gòu)模型指令寄指令寄存器存器控制器控制器數(shù)據(jù)通道數(shù)據(jù)通道輸入輸入輸出

4、輸出中央處理器中央處理器存儲器存儲器程序程序指令指令0 0指令指令1 1指令指令2 2指令指令3 3指令指令4 4數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)0 0數(shù)據(jù)數(shù)據(jù)1 1數(shù)據(jù)數(shù)據(jù)2 2嵌入式Linux小型化裁減8哈佛體系結(jié)構(gòu)指令寄指令寄存器存器控制器控制器數(shù)據(jù)通道數(shù)據(jù)通道輸入輸入輸出輸出中央處理器中央處理器程序存儲器程序存儲器指令指令0指令指令1指令指令2數(shù)據(jù)存儲器數(shù)據(jù)存儲器數(shù)據(jù)數(shù)據(jù)0數(shù)據(jù)數(shù)據(jù)1數(shù)據(jù)數(shù)據(jù)2地址地址指令指令地址地址數(shù)據(jù)數(shù)據(jù)嵌入式Linux小型化裁減916.1.2 嵌入式操作系統(tǒng)的特點“嵌入計算機(jī)系統(tǒng)的專用操作系統(tǒng)”。嵌入性:物理環(huán)境(小型)、電氣環(huán)境(可靠)、成本(價廉)等要求。 專用性 :滿足對象

5、要求的最小軟、硬件配置等。 性能要求:多任務(wù)調(diào)度、實時性能功能要求:接口與通信能力嵌入式Linux小型化裁減10常見嵌入式操作系統(tǒng) VxWorksVxWorks 市場占有率最高的系統(tǒng)。它支持多種處理器 ,高性能。 PSOSystemPSOSystem 模塊化好,在中低端系統(tǒng)中應(yīng)用廣。pSOS已屬于WindRiver。 QNXQNX 小巧靈活,在航空航天和工業(yè)控制中廣泛應(yīng)用 Windows CEWindows CE 多線程、完整優(yōu)先權(quán)、多任務(wù)的操作系統(tǒng)。 圖形界面好,開發(fā)工具友好 Linux-derived RTOS Linux-derived RTOS Montavist Linx, RTli

6、nux; Other OSOther OS VTRX,Palm OS,ucos etc嵌入式Linux小型化裁減1116.1.3 嵌入式Linux發(fā)展與應(yīng)用專用嵌入式實時操作系統(tǒng) vs 嵌入式Linux 操作系統(tǒng)專用嵌入式實時操作系統(tǒng)嵌入式Linux操作系統(tǒng)系統(tǒng)購買費非常昂貴商業(yè)版本需要一定服務(wù)費使用費每件產(chǎn)品需都需繳納免費技術(shù)支持開發(fā)商一家支持商業(yè)版廠商和Linux社團(tuán)網(wǎng)絡(luò)協(xié)議棧需要額外購買免費且性能優(yōu)異軟件移植難,因為系統(tǒng)封閉易,因為代碼開放產(chǎn)品開發(fā)周期長,因為參考代碼有限短,應(yīng)用和參考豐富實時性能好可用RTLinux等模塊彌補穩(wěn)定性好較好,高性能系統(tǒng)待驗證嵌入式Linux小型化裁減12如

7、何選擇合適的linux版本標(biāo)準(zhǔn)的Linux 版本。小型化的嵌入式版本。具有實時擴(kuò)展功能的Linux 版本。Linux 特殊應(yīng)用版本。例如有許多針對不同的如“瘦服務(wù)器”或“防火墻”應(yīng)用的小型化、實時特性增強的版本。嵌入式Linux小型化裁減13網(wǎng)絡(luò)可選擇資源標(biāo)準(zhǔn)版本Debian:Red Hat:Slackware:Turbo Linux:嵌入式Linux小型化裁減14網(wǎng)絡(luò)可選擇資源小型化版本ETLinux:Linux Router Project:LOAF:ucLinux:嵌入式Linux小型化裁減15網(wǎng)絡(luò)可選擇資源實時擴(kuò)展版RTLinux:RTAI:EL/IX:SRT-Linux:嵌入式Lin

8、ux小型化裁減16嵌入式linux構(gòu)建與應(yīng)用的關(guān)鍵技術(shù)對linux 的裁減達(dá)到小型化的目的;對不同嵌入式微處理器的linux 內(nèi)核代碼移植,驅(qū)動程序的研究;專業(yè)應(yīng)用開發(fā): 移植應(yīng)用程序,開發(fā)面向特定應(yīng)用的控制軟件。嵌入式Linux小型化裁減17嵌入式嵌入式Linux操作系統(tǒng)實時性操作系統(tǒng)實時性 常用衡量實時性標(biāo)準(zhǔn)確定性(Determinism):系統(tǒng)的行為表現(xiàn)應(yīng)該是確定的,每個系統(tǒng)調(diào)用執(zhí)行的時間是可預(yù)測的。中斷延遲時間(Interrupt Latency Time):從接收到中斷信號到操作系統(tǒng)作出響應(yīng),并進(jìn)入中斷服務(wù)程序的時間;上下文切換時間(Context-Switching Time),就

9、是操作系統(tǒng)將控制權(quán)從執(zhí)行中取回,然后交給另一個任務(wù)所需的時間。嵌入式Linux小型化裁減18嵌入式嵌入式Linux操作系統(tǒng)實時性操作系統(tǒng)實時性影響中斷處理時間的因素處理器硬件電路的延遲時間,通常這個時間可以忽略。操作系統(tǒng)處理中斷并將控制權(quán)轉(zhuǎn)移給中斷處理程序所需要的時間。操作系統(tǒng)的中斷禁止時間,這是操作系統(tǒng)為了保護(hù)重要的系統(tǒng)程序代碼暫停接受中斷需要的時間。嵌入式Linux小型化裁減19嵌入式嵌入式Linux操作系統(tǒng)實時性操作系統(tǒng)實時性某任務(wù)中斷1的服務(wù)程序中斷2的服務(wù)程序中斷禁止區(qū)中斷2的中斷延時中斷1產(chǎn)生中斷2產(chǎn)生中斷1的中斷延時t1t2t3嵌入式Linux小型化裁減20Linux內(nèi)核與實時性

10、內(nèi)核與實時性 對比項目Linux 2.4(s)Linux 2.6(s)內(nèi)核在無負(fù)載時中斷延時最大值8.531.0內(nèi)核在重負(fù)載時中斷延時最大值113.549.5內(nèi)核在無負(fù)載時中斷任務(wù)響應(yīng)延時最大值104412內(nèi)核在強負(fù)載時中斷任務(wù)響應(yīng)延時最大值4446578嵌入式Linux小型化裁減21嵌入式嵌入式Linux實時化技術(shù)實時化技術(shù) 非實時化通用內(nèi)核實時化內(nèi)核硬件平臺非實時任務(wù)實時任務(wù)RTlinux雙內(nèi)核實時化結(jié)構(gòu)雙內(nèi)核實時化結(jié)構(gòu)嵌入式Linux小型化裁減22嵌入式嵌入式Linux實時化技術(shù)實時化技術(shù)非實時進(jìn)程1非實時進(jìn)程2原Linux內(nèi)核實時任務(wù)實時內(nèi)核硬件中斷RTLinux任務(wù)處理流程任務(wù)處理流

11、程 嵌入式Linux小型化裁減23主要內(nèi)容嵌入式Linux系統(tǒng)基本概念Linux嵌入式Linux系統(tǒng)裁減與移植嵌入式Linux軟件開發(fā)嵌入式Linux小型化裁減24從何處開始?需要考慮的問題是否支持自己的硬件平臺有多少可選軟件、文件定制能力如何是否有完整文檔、新版本升級是否方便等等一系列問題??梢赃x擇的方法基于面向特定應(yīng)用的嵌入式Linux版本基于通用嵌入式Linux版本基于某通用Linux系統(tǒng)和Linux源代碼庫嵌入式Linux小型化裁減25Linux系統(tǒng)的軟件分層 使用使用C C庫的應(yīng)用程序庫的應(yīng)用程序C庫庫內(nèi)核內(nèi)核內(nèi)核內(nèi)核硬件硬件嵌入式Linux小型化裁減26內(nèi)核,C庫,Shell和實用

12、程序 典型的Linux系統(tǒng)包括3個主要的軟件層:Linux內(nèi)核、C庫和應(yīng)用程序; 內(nèi)核主要的功能包括內(nèi)存管理、進(jìn)程調(diào)度、設(shè)備驅(qū)動、文件系統(tǒng)、網(wǎng)絡(luò)協(xié)議棧和模塊管理等; 內(nèi)核之上是C庫,這一層負(fù)責(zé)把符合POSIX標(biāo)準(zhǔn)的API轉(zhuǎn)換成內(nèi)核可以識別的形式; 離硬件最遠(yuǎn)的是應(yīng)用程序?qū)?,?xì)分包含兩部分:系統(tǒng)程序,一般指運行系統(tǒng)所不可缺少的程序;用戶程序,給用戶提供各種功能;嵌入式Linux小型化裁減27嵌入式Linux系統(tǒng)構(gòu)建流程 裁減編譯內(nèi)核建立root文件系統(tǒng)制作系統(tǒng)映像安裝引導(dǎo)嵌入式Linux小型化裁減28第1步:裁減和編譯內(nèi)核獲得內(nèi)核源代碼根據(jù)硬件平臺獲得對應(yīng)的Linux系統(tǒng)源代碼從一個通用系統(tǒng),如

13、redhat系統(tǒng)獲得源代碼裁減編譯內(nèi)核的步驟配置內(nèi)核更新編譯文件1.編譯內(nèi)核嵌入式Linux小型化裁減29編譯內(nèi)核原則Linux內(nèi)核擁有靈活方便的配置功能,菜單分為,芯片組支持,外設(shè)支持,文件支持,網(wǎng)絡(luò)等,每類只將需要的內(nèi)容編譯進(jìn)內(nèi)核。根據(jù)目標(biāo)系統(tǒng)的硬件配置選擇模塊根據(jù)應(yīng)用目標(biāo)選擇其他功能模塊應(yīng)當(dāng)保證內(nèi)核只支持一種或是兩種必要的文件系統(tǒng),如ext2和minix;為支持內(nèi)存虛擬磁盤啟動,需要編譯內(nèi)核支持ram disk和initrd嵌入式Linux小型化裁減30第1步:裁減編譯內(nèi)核以root超級用戶登錄,進(jìn)入目錄/usr/src/linux。如果目標(biāo)系統(tǒng)和主機(jī)系統(tǒng)不是同一硬件平臺需要先建立交叉編

14、譯環(huán)境并獲得目標(biāo)系統(tǒng)的內(nèi)核源代碼#make menuconfig對內(nèi)核模塊進(jìn)行配置(也可以在X Window中運行make xconfig)。#make dep 更新配置文件#make bzImage (如果內(nèi)核不大則執(zhí)行#make zImage),執(zhí)行該命令后,將在/usr/src/linux/arch/i386/boot目錄下生成內(nèi)核文件bzImage(或zImage)。若配置中加入了模塊的支持(選項為M),還需要執(zhí)行#make modules和#make modules_install。生成內(nèi)核/usr/src/linux/arch/i386/boot/bzImage文件為內(nèi)核文件改名為

15、MiniKernel備用嵌入式Linux小型化裁減31第2步:建立root文件系統(tǒng) 什么是什么是root文件系統(tǒng)?文件系統(tǒng)? 一個完整的Linux系統(tǒng)除了內(nèi)核外,還必須有一個由C庫和系統(tǒng)應(yīng)用程序構(gòu)成的root文件系統(tǒng)。 一個root文件系統(tǒng)包括支持完整Linux系統(tǒng)運行的全部東西。 建立建立root文件系統(tǒng)的步驟文件系統(tǒng)的步驟 在主機(jī)中建立目標(biāo)系統(tǒng)的root文件系統(tǒng)目錄結(jié)構(gòu) 從代碼庫中挑選并裁減出適用的各種文件1.將root文件系統(tǒng)目錄中的所有內(nèi)容打包制作成映像嵌入式Linux小型化裁減32第2步:建立root文件系統(tǒng)root文件系統(tǒng)的內(nèi)容文件系統(tǒng)的內(nèi)容基本文件系統(tǒng)結(jié)構(gòu),至少含有目錄/dev、

16、/proc、/bin、/etc、/lib、/usr、/tmp ;最基本的系統(tǒng)應(yīng)用程序,如sh、ls、cp、mv等;最低限度的配置文件,如rc、inittab、fstab等;基本設(shè)備,如/dev/mem、/dev/ tty*、/dev/console;基本程序運行所需的C函數(shù)庫。嵌入式Linux小型化裁減33第2步:建立root文件系統(tǒng)建立目錄系統(tǒng)建立目錄系統(tǒng)以root用戶登錄開發(fā)主機(jī),在合適的目錄下(如根目錄下),用mkdir rootfs命令建立一個工作目錄rootfs。在rootfs/目錄下的內(nèi)容就是今后目標(biāo)系統(tǒng)根目錄(/)下的內(nèi)容。在當(dāng)前目錄下執(zhí)行cd rootfs進(jìn)入到rootfs目錄

17、中,然后用mkdir命令分別在rootfs目錄下建立以下目錄: /etc 放置系統(tǒng)配置文件; /sbin 放置重要的系統(tǒng)程序; /bin 放置系統(tǒng)基本應(yīng)用程序; /dev 設(shè)備文件的目錄;/proc proc文件系統(tǒng)所需目錄;/lib 準(zhǔn)備存放共享函數(shù)庫;/mnt 準(zhǔn)備掛載其他設(shè)備的目錄節(jié)點/usr 準(zhǔn)備放置用戶應(yīng)用程序。嵌入式Linux小型化裁減34第2步:建立root文件系統(tǒng) 建立目錄系統(tǒng)建立目錄系統(tǒng) /proc、/mnt和/usr在此情況下都是空的,只需要用mkdir創(chuàng)建它們即可。 /dev:設(shè)備文件需要用mknod產(chǎn)生。如果簡單起見用cp -dpR 參數(shù)開關(guān)來復(fù)制原系統(tǒng)的設(shè)備文件節(jié)點也

18、可以,例如cp -dpR /dev/mem /mnt/dev 。至少需要console、kmem、mem、null、ram、tty*等文件。 /etc:一般可以包含rc.d/* (系統(tǒng)啟動腳本)、fstab(列出要登錄的文件系統(tǒng))、inittab(包含啟動過程參數(shù)) 。嵌入式Linux小型化裁減35第2步:建立root文件系統(tǒng) 建立目錄系統(tǒng)建立目錄系統(tǒng)/bin和/sbin:這兩個目錄中包含有一些系統(tǒng)運行不可缺少的程序和大量實用程序,如ls、mv、cat、cp等。系統(tǒng)實用程序可以根據(jù)需要選擇拷貝,而系統(tǒng)運行不可缺少的一些程序必須拷貝過來,如init、getty、login、mount、bash等

19、。/lib: 必須有函數(shù)庫裝載器,這個裝載器或是ld.so (對 a.out 庫) 或是 ld-linux.so (對 ELF 庫)。如果有一個模塊化的內(nèi)核,你還得必須考慮需要加載的模塊。它們都位于/lib/modules。嵌入式Linux小型化裁減36第2步:建立root文件系統(tǒng)裁減裁減root文件系統(tǒng)文件系統(tǒng)動態(tài)庫的裁減精簡系統(tǒng)應(yīng)用程序精簡嵌入式系統(tǒng)專用程序嵌入式Linux小型化裁減37第2步:建立root文件系統(tǒng)裁減裁減root文件系統(tǒng)文件系統(tǒng)動態(tài)庫的裁減Linux的C庫glibc就是系統(tǒng)的動態(tài)連接庫,相當(dāng)于Windows系統(tǒng)的系統(tǒng)dll動態(tài)連接庫。用軟件工具掃描系統(tǒng)所需要的庫,然后進(jìn)行

20、刪減。采用精簡版本的C庫,目前可以選擇的開源動態(tài)庫有l(wèi)ibc5、uclibc、dietlibc等,但需要測試兼容性。 嵌入式Linux小型化裁減38第2步:建立root文件系統(tǒng)精簡系統(tǒng)應(yīng)用程序Shell是必須的,采用Shell腳本開發(fā)的程序因為是解釋性的,所以尺寸往往只需要幾百個字節(jié),而完成相同功能的C程序編譯后都至少要幾KB。 /bin和/sbin目錄下的ls等各種系統(tǒng)實用程序需要精簡嵌入式Linux小型化裁減39第2步:建立root文件系統(tǒng)用busybox精簡系統(tǒng)應(yīng)用程序Busybox 是 Debian GNU/Linux 的Bruce Perens 首先開發(fā)的。Busybox 編譯出一個

21、單個的獨立執(zhí)行程序,就叫做 busybox。但是它可以根據(jù)配置,執(zhí)行 ash shell 的功能,以及幾十個各種小應(yīng)用程序的功能。采用busybox作為Shell和系統(tǒng)實用程序的精簡并不會改變系統(tǒng)的使用方式,因為編譯busybox除了生成busybox這個可執(zhí)行程序外,還為每個busybox替代的系統(tǒng)實用程序生成了一個符號鏈接。例如,對于ls實用程序,會生成符號連接ln -s /bin/busybox /bin/ls。 嵌入式Linux小型化裁減40第2步:建立root文件系統(tǒng)精簡嵌入式系統(tǒng)專用程序原則一,沒有用處的軟件一律不安裝在嵌入式系統(tǒng)中。原則二,如果某軟件模塊是必須的,則尋找是否有相同

22、功能的嵌入式版本的軟件可以作為其替代品。如用t d,boa等替代龐大的Apache。 原則三,如果只能選擇某軟件模塊,則通過重新配置和編譯優(yōu)化來進(jìn)行裁減。如采用動態(tài)鏈接庫,優(yōu)化編譯選項等原則四,對于自行開發(fā)的軟件,在設(shè)計、開發(fā)和編譯的時候都要針對嵌入式系統(tǒng)進(jìn)行優(yōu)化。調(diào)用精簡的C庫函數(shù)等嵌入式Linux小型化裁減41第3步:制作root文件系統(tǒng)映像軟件包名稱軟件包名稱版本版本許可證許可證描述描述thttpd2.15-1BSD一個小型、快速而且安全的Web服務(wù)器,可以適合大多數(shù)Web服務(wù)器要求,運行速度也比Apache要快。busybox1.00GPL一個Linux系統(tǒng)實用程序的微型集合。它為嵌入

23、式系統(tǒng)提供符合POSIX標(biāo)準(zhǔn)的環(huán)境,基本上可以滿足多數(shù)用戶的需要。glibc2.3.3LGPL共享庫:標(biāo)準(zhǔn)C庫、標(biāo)準(zhǔn)數(shù)學(xué)庫等,是系統(tǒng)運行的基本成分。對嵌入式環(huán)境進(jìn)行了優(yōu)化編譯。tinylogin1.4GPL它用于登錄嵌入式系統(tǒng)、接受其驗證身份、為其修改密碼,并能維護(hù)其用戶和用戶組。為了增強系統(tǒng)安全性,它還支持影子口令。對嵌入式系統(tǒng)上的busybox是極好的補充。lilo21.4-4BSD License引導(dǎo)Linux系統(tǒng)的一個基本程序。Lilo可以從軟盤或是硬盤上把Linux內(nèi)核裝入,引導(dǎo)內(nèi)核,并把系統(tǒng)控制權(quán)交給內(nèi)核。Lilo也可以引導(dǎo)其他的操作系統(tǒng)。sgap2.0自主開發(fā)應(yīng)用由切換控制、映射

24、協(xié)議和幾個不同的網(wǎng)絡(luò)應(yīng)用服務(wù)模塊組成,提供網(wǎng)絡(luò)安全隔離和可控信息交換功能。net-tools1.54-1GPL基本的網(wǎng)絡(luò)配置工具,如netstat,route等。netkit-base0.16-2BSD基本的網(wǎng)絡(luò)實用工具,如ping,inetd等。netkit-telnet0.14-3BSD包括命令行的telnet終端和一個telnet守護(hù)進(jìn)程。嵌入式Linux小型化裁減42第3步:制作root文件系統(tǒng)映像集成好的root文件系統(tǒng)最終要安裝到嵌入式系統(tǒng)目標(biāo)板上去 。精簡的root文件系統(tǒng)其體積比起一般配備的只有十幾MB字節(jié)大小的flash存儲器來講還是太大。flash存儲器的特點不允許系統(tǒng)像讀

25、寫磁盤驅(qū)動器那樣反復(fù)讀寫它。很多專用嵌入式Linux,如LRP等,都有自己獨特的系統(tǒng)映像打包、組織和管理方式,但其原理都大同小異。 嵌入式Linux小型化裁減43第3步:制作root文件系統(tǒng)映像在開發(fā)主機(jī)中建立一個loop設(shè)備的臨時掛接點,準(zhǔn)備后面用來暫時掛載目標(biāo)嵌入式系統(tǒng)的root文件系統(tǒng):mkdir /mnt/loop 建立一個大小為的臨時文件并將其清零。這個文件會被用來制作root文件系統(tǒng)的映像,因此其大小是根據(jù)前面對root文件系統(tǒng)裁減的情況確定的,可以根據(jù)實際情況進(jìn)行調(diào)整:dd if=/dev/zero of=/tmp/loop_tmp bs=1k count=6600 在開發(fā)主機(jī)上

26、將一個loop設(shè)備與臨時文件聯(lián)系起來:losetup /dev/loop0 /tmp/loop_tmp在這個loop設(shè)備上建立文件系統(tǒng),Linux內(nèi)核識別兩種可以直接拷貝到ramdisk的文件系統(tǒng),它們是minix和ext2,ext2性能更好,因此我們建立ext2文件系統(tǒng):mke2fs /dev/loop0嵌入式Linux小型化裁減44第3步:制作root文件系統(tǒng)映像將loop設(shè)備上的虛擬盤掛在前面建立掛接節(jié)點/mnt/loop上:mount /dev/loop0 /mnt/loop -t ext2將制作好的root文件系統(tǒng)所有內(nèi)容拷貝到所掛載的節(jié)點上: cp -a /rootfs/* /mn

27、t/loop卸下掛接點,刪除建立的掛接點,再取消loop設(shè)備與臨時掛接點的聯(lián)系:umount /mnt/looprmdir /mnt/loop losetup -d /dev/loop0壓縮文件系統(tǒng)后,就擁有了一個目標(biāo)嵌入式系統(tǒng)的root文件系統(tǒng)的壓縮映像,最后刪除最初建立的臨時文件:dd if=/tmp/loop_tmp | gzip -9 rootfs.gzrm -f /tmp/loop_tmp檢查壓縮后的root文件映像的大小,并比較目標(biāo)系統(tǒng)的flash尺寸,如果超出了大小,還得進(jìn)一步裁減root文件系統(tǒng)后重新制作映像:ls 嵌入式Linux小型化裁減45第4步:安裝引導(dǎo) 嵌入式Linu

28、x系統(tǒng)啟動過程 嵌入式Linux小型化裁減46第4步:安裝引導(dǎo)用ext2文件系統(tǒng)格式化flash磁盤。因為flash磁盤是裝在第二個IDE接口上的,所以它是hdc設(shè)備,格式化它的第一個分區(qū):mke2fs /dev/hdc1 掛載flash磁盤到開發(fā)系統(tǒng)上/mnt/temp的掛載節(jié)點上:mount /dev/hdc1 /mnt/temp/ 在flash磁盤上建立用來存放映像的目錄:mkdir /mnt/temp/boot mkdir /mnt/temp/etc拷貝先前編譯好的嵌入式Linux的內(nèi)核:cp /usr/src/linux/arch/i386/boot/MiniKernel /mnt/

29、temp/boot拷貝安裝Lilo需要的文件:cp /boot/boot.b /mnt/temp/boot/cp /etc/lilo.conf /mnt/temp/etc/拷貝已經(jīng)制作好的root文件系統(tǒng)的映像文件:cp /rootfs/rootfs.gz /mnt/temp/ 嵌入式Linux小型化裁減47第4步:安裝引導(dǎo)安裝后的根目錄結(jié)構(gòu)(/mnt/temp/) boot/ etc/RAMDisk和initrdRAMDisk就是把RAM中的一塊空間拿出來作為磁盤設(shè)備來用,initrd使用了RAMDisk技術(shù);使用initrd的理由:加載內(nèi)核模塊,驅(qū)動存放根文件系統(tǒng)的介質(zhì);相對于訪問軟盤,R

30、AMDisk的速度快得多;嵌入式Linux小型化裁減48第4步:安裝引導(dǎo)一般嵌入式系統(tǒng)燒寫flash的方法用專用儀器燒寫;啟動bootloader后通過通信口燒寫;通過BDM,JTAG等調(diào)試端口燒寫X86系統(tǒng)CF卡或者DOM等都可以作為硬盤,通過IDE接口掛接在主機(jī)系統(tǒng)上進(jìn)行讀寫。嵌入式Linux小型化裁減49RAMDisk和initrd RAMDisk就是把RAM中的一塊空間拿出來作為磁盤設(shè)備來用,顯然這會浪費內(nèi)存; initrd使用了RAMDisk技術(shù),常用于軟盤啟動中; 使用initrd的理由:加載內(nèi)核模塊,驅(qū)動存放根文件系統(tǒng)的介質(zhì);相對于訪問軟盤,RAMDisk的速度快得多;可以將軟驅(qū)

31、空閑出來;嵌入式Linux小型化裁減50第4步:安裝引導(dǎo)腳本文件 #begin#default=linuxboot=/dev/hdcdisk=/dev/hdcimage=/boot/MiniKernellabel=linuxread-writeroot=/dev/ram0append= console=ttyS1,9600n8 ramdisk_size=65536 load_ramdisk=1#end#嵌入式Linux小型化裁減51第4步:安裝引導(dǎo)在flash磁盤上安裝Lilo引導(dǎo)程序,注意參數(shù)-r指明了Lilo引導(dǎo)程序安裝的設(shè)備:lilo -v -r /mnt/temp/卸載flash磁盤,

32、準(zhǔn)備進(jìn)行測試:umount /mnt/temp/嵌入式Linux小型化裁減52主要內(nèi)容嵌入式Linux系統(tǒng)基本概念Linux嵌入式Linux系統(tǒng)裁減與移植嵌入式Linux軟件開發(fā)嵌入式Linux小型化裁減5316.4.1 開發(fā)系統(tǒng)與目標(biāo)系統(tǒng)開發(fā)系統(tǒng)與目標(biāo)系統(tǒng) 以太網(wǎng)Linux/PC服務(wù)器Windows工作站Linux/PC工作站Internet串行線BDM電纜串行線開發(fā)板開發(fā)板JTAG電纜嵌入式Linux小型化裁減54服務(wù)器軟件系統(tǒng)Redhat linux 裝上所有的網(wǎng)絡(luò)服務(wù)軟件嵌入式linux應(yīng)用系統(tǒng)開啟nfs, telnet, ftp 服務(wù)Nfs 給目標(biāo)板 ,telnet與ftp給wind

33、ows客戶機(jī)嵌入式Linux小型化裁減55開發(fā)流程開發(fā)模式編寫驅(qū)動程序配置、編譯內(nèi)核下載、引導(dǎo)內(nèi)核用NFS文件共享調(diào)試應(yīng)用程序嵌入式Linux小型化裁減56開發(fā)流程固化模式應(yīng)用程序 + 驅(qū)動程序構(gòu)建Ramdisk編譯內(nèi)核燒寫Flash嵌入式Linux小型化裁減57開始新工程編輯源代碼交叉編譯 連接仿真調(diào)試程序下載臺式/筆記本式PC機(jī)并口JTAG仿真器網(wǎng)絡(luò)接口JTAG接口USB接口串口0 開發(fā)板串口USB接口以太網(wǎng)口stubDebug DvkCPU處理器執(zhí)行監(jiān)測結(jié)果超級終端 開發(fā)板實驗流程結(jié)束嵌入式Linux小型化裁減5816.4.1 開發(fā)系統(tǒng)與目標(biāo)系統(tǒng)開發(fā)系統(tǒng)與目標(biāo)系統(tǒng) 用網(wǎng)絡(luò)文件系統(tǒng)掛接應(yīng)用

34、軟件用網(wǎng)絡(luò)文件系統(tǒng)掛接應(yīng)用軟件設(shè)置Linux服務(wù)器的IP地址為。root用戶登錄后用netconf命令配置支持網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器。設(shè)置輸出目錄是/usr/cross/project,而且使得主機(jī)IP為可讀寫。保存設(shè)置后運行ntsysv使NSF啟動。在編譯目標(biāo)系統(tǒng)內(nèi)核時選擇支持可讀寫NSF文件系統(tǒng),并在其root文件系統(tǒng)的/etc/fstab文件中加入一行::/usr/cross/project /mnt/nfs nfs設(shè)目標(biāo)系統(tǒng)的IP地址為。1.當(dāng)目標(biāo)系統(tǒng)啟動后,從開發(fā)主機(jī)telnet到目標(biāo)系統(tǒng),執(zhí)行mount a命令,在目標(biāo)系統(tǒng)中的/mnt/nfs目錄下就會掛載開發(fā)系統(tǒng)

35、中的輸出目錄。嵌入式Linux小型化裁減5916.4.2 交叉編譯環(huán)境開發(fā)應(yīng)用程序如同嵌入式系統(tǒng)構(gòu)建那樣,同樣遵循編輯,編譯,最后下載到目標(biāo)板運行的過程。 在開發(fā)主機(jī)的開發(fā)目錄/usr/cross下至少存在如下目錄結(jié)構(gòu)bin/ 編譯目標(biāo)系統(tǒng)運行程序的編譯器,調(diào)試器等工具powerpc-linux/include/ 編譯目標(biāo)系統(tǒng)應(yīng)用程序需要的頭文件powerpc-linux/lib/ 編譯目標(biāo)系統(tǒng)應(yīng)用程序需要的運行庫project/ 開發(fā)目標(biāo)系統(tǒng)應(yīng)用程序的工作目錄嵌入式Linux小型化裁減6016.4.2 交叉編譯環(huán)境(1)在開發(fā)系統(tǒng)的/usr/coss/project下編輯文件:/*begin*/#

溫馨提示

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

評論

0/150

提交評論