當(dāng)前位置:首頁(yè) > 工業(yè)控制 > 工業(yè)控制
[導(dǎo)讀]5.1常用的嵌入式操作系統(tǒng)當(dāng)前常見(jiàn)的嵌入式操作系統(tǒng)主要有嵌入式Linux、Windows CE及VxWorks,在各個(gè)領(lǐng)域得到廣泛應(yīng)用,具有各自的特性與優(yōu)勢(shì):①?gòu)南到y(tǒng)性能比較Linux是一個(gè)成熟而穩(wěn)定的網(wǎng)絡(luò)操作系統(tǒng),為嵌入式操作系

5.1常用的嵌入式操作系統(tǒng)

當(dāng)前常見(jiàn)的嵌入式操作系統(tǒng)主要有嵌入式Linux、Windows CE及VxWorks,在各個(gè)領(lǐng)域得到廣泛應(yīng)用,具有各自的特性與優(yōu)勢(shì):

①?gòu)南到y(tǒng)性能比較

Linux是一個(gè)成熟而穩(wěn)定的網(wǎng)絡(luò)操作系統(tǒng),為嵌入式操作系統(tǒng)提供了一個(gè)極有吸引力的選擇,它是個(gè)和Unix相似、以核心為基礎(chǔ)的、完全內(nèi)存保護(hù)、多任務(wù)、多進(jìn)程的操作系統(tǒng),支持廣泛的計(jì)算機(jī)硬件,包括X86 ,Alpha、MIPS、PPC、ARM、NEC、MOTOROLA等現(xiàn)有的大部分芯片,可以定制,其系統(tǒng)內(nèi)核最小只有約134K B,在信息家電、工控等領(lǐng)域有廣泛應(yīng)用。

WinCE是一個(gè)軟實(shí)時(shí)系統(tǒng),具有模塊化、結(jié)構(gòu)化和基于Win32應(yīng)用程序接口和與處理器無(wú)關(guān)等特點(diǎn),主要用于對(duì)實(shí)時(shí)性要求不高,但對(duì)界面要求較高的領(lǐng)域,在PDA、手機(jī)、顯示儀表等領(lǐng)域得到非常廣泛應(yīng)用。

VxWorks操作系統(tǒng)是美國(guó)WindRiver公司于1983年設(shè)計(jì)開(kāi)發(fā)的一種嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS),具有多達(dá)1800個(gè)功能強(qiáng)大的應(yīng)用程序接口(API ) ,它以其良好的可靠性和卓越的實(shí)時(shí)性被廣泛地應(yīng)用在通信、軍事、航空、航天等高精尖技術(shù)及實(shí)時(shí)性要求極高的領(lǐng)域中。

②從開(kāi)發(fā)角度比較

Linux程序源碼全部公開(kāi),任何人可以修改并在GNU通用公共許可證下發(fā)行,這樣,開(kāi)發(fā)人員可以對(duì)操作系統(tǒng)進(jìn)行定制。同時(shí)由于有GPL (General Public License )的控制,大家開(kāi)發(fā)的東西大都相互兼容。Linux用戶遇到問(wèn)題時(shí)可以通過(guò)Internet向網(wǎng)上成千上萬(wàn)的Linux開(kāi)發(fā)者請(qǐng)教,這使最困難的問(wèn)題也有辦法解決。Linux帶有Unix用戶熟悉的完善的開(kāi)發(fā)工具,幾乎所有的Unix系統(tǒng)的應(yīng)用軟件都已移植到了Linux上。Linux還提供了強(qiáng)大的網(wǎng)絡(luò)功能,有多種可選擇窗口管理(Xwindows )。其強(qiáng)大的語(yǔ)言編譯器gcc、g++等也可以很容易得到。目前正在開(kāi)發(fā)的嵌人式系統(tǒng)中,49%的項(xiàng)目選擇Linux作為嵌入式操作系統(tǒng)。

就VxWorks與Win CE而言,廠商不但提供了穩(wěn)定可靠方便的集成開(kāi)發(fā)環(huán)境,而且提供了大量針對(duì)具體應(yīng)用的完整解決方案,為具體開(kāi)發(fā)帶來(lái)極大便捷,但系統(tǒng)開(kāi)發(fā)成本較昂貴。

本論文最終采用嵌入式Linux作為系統(tǒng)開(kāi)發(fā)軟件平臺(tái)。

5.2 BOOTLOADER移植

引導(dǎo)加載程序Bootloader是系統(tǒng)加電后運(yùn)行的第一段代碼。Bootloader就是在操作系統(tǒng)內(nèi)核或應(yīng)用程序運(yùn)行之前的一段程序。通過(guò)這段小程序,可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核或用戶應(yīng)用程序準(zhǔn)備好正確的環(huán)境。Bootloader是依賴于硬件而實(shí)現(xiàn)的,特別是在嵌入式系統(tǒng)中。不同的體系結(jié)構(gòu)需求的Bootloader是不同的;除了體系結(jié)構(gòu),Bootloader還依賴于具體的嵌入式板級(jí)設(shè)備的配置。

5.2.1 U-Boot簡(jiǎn)介

U-Boot全稱為Universal Bootloader,是遵循GPL條款的開(kāi)放源碼項(xiàng)目。從FADSROM、8xxROM、PPCBOOT逐步發(fā)展演化而來(lái)。其源碼目錄、編譯形式與Linux內(nèi)核很相似,事實(shí)上,不少U-Boot源碼就是相應(yīng)的Linux內(nèi)核源程序的簡(jiǎn)化,尤其是一些設(shè)備的驅(qū)動(dòng)程序。

選擇U-Boot的理由:

▶開(kāi)放源碼;

▶支持多種嵌入式操作系統(tǒng)內(nèi)核,如Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS;

▶支持多個(gè)處理器系列,如PowerPC、ARM、x86、MIPS、XScale;

▶較高的可靠性和穩(wěn)定性;高度靈活的功能設(shè)置,適合U-Boot調(diào)試、操作系統(tǒng)不同引導(dǎo)要求、產(chǎn)品發(fā)布等;

▶豐富的設(shè)備驅(qū)動(dòng)源碼,如串口、以太網(wǎng)、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、鍵盤(pán)等;

▶較為豐富的開(kāi)發(fā)調(diào)試文檔與強(qiáng)大的網(wǎng)路技術(shù)支持;

5.2.2 U-Boot運(yùn)行過(guò)程分析

U-Boot編譯后的代碼定義一般不超過(guò)100 KB,并且這100KB又分為兩個(gè)階段來(lái)執(zhí)行。第一階段的代碼在start.s中定義,大小不超過(guò)10KB,它包括從系統(tǒng)上電后在0x00000000地址開(kāi)始執(zhí)行的部分。這部分代碼運(yùn)行在Flash中,它包括對(duì)S3C2440的一些寄存器的初始化和將U-Boot的第二段代碼從Flash復(fù)制到SDRAM中。第二段的起始地址是在第一段代碼中指定的,被復(fù)制到SDRAM后,就第一段跳到這個(gè)入口地址開(kāi)始執(zhí)行剩余部分代碼。第二段主要是進(jìn)行一些BSS段的設(shè)置、堆棧的初始化等工作,最后會(huì)跳轉(zhuǎn)到main -loop函數(shù)中,接收命令并進(jìn)行命令處理。

5.2.3 U-Boot移植

本系統(tǒng)用到的U-Boot版本為1.3.2.它不僅提供了對(duì)ARM-920T內(nèi)核的支持,而且直接提供了對(duì)于S3C2440的板級(jí)支持,這使移植工作量相對(duì)減少。

(1) U-Boot版本1.3.2,gccversion4.1.2

(2)在Makefile中加入

zq2440_config:u nconfig @$(MKCONFIG ) $(@ :_config=) arm arm920t zq2440 NULL S3C24x0把板子起名為zq2440

(3)建立board/zq2440目錄,復(fù)制board/smdk2410下的文件到board/zq2440目錄,將smdk2410.c更名為zq2440.c.

(4)cp include/configs/smdk2410.h include/configs/zq2440.h

(5 )添加arm-softfloat-linux-gnu-到Makefile的CROSS_COMPILE=

(6)編譯 make zq2440_config

make

(7)通過(guò)JTAG口將U-Boot燒寫(xiě)到Flash中,就可以從Nand Flash啟動(dòng)了。

Uboot在超級(jí)終端下運(yùn)行結(jié)果如圖5.1所示:

5.3嵌入式Linux內(nèi)核的移植

5.3.1嵌入式Linux簡(jiǎn)介

嵌入式Linux是將日益流行的Linux操作系統(tǒng)進(jìn)行裁剪、修改,使之能在嵌入式計(jì)算機(jī)系統(tǒng)上運(yùn)行的一種操作系統(tǒng)。

嵌入式系統(tǒng)的軟件和硬件往往只需針對(duì)某種特別的應(yīng)用定制,因此嵌入式操作系統(tǒng)需要量體裁衣,除去冗余,同時(shí)盡可能發(fā)揮系統(tǒng)的潛力。Linux最初目標(biāo)是一個(gè)通用的操作系統(tǒng),因此必須對(duì)其進(jìn)行面向嵌入式系統(tǒng)和應(yīng)用環(huán)境的改造,以適應(yīng)嵌入式系統(tǒng)的特殊要求。

嵌入式Linux系統(tǒng)包括內(nèi)核和應(yīng)用程序兩部分。內(nèi)核為應(yīng)用程序提供一個(gè)虛擬的硬件平臺(tái),以統(tǒng)一的方式對(duì)資源進(jìn)行訪問(wèn),并且透明地支持多任務(wù)。嵌入式Linux內(nèi)核可以分為六部分:進(jìn)程調(diào)度,內(nèi)存管理,文件系統(tǒng),進(jìn)程間通信,網(wǎng)絡(luò),設(shè)備驅(qū)動(dòng)。應(yīng)用程序負(fù)責(zé)系統(tǒng)的部分初始化,基本的人機(jī)界面,必要的命令等內(nèi)容。

從Linux2.6內(nèi)核版本開(kāi)始了實(shí)時(shí)性革命。Linux內(nèi)核本身也已經(jīng)特別注重了向嵌入式系統(tǒng)的應(yīng)用,Linux2.6內(nèi)核已經(jīng)把uCLinux的大部分并入主流內(nèi)核功能中,同時(shí)加入提高中斷性能和調(diào)度響應(yīng)時(shí)間的改進(jìn),有三個(gè)最顯著的改進(jìn):采用可搶占內(nèi)核、更加有效的調(diào)度算法以及同步性的提高。Linux2.6內(nèi)核在一定程度上是可搶占的,即當(dāng)有比正在運(yùn)行的進(jìn)程優(yōu)先級(jí)更高的進(jìn)程就緒時(shí),系統(tǒng)可強(qiáng)行剝奪正在運(yùn)行進(jìn)程的CPU,提供給具有更高優(yōu)先級(jí)的進(jìn)程使用,比Linux2.4內(nèi)核具備更好的實(shí)時(shí)響應(yīng)性(不是所有的內(nèi)核代碼段都可以被搶占)。Linux2.6內(nèi)核加入了多種微控制器的支持,無(wú)MM U的處理器已經(jīng)整合進(jìn)了新的內(nèi)核中,而且在無(wú)MM U控制器上仍舊支持多任務(wù)處理,但沒(méi)有內(nèi)存保護(hù)功能。對(duì)于WLAN、Bluetooth、GPRS、CDMA和WiFi等最新出現(xiàn)的無(wú)線網(wǎng)絡(luò)協(xié)議和設(shè)備,Linux2.6內(nèi)核重建了驅(qū)動(dòng)的體系層次和編程模型,可以方便的適應(yīng)這些網(wǎng)絡(luò)設(shè)備的變化,而且特別提出了NAPI(NewAPI)等模型提高網(wǎng)絡(luò)處理效率。

5.3.2嵌入式Linux的優(yōu)勢(shì)

嵌入式Linux的開(kāi)發(fā)和研究是操作系統(tǒng)領(lǐng)域中的一個(gè)熱點(diǎn),目前已經(jīng)開(kāi)發(fā)成功的嵌入式系統(tǒng)中,大約有一半使用的是Linux.Linux之所以能在嵌入式系統(tǒng)市場(chǎng)上取得如此輝煌的成果,與其自身的優(yōu)良特性是分不開(kāi)的。

(1)開(kāi)放的源碼,豐富的軟件資源

Linux是自由的操作系統(tǒng),它的開(kāi)放源碼使用戶獲得了最大的自由度。Linux上的軟件資源十分豐富,每一種通用程序在Linux上都可以找到。

(2)功能強(qiáng)大的內(nèi)核,性能高效、穩(wěn)定,多任務(wù)

Linux的內(nèi)核非常穩(wěn)定,它的高效和穩(wěn)定性已經(jīng)在各個(gè)領(lǐng)域,尤其在網(wǎng)絡(luò)服務(wù)器領(lǐng)域,得到了事實(shí)的驗(yàn)證。Linux內(nèi)核小巧靈活,易于裁減,這使得它很適合嵌入式系統(tǒng)的應(yīng)用。

(3)支持多種體系結(jié)構(gòu),如X86、ARM、MIPS、PowerPC、SPARC等

目前,Linux已經(jīng)被移植到數(shù)十種硬件平臺(tái)上,幾乎支持所有流行的CPU.

(4)完善的網(wǎng)絡(luò)通訊、圖形、文件管理機(jī)制

Linux自產(chǎn)生之日起就與網(wǎng)絡(luò)密不可分,網(wǎng)絡(luò)是Linux的強(qiáng)項(xiàng)。另外,Linux還支持多種文件和圖形系統(tǒng)。

(5)支持大量的周邊硬件設(shè)備

Linux上的驅(qū)動(dòng)已經(jīng)非常豐富了,它們支持各種主流硬件設(shè)備和最新硬件技術(shù)。

(6)大小、功能都可定制

Linux秉承Unix的優(yōu)秀設(shè)計(jì)思想,非常靈活,各部分的可定制性都很強(qiáng)。

(7)良好的開(kāi)發(fā)環(huán)境,不斷發(fā)展的開(kāi)發(fā)工具集

Linux有著非常優(yōu)秀的完整開(kāi)發(fā)工具鏈,有十幾種集成開(kāi)發(fā)環(huán)境,其中很多是免費(fèi)的,大大降低了開(kāi)發(fā)費(fèi)用。

(8)軟件開(kāi)發(fā)者的廣泛支持

Linux的自由精神吸引了成千上萬(wàn)的程序員投入到Linux的開(kāi)發(fā)和測(cè)試中來(lái),這使得Linux在短時(shí)間內(nèi)就成為一個(gè)功能強(qiáng)大的操作系統(tǒng)。

(9)價(jià)格低廉

有效降低產(chǎn)品成本,對(duì)成本敏感的嵌入式系統(tǒng)來(lái)說(shuō)至關(guān)重要,Linux恰好具有這一特性。

5.3.3嵌入式Linux的移植

在同一個(gè)硬件平臺(tái)上可以嵌入不同的嵌入式操作系統(tǒng),就好比PC既可以安裝Windows又 可以安裝Linux一樣。同樣,有些操作系統(tǒng)經(jīng)過(guò)移植后可以運(yùn)行在不同的硬件平臺(tái)上。如果一個(gè)系統(tǒng)可以在不同硬件平臺(tái)上運(yùn)行,那么這個(gè)系統(tǒng)就是可移植的。 使某一個(gè)平臺(tái)的代碼運(yùn)行在其他平臺(tái)上的。過(guò)程叫做移植。

在Linux系統(tǒng)內(nèi)核代碼中有arch目錄,其中包含了不同平臺(tái)(包括i386、 ARM)的代碼,arch目錄中的代碼是為多平臺(tái)設(shè)計(jì)并使用的,與體系結(jié)構(gòu)相關(guān)的代碼都存放在arch//和 include/asm-/目錄中,architecture是Linux支持的體系結(jié)構(gòu)的簡(jiǎn)稱。例如,ARM體系結(jié)構(gòu)對(duì)應(yīng)的簡(jiǎn)稱是arm.與這種體系結(jié) 構(gòu)相關(guān)的代碼都存放在arch/arm/以及include/asm-arm /目錄下。嵌入式系統(tǒng)是“硬件可剪裁”的,因此工程師設(shè)計(jì)的硬件電路會(huì)有所不同,從而這些代碼可能無(wú)法正確運(yùn)行(比如內(nèi)核解壓的地址不同)。因此,在剪裁 系統(tǒng)內(nèi)核是必須結(jié)合硬件電路對(duì)內(nèi)核代碼進(jìn)行修改移植。

本系統(tǒng)采用Linux2.6.12,Samsung S3C2440已經(jīng)成為L(zhǎng)inux的一個(gè)標(biāo)準(zhǔn)支持平臺(tái),對(duì)內(nèi)核做簡(jiǎn)單的修改和配置后,無(wú)需任何其他的patch就可以在S3C2440的目標(biāo)板上運(yùn)行得很好。

(1)針對(duì)內(nèi)核源碼的修改

設(shè)置flash分區(qū)

內(nèi)核對(duì)flash分區(qū)的支持是內(nèi)核移植成功的一個(gè)關(guān)鍵步驟,一共要修改三個(gè)文件,分別如下:

指明分區(qū)信息

在arch/arm/machs3c2410/devs.c文件中,添加如下內(nèi)容:

/**************增加的頭文件**************/

# include< linux/mtd/partitions.h>

#include < asm/arch/nand.h>

#include < linux/mtd/nand.h>

/**************建立NANDFlash分區(qū)表**************/

●指定啟動(dòng)時(shí)初始化在

arch/arm/machs3c2410/machsmdk2410.c目錄,kernel啟動(dòng)時(shí)依據(jù)對(duì)分區(qū)的設(shè)置進(jìn)行初始配置,修改smdk_devices[]:指明初始化時(shí)包括前面所設(shè)置的flash分區(qū)信息,

static struct platform_device*smdk2410_devices[]__initdata={

3c_device_usb,

3c_device_lcd,

3c_device_wdt,

3c_device_i2c,

3c_device_iis,

3c_device_nand,/*添加該語(yǔ)句即可*/

};

●禁止Flash ECC校驗(yàn)kernel是通過(guò)bootloader寫(xiě)到Nand Flash的,bootloader通過(guò)軟件ECC算法產(chǎn)生ECC校驗(yàn)碼。這與內(nèi)核校驗(yàn)的ECC碼不一樣,內(nèi)核中的ECC碼是由S3C2440中的Nand Flash控制器產(chǎn)生的。

修改drivers/mtd/nand/s3c2410.c文件:找到s3c2410_nand_init_chip( )函數(shù),在該函數(shù)體最后加上如下語(yǔ)句。

chip ->eccmode = NAND_ECC_NONE ;

(2)內(nèi)核配置及編譯

主要是在make menuconfig中設(shè)置CPU以及設(shè)備驅(qū)動(dòng)相關(guān)的配置信息,可以參考SMKD2410開(kāi)發(fā)平臺(tái)上的有關(guān)配置,除了自定義的文件系統(tǒng)以及命令行參數(shù)外,基本上有關(guān)S3C2410處理器開(kāi)發(fā)平臺(tái)上的配置均相同,在虛擬機(jī)上配置界面如圖5.2所示。

根目錄下只需修改Makefile文件。這個(gè)Makefile文件的任務(wù)有兩個(gè):產(chǎn)生vmlinux件和產(chǎn)生內(nèi)核模塊。為了達(dá)到此目的,Makefile將遞歸進(jìn)入到內(nèi)核的各個(gè)子目錄中,分別調(diào)用位于這些子目錄中的Makefile.

指定目標(biāo)平臺(tái)

ARCH:=arm

指定交叉編譯器

CROSS_COMPILE=arm-linux-gcc

設(shè)置好交叉編譯器之后,執(zhí)行make clean、makeu Image,生成在IO模塊上運(yùn)行的內(nèi)核映象文件uImage,通過(guò)網(wǎng)口或串口進(jìn)行燒寫(xiě)。

5. 4嵌入式根文件系統(tǒng)的構(gòu)建

Linux的一個(gè)最重要特點(diǎn)就是它支持許多不同的文件系統(tǒng)。這使Linux非常靈活,能夠與許多其他的操作系統(tǒng)共存。Linux支持的常見(jiàn)的文件系統(tǒng)有:JFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。隨著時(shí)間的推移,Linux支持的文件系統(tǒng)數(shù)還會(huì)增加。

Linux是通過(guò)把系統(tǒng)支持的各種文件系統(tǒng)鏈接到一個(gè)單獨(dú)的樹(shù)形層次結(jié)構(gòu)中,來(lái)實(shí)現(xiàn)對(duì)多文件系統(tǒng)的支持的。該樹(shù)形層次結(jié)構(gòu)把文件系統(tǒng)表示成一個(gè)整個(gè)的獨(dú)立實(shí)體。無(wú)論什么類(lèi)型的文件系統(tǒng),都被裝配到某個(gè)目錄上,由被裝配的文件系統(tǒng)的文件覆蓋該目錄原有的內(nèi)容。該個(gè)目錄被稱為裝配目錄或裝配點(diǎn)。在文件系統(tǒng)卸載時(shí),裝配目錄中原有的文件才會(huì)顯露出來(lái)。

文件系統(tǒng)都會(huì)被燒錄在與某一存儲(chǔ)設(shè)備上。在嵌入式設(shè)備上很少使用大容量的ID E硬盤(pán)作為自己的存儲(chǔ)設(shè)備,嵌入式設(shè)備往往選用ROM、閃存( flash memory )等作為它的主要存儲(chǔ)設(shè)備。在嵌入式設(shè)備上選用哪種文件系統(tǒng)格式與閃存的特點(diǎn)是相關(guān)的。

本硬件平臺(tái)是以NAND Flash (閃存)作為主要的存儲(chǔ)媒介,這類(lèi)存儲(chǔ)器與傳統(tǒng)存儲(chǔ)器最大的不同在于其是按扇區(qū)擦除、按位編程。Flash存儲(chǔ)介質(zhì)的這種技術(shù)特點(diǎn)使得傳統(tǒng)的Linux文件系統(tǒng)已經(jīng)不再適合在其上構(gòu)建,比如Ext2文件系統(tǒng),是專(zhuān)為像IDE那樣的塊設(shè)備設(shè)計(jì)的,沒(méi)有提供很好的扇區(qū)擦寫(xiě)支持,不支持損耗平衡,沒(méi)有掉電保護(hù),也沒(méi)有很好的扇區(qū)管理。這些缺點(diǎn)都表明,在Flash存儲(chǔ)介質(zhì)上應(yīng)用為設(shè)備設(shè)計(jì)的傳統(tǒng)文件系統(tǒng)不是一個(gè)很好的選擇?;谶@樣的原因,產(chǎn)生了很多專(zhuān)為Flash設(shè)備而設(shè)計(jì)的文件系統(tǒng)。

利用BusyBox構(gòu)建嵌入式根文件系統(tǒng)

Linux下的根文件系統(tǒng)目錄結(jié)構(gòu)如下:

目錄 習(xí)慣用法

/bin 用戶命令所在目錄

/dev 硬件設(shè)備文件及其它特殊文件

/etc 系統(tǒng)配置文件,包括啟動(dòng)文件等

/home 多用戶主目錄

/lib 鏈接庫(kù)文件目錄

/mnt 裝配點(diǎn),用于裝配臨時(shí)文件系統(tǒng)或其他的文件系統(tǒng)

/opt 附加的軟件套件目錄

/proc 虛擬文件系統(tǒng),用來(lái)顯示內(nèi)核及進(jìn)程信息

/root root用戶主目錄

/sbin 系統(tǒng)管理員命令目錄

/tmp 臨時(shí)文件目錄/usr用戶命令目錄

/var 監(jiān)控程序和工具程序所存放的可變數(shù)據(jù)

對(duì)于用途單一的嵌入式系統(tǒng),上邊的一些用于多用戶的目錄可以省略,例如/home、/opt、/root目錄等。而/bin、/dev、/etc、/lib、/proc、/sbin和/usr目錄,是幾乎每個(gè)系統(tǒng)必備的目錄,也是不可或缺的目錄。

制作根文件系統(tǒng),就是創(chuàng)建各種目錄,并在里面創(chuàng)建各種文件。比如在/bin、/sbin目錄下存放各種可執(zhí)行程序,在/etc目錄下存放配置文件,在/lib目錄下存放庫(kù)文件。使用Busy box制作根文件系統(tǒng),就是利用Busy box來(lái)創(chuàng)建/bin、/sbin等目錄下的可執(zhí)行的文件。

5.4.1 Buybox簡(jiǎn)介

Buybox被非常形象地稱為嵌入式Linux系統(tǒng)中的“瑞士軍刀”,它是一個(gè)Uinx工具集。它可提供一百多種GNU常用工具、shell腳本工具等。雖然Buybox中的這些工具相對(duì)于GNU提供的完全工具有所簡(jiǎn)化,但是它們都很實(shí)用。

Buybox在設(shè)計(jì)上就充分考慮了硬件資源受限的特殊工作環(huán)境。它采用模塊化設(shè)計(jì),使得它很容易被定制和裁剪??梢愿鶕?jù)實(shí)際的用途,裁剪出一個(gè)最精簡(jiǎn)的工具集。

Buybox的特色是所有命令都編譯成一個(gè)文件:Buybox,其他命令工具(如sh、cp、ls等)都是指向Buybox文件的鏈接。在使用Buybox生成的工具時(shí),會(huì)根據(jù)工具的文件名鏈接到特定的處理程序。這樣,所有這些程序只需被加載一次,而所有的Buybox工具組件都可以共享相同的代碼段,這在很大程度上節(jié)省了系統(tǒng)的內(nèi)存資源也提高了應(yīng)用程序的執(zhí)行速度。

Buybox僅需要幾百KB的空間就可以運(yùn)行,這使得Buybox很適合嵌入式系統(tǒng)使用。同時(shí),Buybox的安裝腳本也使得它很容易建立基于Buybox的根文件系統(tǒng)。通常只需要添加/dev、/etc等目錄以及相關(guān)的配置腳本,就可以實(shí)現(xiàn)一個(gè)簡(jiǎn)單的根文件系統(tǒng)。

5.4.2 Buybox的配置編譯

將Buybox的源碼從網(wǎng)站上下載到本地目錄,運(yùn)行命令:

$tarzxvf Buybox-1.1.3.tar.gz

$cd Buybox-1.1.3

$make menuconfig

在虛擬機(jī)上配置界面如圖5.3所示

典型的Buybox文件大小在動(dòng)態(tài)鏈接的情況下是300KB左右,靜態(tài)鏈接為800KB左右,用它實(shí)現(xiàn)的文件系統(tǒng)完全可以控制在1MB以下。

5.4.3根文件系統(tǒng)鏡像構(gòu)建

通常情況下根文件系統(tǒng)鏡像是系統(tǒng)構(gòu)建的最后一步。利用交叉編譯工具將應(yīng)用程序、內(nèi)核分別配置和編譯之后,把獲得的C鏈接庫(kù)、內(nèi)核模塊以及應(yīng)用程序按照FHS規(guī)則放到相應(yīng)位置,利用文件系統(tǒng)自帶的工具mkyaffs image來(lái)最終生成一個(gè)根文件系統(tǒng)鏡像file system.yaffs.

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉