在PC機(jī)上開(kāi)發(fā)應(yīng)用程序的用戶都會(huì)有這樣的感覺(jué),PC機(jī)有完善的操作系統(tǒng)并提供應(yīng)用程序接口(API),開(kāi)發(fā)之后的應(yīng)用程序可以直接在操作系統(tǒng)上運(yùn)行。雖然嵌入式系統(tǒng)應(yīng)用程序完全可以在裸板上運(yùn)行,但為了使系統(tǒng)具有任務(wù)管理,定時(shí)器管理,存儲(chǔ)器管理,資源管理,事件管理,系統(tǒng)管理,消息管理,隊(duì)列管理和中斷處理的能力,提供多任務(wù)處理,更好地分配系統(tǒng)資源的功能,用戶就需要針對(duì)自己的硬件平臺(tái)和實(shí)際應(yīng)用選擇恰當(dāng)?shù)?span id="opkdopnojk" class="t" _tag="" (event)="" href="http://bbs./tag.php?name=%E5%B5%8C%E5%85%A5%E5%BC%8F">嵌入式操作系統(tǒng)。

    uClinux是一個(gè)完全符合GUN/GPL公約的操作系統(tǒng),完全開(kāi)放代碼,現(xiàn)在由Lineo公司支持維護(hù)。uClinux的發(fā)音是“you-see-linux”,它的名字來(lái)自于希臘字母“mu”和英文大寫(xiě)字母“C”的結(jié)合?!癿u”代表“微小”之意,字母“C”代表“控制器”,所以從字面上就可以看出它的含義:即“微控制領(lǐng)域的Linux系統(tǒng)”。

    為了降低硬件成本以及運(yùn)行時(shí)的功耗,有一類CPU在設(shè)計(jì)中取消了內(nèi)存管理單元(Memory Management Unit,一下簡(jiǎn)稱MMU)功能模塊。最初,運(yùn)行于這類沒(méi)有MMU的CPU之上的都是一些很簡(jiǎn)單的單任務(wù)操作系統(tǒng),或者更簡(jiǎn)單的控制程序,甚至根本就沒(méi)有 操作系統(tǒng)而直接運(yùn)行應(yīng)用程序。在這種情況下,系統(tǒng)無(wú)法運(yùn)行復(fù)雜的應(yīng)用程序,或者效率很低,而且,所有的應(yīng)用程序都需要重寫(xiě),并要求程序員十分了解硬件特 性。這些都阻礙了應(yīng)用于這類CPU之上的嵌入式產(chǎn)品開(kāi)發(fā)的速度。

    uClinux從Linux2.0/2.4內(nèi)核派生而來(lái),沿襲了主流Linux的絕大部分特性。它是專門(mén)針對(duì)沒(méi)有MMU的CPU,并且為嵌入式系統(tǒng)做了許多小型化的工作。適用于沒(méi)有虛擬內(nèi)存或內(nèi)存管理單元(MMU)的處理器,例如ARM7TDMI。它通常用于具有很少內(nèi)存或Flash嵌入式系統(tǒng)。 uClinux是為了支持沒(méi)有MMU的處理器而對(duì)標(biāo)準(zhǔn)Linux作出的修正。它保留了操作系統(tǒng)所有的特性,為硬件平臺(tái)更好地運(yùn)行各種程序提供了保證。在 GNU通用公共許可證(GNU GPL)的保證下,運(yùn)行uClinux操作系統(tǒng)的用戶可以使用幾乎所有的Linux API函數(shù),不會(huì)因?yàn)闆](méi)有MMU而受到影響。由于uClinux在標(biāo)準(zhǔn)的Linux基礎(chǔ)上進(jìn)行了適當(dāng)?shù)牟脺p和優(yōu)化,形成了一個(gè)高度優(yōu)化的,代碼緊湊的嵌入式Linux,雖然它的體積很小,uClinux仍然保留了Linux的大多數(shù)的優(yōu)點(diǎn):穩(wěn)定,良好的移植性,優(yōu)秀的網(wǎng)絡(luò)功能,完備的對(duì)各種文件系統(tǒng)的支持,以及豐富的標(biāo)準(zhǔn)API等

    Boot Loader:負(fù)責(zé)Linux內(nèi)核的啟動(dòng),它用于初始化系統(tǒng)資源,包括SDRAM。這部分代碼用于建立Linux內(nèi)核運(yùn)行環(huán)境和從Flash中裝載初始化ramdisk。

    內(nèi)核的初始化:Linux內(nèi)核的入口電是start_kernel()函數(shù),它初始化內(nèi)核的其他部分,包括捕獲IRQ通道,調(diào)度,設(shè)備驅(qū)動(dòng),標(biāo)定延遲循環(huán),最重要的是能夠fork "init"進(jìn)程,以啟動(dòng)整個(gè)多任務(wù)環(huán)境。

    系統(tǒng)調(diào)用函數(shù)/捕獲函數(shù):在執(zhí)行完"init"程序后,內(nèi)核對(duì)程序不再有直接的控制權(quán),此后,它的作用僅僅是處理異步事件(如硬件中斷)和為系統(tǒng)調(diào)用提供進(jìn)程。

    設(shè)備驅(qū)動(dòng):設(shè)備驅(qū)動(dòng)占據(jù)了Linux內(nèi)核很大部分。同其他操作系統(tǒng)一樣,設(shè)備驅(qū)動(dòng)為它們所控制的硬件設(shè)備和操作系統(tǒng)提供接口。

    文件系統(tǒng):Linux最重要的特性之一就是對(duì)各種文件系統(tǒng)的支持。這種特性使得Linux很容易地同其他操作系統(tǒng)共存。文件系統(tǒng)的概念使得用戶能夠查看存 儲(chǔ)設(shè)備上的文件和路徑而無(wú)須考慮設(shè)計(jì)物理設(shè)備的文件系統(tǒng)類型。Linux透明的支持許多不同的文件系統(tǒng),將各種安裝的文件和文件系統(tǒng)以一個(gè)完整的虛擬文件 系統(tǒng)的形式呈現(xiàn)給用戶。

uClinux的相關(guān)知識(shí):

1、MMU(內(nèi)存管理單元)和VM(虛擬內(nèi)存)

    許多嵌入式微處理器都由于沒(méi)有MMU而步支持虛擬內(nèi)存。沒(méi)有內(nèi)存管理單元帶來(lái)的好處是簡(jiǎn)化了芯片的設(shè)計(jì),降低了產(chǎn)品成本。由于大多數(shù)的嵌入式設(shè)備沒(méi)有磁盤(pán) 或者只有很有限的內(nèi)存空間,所以無(wú)需復(fù)雜的內(nèi)存管理機(jī)制。但是由于沒(méi)有MMU的管理,操作系統(tǒng)對(duì)內(nèi)存空間是沒(méi)有保護(hù)的,所有程序訪問(wèn)的地址都是實(shí)際的物理 地址。但從嵌入式系統(tǒng)一般都是實(shí)現(xiàn)某種特定功能的角度考慮,對(duì)于內(nèi)存管理的要求完全可以由程序開(kāi)發(fā)人員考慮。

2、實(shí)時(shí)性的支持

    uClinux本身并步支持實(shí)時(shí)性,目前存在兩種不同的方案提供uClinux對(duì)實(shí)時(shí)性的支持,他們分別是RTLinux(RTL)和RTAL(Real Time Application Interface)。

3、平臺(tái)支持

開(kāi)發(fā)uClinux的工具鏈:

開(kāi)發(fā)uClinux通常用標(biāo)準(zhǔn)的GNU工具鏈。經(jīng)過(guò)修改的工具鏈支持一些高級(jí)特性,比如XIP(Execute-In-Place)技術(shù),共享庫(kù)支持等

uClinux所使用的微控制器:

uClinux使用于摩托羅拉的ColdFire/DragonBall,ARM系列(例如Atmel,TI,Samsung等生產(chǎn)的芯片),Intel i960,Spar(例如無(wú)MMU的LEON),NEC v850,甚至開(kāi)放的可綜合的CPU核,比如OPENcore。

4、與標(biāo)準(zhǔn)Linux的兼容性

    uClinux除了不能實(shí)現(xiàn)fork()而是使用vfork()外,其余uClinux的API函數(shù)與標(biāo)準(zhǔn)Linux完全相同。這并不是意味這 uClinux不能實(shí)現(xiàn)多進(jìn)程,實(shí)際上是uClinux多進(jìn)程管理是通過(guò)vfork()來(lái)實(shí)現(xiàn)的,或者是子進(jìn)程代替父進(jìn)程執(zhí)行,直到子進(jìn)程調(diào)用 exit()函數(shù)退出,或者是子進(jìn)程調(diào)用exec()函數(shù)執(zhí)行一個(gè)新的進(jìn)程。大多數(shù)標(biāo)準(zhǔn)的Linux應(yīng)用程序在從Linux操作系統(tǒng)移植到uClinux 系統(tǒng)時(shí),幾乎不用做什么大的改動(dòng),就可以完全達(dá)到對(duì)一個(gè)嵌入式應(yīng)用程序的要求。

uClibc對(duì)libc做了修改為uClinux提供了更為精簡(jiǎn)的應(yīng)用程序庫(kù)。

5、網(wǎng)絡(luò)的支持

    uClinux帶有一個(gè)完整的TCP/IP協(xié)議,同時(shí)它還支持許多其他網(wǎng)絡(luò)協(xié)議。uClinux對(duì)于嵌入式系統(tǒng)來(lái)說(shuō)是一個(gè)網(wǎng)絡(luò)完備的操作系統(tǒng)。

6、應(yīng)用領(lǐng)域

    uClinux廣泛應(yīng)用于嵌入式系統(tǒng)中,例如VPN路由器/防火墻,家用操作終端,協(xié)議轉(zhuǎn)換器,IP電話,工業(yè)控制器,Internet攝像機(jī),PDA設(shè)備等