第5章03:嵌入式交叉編譯環(huán)境及系統(tǒng)裁剪(P56Bootloader程序結(jié)構(gòu) P71內(nèi)核裁剪 )_第1頁(yè)
第5章03:嵌入式交叉編譯環(huán)境及系統(tǒng)裁剪(P56Bootloader程序結(jié)構(gòu) P71內(nèi)核裁剪 )_第2頁(yè)
第5章03:嵌入式交叉編譯環(huán)境及系統(tǒng)裁剪(P56Bootloader程序結(jié)構(gòu) P71內(nèi)核裁剪 )_第3頁(yè)
第5章03:嵌入式交叉編譯環(huán)境及系統(tǒng)裁剪(P56Bootloader程序結(jié)構(gòu) P71內(nèi)核裁剪 )_第4頁(yè)
第5章03:嵌入式交叉編譯環(huán)境及系統(tǒng)裁剪(P56Bootloader程序結(jié)構(gòu) P71內(nèi)核裁剪 )_第5頁(yè)
已閱讀5頁(yè),還剩86頁(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)介

第4章:嵌入式交叉編譯環(huán)境及系統(tǒng)裁剪4.1 嵌入式交叉編譯環(huán)境構(gòu)建4.2 Bootloader程序4.3

Linux操作系統(tǒng)的裁剪和編譯第4章:嵌入式交叉編譯環(huán)境及系統(tǒng)裁剪4.1 嵌入式交叉編譯環(huán)境構(gòu)建4.2 Bootloader程序4.3

Linux操作系統(tǒng)的裁剪和編譯

在通用計(jì)算機(jī)上開(kāi)發(fā)軟件時(shí),一般是軟件開(kāi)發(fā)環(huán)境(編譯、調(diào)試)與軟件運(yùn)行環(huán)境相同。思考以下問(wèn)題:

(1)什么叫交叉編譯?(2)為什么要使用交叉編譯?1、交叉編譯概述交叉開(kāi)發(fā)(CrossDeveloping)的模式是指:

開(kāi)發(fā)系統(tǒng)在PC機(jī)(一般稱為宿主機(jī)或Host)上,即完成軟件的編輯、編譯、鏈接等工作;軟件的運(yùn)行是在嵌入式設(shè)備(一般稱為目標(biāo)機(jī)或Target)上。宿主機(jī)目標(biāo)機(jī)★交叉編譯定義:交叉編譯是指:在宿主機(jī)上進(jìn)行軟件編輯、編譯、鏈接等,并生成能夠在目標(biāo)機(jī)上運(yùn)行的可執(zhí)行程序的過(guò)程。宿主機(jī)目標(biāo)機(jī)

使用交叉編譯的原因:由于嵌入式系統(tǒng)的硬件資源有限,不能安裝編譯所需要的資源。(1)實(shí)時(shí)在線仿真(2)模擬調(diào)試(3)軟件調(diào)試(3)OCD調(diào)試2、嵌入式常用的調(diào)試方法

(1)實(shí)時(shí)在線仿真(ICE)方式實(shí)時(shí)在線仿真(In-CircuitEmulator,ICE)是一種用于替代目標(biāo)上CPU的設(shè)備,可以執(zhí)行目標(biāo)機(jī)CPU指令,能夠?qū)?nèi)部的信號(hào)輸出到被控的目標(biāo)機(jī),ICE上的內(nèi)存也可以被映射到用戶的程序空間。這樣,即使目標(biāo)機(jī)不存在,也可以進(jìn)行代碼調(diào)試。實(shí)時(shí)在線仿真具有以下優(yōu)缺點(diǎn):優(yōu)點(diǎn):功能非常強(qiáng)大,軟硬件均可做到完全實(shí)時(shí)在線調(diào)試。缺點(diǎn):價(jià)格昂貴。

(2)模擬調(diào)試調(diào)試工具和待調(diào)試的嵌入式軟件都在宿主機(jī)上運(yùn)行,由宿主機(jī)提供一個(gè)模擬的目標(biāo)運(yùn)行環(huán)境,可以進(jìn)行語(yǔ)法和邏輯上的調(diào)試。優(yōu)點(diǎn):簡(jiǎn)單方便,不需要目標(biāo)機(jī),成本低。缺點(diǎn):功能非常有限,無(wú)法實(shí)時(shí)調(diào)試。(3)軟件調(diào)試宿主機(jī)和目標(biāo)機(jī)通過(guò)某種接口(通常是串口)連接,宿主機(jī)上提供調(diào)試界面,待調(diào)試軟件下載到目標(biāo)機(jī)上運(yùn)行。這種方式的先決條件是在宿主機(jī)和目標(biāo)機(jī)之間建立起通信聯(lián)系(目標(biāo)機(jī)上需要固化監(jiān)控程序)

將一段稱為ROMMonitor的程序固化在目標(biāo)機(jī)上,負(fù)責(zé)監(jiān)控目標(biāo)機(jī)上被調(diào)試程序的運(yùn)行。優(yōu)點(diǎn):純軟件,價(jià)格較低,簡(jiǎn)單,軟件調(diào)試能力較強(qiáng)。缺點(diǎn):需要事先在目標(biāo)機(jī)上燒寫監(jiān)控程序(往往需多次試驗(yàn)才能成功),且目標(biāo)機(jī)能正常工作,功能有限,特別是硬件調(diào)試能力較差。

(4)OCD方式

OCD(片上調(diào)試器)將ICE提供的實(shí)時(shí)跟蹤和運(yùn)行控制分開(kāi),使用很少的實(shí)時(shí)跟蹤功能,而大量使用的運(yùn)行控制放到目標(biāo)機(jī)的CPU核內(nèi),由一個(gè)專門的調(diào)試控制邏輯模塊來(lái)實(shí)現(xiàn),并用一個(gè)專用的串行信號(hào)接口開(kāi)放給用戶。這樣,OCD可以提供ICE80%的功能,成本還不到ICE的20%。

由于歷史原因,OCD有許多不同的實(shí)現(xiàn)方式,標(biāo)準(zhǔn)并不統(tǒng)一。比較典型的有:IBM和TI公司提出的連接測(cè)試存取組(JointTestActionGroup,JTAG)。Motorola公司提出的后臺(tái)調(diào)試模式(BackgroundDebuggingMethod,BDM)★JTAG仿真器的功能有2種.第一:是完成程序仿真調(diào)試;第二:完成對(duì)Flash存儲(chǔ)器的燒寫。本課程使用的調(diào)試方法是:

軟件調(diào)試方式。其中:ROMMonitor程序是利用JTAG寫入Flash存儲(chǔ)器。嵌入式交叉編譯硬件連接圖串口線網(wǎng)線JTAG3、交叉編譯環(huán)境構(gòu)建

交叉編譯環(huán)境構(gòu)建包括2個(gè)部分:第一部分是:宿主機(jī)(嵌入式交叉編譯環(huán)境)

PC+Linux+交叉編譯器+庫(kù)函數(shù)。第二部分是:目標(biāo)機(jī)(嵌入式軟件運(yùn)行環(huán)境)實(shí)驗(yàn)箱+引導(dǎo)程序+嵌入式操作系統(tǒng)。

方案1:宿主機(jī)上應(yīng)安裝的軟件有:Linux操作系統(tǒng)軟件開(kāi)發(fā)工具包交叉編譯工具包宿主機(jī)交叉編譯軟件配置

方案2:宿主機(jī)上應(yīng)安裝的軟件有:Windows操作系統(tǒng)+虛擬機(jī)(Linux操作系統(tǒng))+Samba服務(wù)軟件開(kāi)發(fā)工具包交叉編譯工具包串口線(終端方式操作)網(wǎng)線(將硬盤,讓實(shí)驗(yàn)箱使用)宿主機(jī)(host)目標(biāo)板(target)1、在宿主機(jī)上,安裝好Linux操作系統(tǒng)

Linux操作系統(tǒng),如果安裝了GCC編譯。就可以進(jìn)行C語(yǔ)言程序編譯。2、安裝NFS服務(wù)器3、安裝交叉編譯軟件包主要目的是:提供一套與目標(biāo)機(jī)一致的庫(kù)函數(shù)和編譯器。要實(shí)現(xiàn)交叉編譯需要的軟件有:交叉編譯工具(一組編譯器、庫(kù)函庫(kù)和頭文件)安裝步驟:一般情況下,公司會(huì)提供一套開(kāi)發(fā)工具光盤。光盤中有一個(gè)安裝批處理文件install.sh。運(yùn)行安裝程序后,會(huì)自動(dòng)新建2個(gè)目錄。arm2410s目錄主要存放:linux內(nèi)核源代碼、各種實(shí)驗(yàn)源程序等。opt目錄主要存放:交叉編譯器、資源庫(kù)、頭文件等。1、交叉主編譯器叫:armv4l-unknown-linux-gcc2、主編譯器存放的目錄:/opt/host/armv4l/bin/3、自動(dòng)搜索主編譯器的方法:在文件/root/.bash_profile中,修改PATH變量,變成

PATH=$PATH:$HOME/bin:/opt/host/armv4l/bin/

存盤后運(yùn)行/root/.bash_profile文件使其生效。開(kāi)發(fā)環(huán)境相關(guān)說(shuō)明:Linux開(kāi)發(fā)軟件的目錄介紹/arm2410s/exp各種實(shí)驗(yàn)的源代碼/arm2410s/miniguiminigui應(yīng)用程序和庫(kù)的源代碼/arm2410s/kernel-2410s2410-s平臺(tái)Linux內(nèi)核源代碼/arm2410s/img/vivi系統(tǒng)引導(dǎo)程序/arm2410s/img/zImageARMLinux-2.4內(nèi)核壓縮映象文件/arm2410s/img/root.cramfs根文件系統(tǒng)象文件/arm2410s/img/yaffs.tar.bz2demos演示程序的壓縮文件/arm2410s/kernel-2410s/include交叉編譯時(shí)頭文件目錄/opt/host/armv4l/bin/armv4l-unknown-linux-gcc主編譯器在進(jìn)行嵌入式軟件開(kāi)發(fā)調(diào)試時(shí),需要使用工具充當(dāng)目標(biāo)機(jī)的信息輸出監(jiān)視器,這個(gè)工具通常是串口通信軟件。(1)如果宿主機(jī)安裝的是Windows操作系統(tǒng),則可以選擇超級(jí)終端串口通信軟件;(2)如果宿主機(jī)安裝的是Linux操作系統(tǒng),則可以選擇minicom串口通信軟件。4、串口通信軟件配置Windows超級(jí)終端設(shè)置

首先需要連接串口,進(jìn)行串口設(shè)置。連接串口至PC相應(yīng)接口,另一端連接在硬件平臺(tái)的Uart1接口上。確認(rèn)連接無(wú)誤。打開(kāi)超級(jí)終端軟件,進(jìn)入如下圖1所示界面:Windows超級(jí)終端設(shè)置填寫連接名,選擇圖標(biāo),點(diǎn)擊“確定”,如下圖2所示。

Windows超級(jí)終端設(shè)置連接時(shí)選擇通訊使用串口,有的PC可能有兩個(gè)串口,使用時(shí)請(qǐng)確認(rèn)選擇已連接到平臺(tái)的串口,可以選擇COM1、COM2...,點(diǎn)擊“確定”,出現(xiàn)圖3畫面。

Windows超級(jí)終端設(shè)置修改波特率為38400bps或115200bps(根據(jù)NBOOT中調(diào)試波特率設(shè)置),數(shù)據(jù)流控制為“無(wú)”(注意:這樣可以從終端輸入字符),結(jié)果如下圖4所示:Windows超級(jí)終端設(shè)置之后點(diǎn)擊“確定”。開(kāi)啟硬件平臺(tái)電源,監(jiān)視超級(jí)終端輸出,等待系統(tǒng)啟動(dòng),如下圖5所示。選項(xiàng):(1)選串口。在linux系統(tǒng)中COM1的設(shè)備文件名為/dev/ttyS0。(2)速度等參數(shù)?!?152008N1”Linux系統(tǒng)超級(jí)終端設(shè)置5、Flash程序燒寫

在宿主機(jī)上編譯好引導(dǎo)程序、Linux系統(tǒng)內(nèi)核、根文件系統(tǒng)、應(yīng)用程序之后,然后,將它們燒寫到目標(biāo)機(jī)的Flash中。比較典型的是將Flash分成5個(gè)分區(qū),分別用于保存引導(dǎo)程序(BootLoader)、啟動(dòng)參數(shù)、系統(tǒng)內(nèi)核、根文件系統(tǒng)和應(yīng)用程序等,1、確定flash空間如何分配。2、準(zhǔn)備好以下軟件:引導(dǎo)程序(vivi)-----------vivi參數(shù)(param)內(nèi)核(kernel)--------------zImage根文件系統(tǒng)(root)--------root.cramfs應(yīng)用程序----------------------yaffs.tar(3)硬件連接Windows操作系統(tǒng)(4)安裝驅(qū)動(dòng)程序(P99)(5)設(shè)置超級(jí)終端(P99)(6)燒寫vivi步驟第1步:

>sjf2410/f:vivi第2步:分區(qū)

vivi>bonpart0128k192k1216k4288k:m64704k第3步:查看分區(qū)(bon分區(qū))

vivi>bonpartinfoNooffsetsizeflagsbad0:0x000000000x000200000000

00000128k1:0x000200000x000100000000

0000064k2:0x000300000x001000000000

000001M3:0x001300000x003000000000

000003M4:0x004300000x03b0000000000001059M5:0x03F300000x000cc000000000000816k第4步:查看分區(qū)(mtd分區(qū))

vivi>partshowNameoffsetsizeflagsvivi0x000000000x000200000128kparam0x000200000x00010000064kkernel0x000300000x0010000001Mroot0x001300000x0030000043Myaffs0x004300000x03b00000859Mucos0x03F300000x000cc0000816k第6步:分區(qū)后,flash內(nèi)的數(shù)據(jù)全部被刪除,所以要重新寫入vivi,可以采用前面的方法,也可以用

vivi>loadflashvivix當(dāng)出現(xiàn):Readyfordownloadingusingxmodem…Waiting…第6步:分區(qū)后,flash內(nèi)的數(shù)據(jù)全部被刪除,所以要重新寫入vivi,可以采用前面的方法,也可以用

vivi>loadflashvivix第7步:燒寫入內(nèi)核

vivi>loadflashkernelx第8步:燒寫入根文件系統(tǒng)

vivi>loadflashrootx第9步:燒寫入根應(yīng)用程序不使用串口,而用ftf服務(wù)器第4章:嵌入式交叉編譯環(huán)境及系統(tǒng)裁剪4.1 嵌入式交叉編譯環(huán)境構(gòu)建4.2 Bootloader程序4.3

Linux操作系統(tǒng)的裁剪和編譯

思考:系統(tǒng)加電后執(zhí)行的第一段代碼是什么?這段代碼一般保存在什么位置?一、初識(shí)BootLoadert程序

★從Linux系統(tǒng)角度看,通??梢苑譃樗膫€(gè)層次,即:引導(dǎo)加載程序(BootLoader)Linux內(nèi)核根文件系統(tǒng)用戶應(yīng)用程序嵌入式軟件系統(tǒng)分四層

嵌入式系統(tǒng)的BootLoader程序相當(dāng)于PC中的什么程序?相當(dāng)于:BIOS+MBR

★大多數(shù)BootLoader程序都包括兩種不同的操作模式:?jiǎn)?dòng)加載模式(Bootloading)下載模式(Downloading)1、按Enter按進(jìn)行啟動(dòng)加載模式。2、按其它鍵進(jìn)行下載模式。1、啟動(dòng)加載模式。2、下載模式?!锵螺d模式能夠做什么?1、分區(qū)2、從宿主機(jī)上下載文件到SDRAM或FLASH3、引導(dǎo)系統(tǒng)查看FLASH分區(qū)命令(partshow)

★BootLoader程序的結(jié)構(gòu)框架分兩部分:Stage1(用匯編語(yǔ)言來(lái)實(shí)現(xiàn),主要進(jìn)行設(shè)備的初始化)Stage2下載模式(用C語(yǔ)言來(lái)實(shí)現(xiàn),增強(qiáng)程序的移植性和可讀性)二、BootLoadert程序結(jié)構(gòu)Stage1通常包括以下步驟:硬件設(shè)備初始化為Stage2準(zhǔn)備RAM空間拷貝Stage2到RAM中設(shè)置好堆棧跳轉(zhuǎn)到Stage2的入口BootLoader程序的結(jié)構(gòu)框架Stage2通常包括以下步驟:初始化本階段使用到的硬件設(shè)備檢測(cè)系統(tǒng)內(nèi)存映射(MemoryMap)

將Kernel和根文件系統(tǒng)從Flash上讀到RAM空間設(shè)置內(nèi)核啟動(dòng)參數(shù)引導(dǎo)內(nèi)核BootLoader程序的結(jié)構(gòu)框架常用的引導(dǎo)程序有:u-bootBlobARMbootRedBootvivi三、常用的BootLoadert程序(1)U-BootU-Boot,全稱

UniversalBootLoader,是遵循GPL條款的開(kāi)放源碼項(xiàng)目。支持的操作系統(tǒng):Linux,VxWorks,QNX等。支持的處理器:ARM、PowerPC、MIPS、

x86等。源碼下載:http://(2)BlobBlob是BootLoaderObject的縮寫。它遵循GPL,源泉代碼完全開(kāi)放。

Blob最初是為一塊專用開(kāi)發(fā)板寫的(處理器是StrongARMSA-1100)?,F(xiàn)在Blob已經(jīng)被移植到了很多CPU上。源碼下載:http:///projects/blob(3)ARMBoot

Armboot是一個(gè)bootloader,是為基于ARM或者StrongARMCPU的嵌入式系統(tǒng)所設(shè)計(jì)的。它支持多種類型的Flash。源碼下載:http:///projects/armboot(4)RedBoot

Redboot

是RedHat公司開(kāi)發(fā)的一個(gè)獨(dú)立運(yùn)行在嵌入式系統(tǒng)上的BootLoader程序,是目前比較流行的一個(gè)功能、可移植性好的BootLoader。源碼下載:http:///rdboot(5)vivi

vivi

是韓國(guó)mizi

公司開(kāi)發(fā)的bootloader,適用于ARM9處理器。目前實(shí)驗(yàn)箱上使用的Bootloader是vivi源碼下載:http://vivi(下載模式)使用的典型命令load:用于加載文件到內(nèi)存或Flash中part:顯示Flash的分區(qū),包括vivi,kernel,rootfs等的位置param:修改vivi的參數(shù),如核心命令行參數(shù)flash:管理flash。boot:?jiǎn)?dòng)Linux核心1、vivi結(jié)構(gòu)

vivi的結(jié)構(gòu)分為兩個(gè)階段:Stage1的代碼在vivi目錄下的arch/s3c2410/head.s中,Stage2的代碼從vivi目錄下init/main.c的main函數(shù)開(kāi)始。四、vivi的裁剪與編譯Stage1完成如下任務(wù):(1)關(guān)閉WatchDog;(2)禁止所有終端;(3)初始化系統(tǒng)時(shí)鐘;(4)初始化內(nèi)存控制寄存器;(5)檢查是否從掉電模式喚醒,如果是,則調(diào)用WachupStart函數(shù)進(jìn)行處理;(6)點(diǎn)亮所有LED;(7)初始化UART0;(8)將vivi的代碼從NANDFlash復(fù)制到SDRAM中。Stage2完成如下任務(wù):(1)打印vivi的信息;(2)調(diào)用初始化函數(shù)。(3)boot_or_vivi():判斷是否按下回車鍵,若按下,則進(jìn)入vivishell;若沒(méi)有,則執(zhí)行boot命令,啟動(dòng)內(nèi)核。(4)boot命令執(zhí)行后,找到kernel分區(qū),并找它的偏移量和大小,執(zhí)行boot_kernel()函數(shù),復(fù)制內(nèi)核映像。(4)設(shè)置Linux啟動(dòng)參數(shù),打印“NowBootingLinux…”。(5)調(diào)用call_linux()函數(shù)啟動(dòng)內(nèi)核。在vivi源程序目錄下,使用以下命令:#makedistclean#makemenuconfig#make生成文件vivi2、vivi配置及編譯第4章:嵌入式交叉編譯環(huán)境及系統(tǒng)裁剪4.1 嵌入式交叉編譯環(huán)境構(gòu)建4.2 Bootloader程序4.3

Linux操作系統(tǒng)的裁剪和編譯什么叫Linux移植??jī)?nèi)核為什么要移植?如何移植?1、把Linux操作系統(tǒng)針對(duì)具體的目標(biāo)平臺(tái)做必要的改寫之后,安裝到該目標(biāo)平臺(tái)使其正確運(yùn)行,這就叫移植。2、因?yàn)椴煌那度胧较到y(tǒng)使用的微處理器不同(體系結(jié)構(gòu)不同),再加上硬件設(shè)計(jì)時(shí),可能存儲(chǔ)器安排的地址也不同。因此要根據(jù)系統(tǒng)的體系結(jié)構(gòu)、硬件的結(jié)構(gòu)來(lái)修改源代碼,否則系統(tǒng)不能正確運(yùn)行。一、內(nèi)核的裁剪與編譯

通常對(duì)Linux源碼的修改工作難度較大,它要求不僅對(duì)Linux內(nèi)核結(jié)構(gòu)要非常熟悉,還要對(duì)目標(biāo)平臺(tái)的硬件結(jié)構(gòu)非常熟悉。所以這部分工作一般由目標(biāo)平臺(tái)提供商來(lái)完成。例如ARM平臺(tái),它的這部分工作就是由ARM公司的工程師完成的。我們所做的就是:下載相關(guān)版本的Linux內(nèi)核補(bǔ)丁(Patch);然后將它打到內(nèi)核上,最后進(jìn)行交叉編譯就行。內(nèi)核為什么要裁剪?如何裁剪?1、因?yàn)榍度胧较到y(tǒng)的硬件資源有限,一般不用的軟件是不安裝到系統(tǒng)中。2、使用makemenuconfig命令進(jìn)行裁剪。[][*]不選選中<M><*><>以模塊化方式編譯內(nèi)核直接編譯到內(nèi)核不編譯生成內(nèi)核映像文件zImage的過(guò)程1、makemenuconfig

內(nèi)核裁剪2、makeclean清理以前已生成的目標(biāo)文件3、makedep

編譯變量依賴關(guān)系4、makezImage

生成內(nèi)核映像文件zImage本節(jié)的主要內(nèi)容:1、根文件系統(tǒng)的功能是什么?2、Linux常用目錄及其作用?3、BusyBox工具的功能是什么?4、根文件系統(tǒng)的創(chuàng)建過(guò)程?二、根文件系統(tǒng)的構(gòu)建1、根文件系統(tǒng)的功能是什么?文件系統(tǒng)是什么?數(shù)據(jù)保存到設(shè)備上所使用的一種組織結(jié)構(gòu)或格式。也可以說(shuō)是操作系統(tǒng)訪問(wèn)外部設(shè)備數(shù)據(jù)所約定的一種通用訪問(wèn)接口格式。1、根文件系統(tǒng)的功能是什么?

根文件系統(tǒng)是Linux(或者說(shuō)是UNIX類)操作系統(tǒng)運(yùn)行時(shí)所需要的特有文件系統(tǒng)。該文件系統(tǒng)不僅具有普通文件系統(tǒng)的存儲(chǔ)數(shù)據(jù)文件的功能,還被操作系統(tǒng)用來(lái)存儲(chǔ)運(yùn)行時(shí)所需要的一些特殊文件。這些特殊文件包括操作系統(tǒng)運(yùn)行時(shí)的配置數(shù)據(jù)文件(通常位于/etc目錄下)和設(shè)備文件(位于/dev目錄下)。操作系統(tǒng)通過(guò)使用它們來(lái)與應(yīng)用程序進(jìn)行接口,并與設(shè)備進(jìn)行交互。因此根文件系統(tǒng)是Linux運(yùn)行時(shí)所必須的。2、Linux常用目錄及其作用?(1)/bin/sbin(2)/boot(3)/dev(4)/lib(5)/mnt(6)/proc(7)/root(8)/tmp(9)/var(10)usr3、BusyBox工具的功能是什么?

BusyBox工具是將數(shù)以百計(jì)的常用Unix/Linux命令集成到一個(gè)可執(zhí)行文件中,所占空間1MB左右。4、根文件系統(tǒng)的創(chuàng)建過(guò)程

生成一個(gè)根文件系統(tǒng)映像文件root.cramfs的過(guò)程?;贔LASH的文件系統(tǒng)

cramfsyaffs(2)基于RAM的文件系統(tǒng)ramdiskramfsCramfs:CompressedROMFileSystem

Cramfs是Linux的創(chuàng)始人Linus

Torvalds參與開(kāi)發(fā)的一種只讀的壓縮文件系統(tǒng)。

在cramfs文件系統(tǒng)中,每一頁(yè)(4KB)被單獨(dú)壓縮,可以隨機(jī)頁(yè)訪問(wèn),其壓縮比高達(dá)2:1,為嵌入式系統(tǒng)節(jié)省大量的Flash存儲(chǔ)空間,使系統(tǒng)可通過(guò)更低容量的FLASH存儲(chǔ)相同的文件,從而降低系統(tǒng)成本。

Cramfs文件系統(tǒng)以壓縮方式存儲(chǔ),在運(yùn)行時(shí)要解壓縮。另外,它的速度快,效率高,其只讀的特點(diǎn)有利于保護(hù)文件系統(tǒng)免受破壞,提高了系統(tǒng)的可靠性。

由于以上特性,Cramfs在嵌入式系統(tǒng)中應(yīng)用廣泛。yaffs:YetAnotherFlashFileSystem

yaffs是專為嵌入式系統(tǒng)使用NAND型閃存而設(shè)計(jì)的一種日志型文件系統(tǒng)。 特點(diǎn):速度更快,掛載時(shí)間很短,對(duì)內(nèi)存的占用較小。另外,它還是跨平臺(tái)的文件系統(tǒng),除了Linux,還支持WinCE,pSOS和UCOS等。

yaffs自帶NAND芯片的驅(qū)動(dòng),并且為嵌入式系統(tǒng)提供了直接訪問(wèn)文件系統(tǒng)的API,用戶可以不使用Linux中的MTD與VFS,直接對(duì)文件系統(tǒng)操作。當(dāng)然,yaffs也可與MTD驅(qū)動(dòng)程序配合使用。R

溫馨提示

  • 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)論