μClinux的發(fā)展及特點(diǎn)
1991年,芬蘭大學(xué)生Linus Torvalds開(kāi)發(fā)了一個(gè)自由的操作系統(tǒng)Linux,并通過(guò)Internet進(jìn)行了發(fā)布。隨后,一大批編程人員加入到基于Linux操作系統(tǒng)開(kāi)發(fā)過(guò)程中來(lái),Linux要求所有的源代碼必須公開(kāi),后來(lái)技術(shù)的發(fā)展轉(zhuǎn)向GPL( GNUG eneral Public Licence),只要遵守GPL的規(guī)定,就可以免費(fèi)獲得復(fù)制,因此Linux依然可以看做是一個(gè)免費(fèi)軟件。隨著嵌入式應(yīng)用的日益普及,人們迫切需要更加小巧的、無(wú)需龐大內(nèi)存運(yùn)行環(huán)境的迷你型的操作系統(tǒng),于是,GPL組織開(kāi)發(fā)了針對(duì)微型控制領(lǐng)域的Linux操作系統(tǒng),這就是μClinux操作系統(tǒng)。μ表示Micro,即微小的,C表示Control,即控制,整個(gè)μClinux的含義可以理解為"適用于微型控制領(lǐng)域的Linux操作系統(tǒng)"。
μClinux的具體特點(diǎn)包括:
(1)適合嵌入式環(huán)境開(kāi)發(fā)。一般而言,嵌入式系統(tǒng)自身所具有的簡(jiǎn)約性,導(dǎo)致對(duì)于所選用的操作系統(tǒng)的多任務(wù)、大內(nèi)存管理等方面的功能都沒(méi)有明確需求。因此,μClinux不支持MMU等內(nèi)存管理功能。小巧玲瓏的特點(diǎn)使得該系統(tǒng)在嵌入式開(kāi)發(fā)領(lǐng)域具有得天獨(dú)厚的優(yōu)勢(shì)。
?。?)傳承了Linux的優(yōu)點(diǎn)。Linux 操作系統(tǒng)最突出優(yōu)點(diǎn)是強(qiáng)大的網(wǎng)絡(luò)管理功能,基本上所有的網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)接口都可以在Linux上找到,Linux的內(nèi)核比標(biāo)準(zhǔn)的UNIX處理網(wǎng)絡(luò)協(xié)議更加高效,系統(tǒng)的網(wǎng)絡(luò)吞吐性能更好,這也是Linux網(wǎng)絡(luò)服務(wù)器市場(chǎng)上占據(jù)較大的市場(chǎng)分額的重要原因。對(duì)于小型的SOHO路由器,Linux的網(wǎng)絡(luò)技術(shù)無(wú)疑是其開(kāi)發(fā)運(yùn)行的最佳選擇,Linux完全能對(duì)給其提供全方位的網(wǎng)絡(luò)技術(shù)支持。μClinux是基于Linux開(kāi)發(fā)的,繼承了Linux的強(qiáng)大網(wǎng)絡(luò)管理功能,許多資料可以在Internet上方便下載。
?。?)支持功能擴(kuò)展。雖然與Linux相比,μClinux經(jīng)過(guò)了大幅度的瘦身,但是這并沒(méi)有妨礙μClinux提供豐富的功能擴(kuò)展接口。比如,雖然μClinux多任務(wù)支持模式較為簡(jiǎn)單,但是在必須需要復(fù)雜多任務(wù)環(huán)境的時(shí)候,可以進(jìn)行方便的擴(kuò)展。
(4)提供強(qiáng)大的系統(tǒng)管理能力。雖然嵌入式系統(tǒng)的應(yīng)用程序,一般可以在裸板上運(yùn)行,但為了使系統(tǒng)具有任務(wù)管理、存儲(chǔ)器管理、設(shè)備管理、事件管理、消息管理、隊(duì)列管理和中斷處理等全方位的能力,更好地分配系統(tǒng)資源,用戶(hù)就需要針對(duì)自己的硬件平臺(tái)和實(shí)際應(yīng)用選擇適當(dāng)?shù)那度胧讲僮飨到y(tǒng)。μClinux就是一種不錯(cuò)的選擇。
?。?)可以根據(jù)不同的應(yīng)用需求量身定做操作系統(tǒng)。這就是定制μClinux的剪裁技術(shù)。要讓uClinux支持一個(gè)新硬件體系,首先需要收集構(gòu)建代碼的工具,然后開(kāi)始剪裁和編譯內(nèi)核,使構(gòu)建的操作系統(tǒng)適合具體的硬件需求。一旦內(nèi)核支持設(shè)計(jì)的處理器功能,操作系統(tǒng)就可以正常運(yùn)行了。在此基礎(chǔ)上,還要增加必要的驅(qū)動(dòng)程序的支持,以便各種硬件設(shè)備能夠高效能地發(fā)揮作用。典型的驅(qū)動(dòng)程序集合中包括了諸如控制臺(tái)終端、基本串、并行設(shè)備、包含了根文件系統(tǒng)的塊設(shè)備的存儲(chǔ)設(shè)備驅(qū)動(dòng)以及其他特殊設(shè)備的驅(qū)動(dòng)程序等。
μClinux操作系統(tǒng)的核心技術(shù)環(huán)節(jié)剖析
在GNU通用公共許可證的授權(quán)下,μClinux操作系統(tǒng)的用戶(hù)可以使用幾乎所有Linux的API函數(shù),不會(huì)因?yàn)闆](méi)有內(nèi)存管理單元MMU而受到影響;而且,μClinux在標(biāo)準(zhǔn)的Linux基礎(chǔ)上進(jìn)行了適當(dāng)?shù)牟眉艉蛢?yōu)化,形成了一個(gè)高度優(yōu)化的、代碼緊湊的嵌入式Linux,體積小了,但是仍然保留了Linux的大多數(shù)的優(yōu)點(diǎn),比如穩(wěn)定性好、強(qiáng)大的網(wǎng)絡(luò)功能、良好的可移植性、完備的文件系統(tǒng)支持功能、以及標(biāo)準(zhǔn)豐富的應(yīng)用程序接口API等,可以支持類(lèi)似ARM7TDMI等類(lèi)型多的小巧玲瓏的中央處理器。下面對(duì)μClinux二此開(kāi)法過(guò)程中涉及到的主要功能部件以及各部分的技術(shù)內(nèi)涵,進(jìn)行較為深入的分析和討論,以便網(wǎng)絡(luò)管理人員在應(yīng)用μClinux進(jìn)行系統(tǒng)功能擴(kuò)展時(shí)參考:
?。?)系統(tǒng)加載模塊,該模塊又稱(chēng)BootLoader。它是負(fù)責(zé)μClinux操作系統(tǒng)內(nèi)核啟動(dòng)的基本功能模塊。具體來(lái)說(shuō),該功能模塊可以完成建立uCLinux內(nèi)核運(yùn)行環(huán)境和從閃存Flash中裝載初始化內(nèi)核鏡象。
?。?)系統(tǒng)內(nèi)核初始化模塊,該模塊又稱(chēng)SystemInit。啟動(dòng)μClinux內(nèi)核時(shí),首先受到調(diào)用的功能函數(shù)是StartKernel()函數(shù)。該函數(shù)的主要任務(wù)是初始化內(nèi)核的其他部分。具體包括:捕獲終端請(qǐng)求IRQ、進(jìn)程調(diào)度、設(shè)備驅(qū)動(dòng)程序加載、標(biāo)定延遲循環(huán),進(jìn)而調(diào)用fork的"init"進(jìn)程,以啟動(dòng)任務(wù)管理環(huán)境。
(3)系統(tǒng)調(diào)用模塊,該模塊又稱(chēng)為SystemCall模塊。在μClinux系統(tǒng)執(zhí)行完"init"程序后,內(nèi)核對(duì)程序流不再有直接的控制權(quán),它此后的作用僅限于處理捕獲到的中斷請(qǐng)求事件(例如硬件中斷),并為系統(tǒng)調(diào)用提供服務(wù)進(jìn)程。
(4)設(shè)備驅(qū)動(dòng)模塊,又稱(chēng)為DeviceDriver模塊。在幾乎所有的操作系統(tǒng)中,設(shè)備驅(qū)動(dòng)都占據(jù)大部分的系統(tǒng)空間,μClinux也不例外。同其他各類(lèi)操作系統(tǒng)一樣,μClinux的設(shè)備驅(qū)動(dòng)程序,為系統(tǒng)連接和控制的硬件設(shè)備與操作系統(tǒng)之間提供通訊接口。同時(shí),各設(shè)備發(fā)出的中斷請(qǐng)求由系統(tǒng)調(diào)用模塊負(fù)責(zé)安排響應(yīng)時(shí)間,并提供服務(wù)程序的入口地址。
?。?)文件系統(tǒng),又稱(chēng)為FileManagement模塊。任何一個(gè)操作系統(tǒng),包括μClinux在內(nèi),它們最重要的任務(wù)之一就是對(duì)多種文件系統(tǒng)進(jìn)行有效的管理。μClinux在文件管理方面具有很強(qiáng)的兼容性,很容易同其他操作系統(tǒng)共存、共享各類(lèi)常用文件。特別值得推崇的是,μClinux可以透明地支持許多不同類(lèi)型的文件系統(tǒng),將各種安裝的文件和文件系統(tǒng)以一個(gè)完整的虛擬文件系統(tǒng)的形式呈現(xiàn)給用戶(hù)。同時(shí),μClinux還帶有一個(gè)完整的TCP/IP協(xié)議,可以支持各種流行的網(wǎng)絡(luò)協(xié)議,方便用戶(hù)使用系統(tǒng)訪(fǎng)問(wèn)網(wǎng)絡(luò)資源,是一個(gè)功能豐富、簡(jiǎn)便易用的網(wǎng)絡(luò)操作系統(tǒng)。
μClinux下的系統(tǒng)開(kāi)發(fā)環(huán)境
了解了μClinux操作系統(tǒng)的基本技術(shù)細(xì)節(jié),對(duì)于網(wǎng)管人員在完成基本管理職能的基礎(chǔ)上,使用開(kāi)發(fā)環(huán)境進(jìn)一步完善和提高自身的網(wǎng)絡(luò)管理技能,具有非常重要的指導(dǎo)意義。目前在具有嵌入式開(kāi)發(fā)支持功能的路由器等網(wǎng)絡(luò)產(chǎn)品方面,經(jīng)常使用的μClinux開(kāi)發(fā)平臺(tái)是GNU開(kāi)發(fā)套件。
該開(kāi)發(fā)套件包括:
?。?)常規(guī)C編譯器GCC,可以使用標(biāo)準(zhǔn)C進(jìn)行系統(tǒng)功能的二次開(kāi)發(fā)。
?。?)C++編譯器GCC++,可以使用面向?qū)ο箝_(kāi)發(fā)模式完成系統(tǒng)功能的二次開(kāi)發(fā)。
?。?)匯編器AS和鏈接LD,可以使用匯編語(yǔ)言進(jìn)行系統(tǒng)功能的二次開(kāi)發(fā)。
?。?)其它工具軟件,包括:二進(jìn)制轉(zhuǎn)換工具(OBJCOPY,OBJDUMP),軟件調(diào)試工具(GDB.GD BSERVER,KGDB)和基于不同硬件平臺(tái)的開(kāi)發(fā)庫(kù)。
上述開(kāi)發(fā)環(huán)境的技術(shù)特點(diǎn)如下:
?。?)代碼效率高。在GNU GCC/GCC++語(yǔ)言環(huán)境的支持下,用戶(hù)可以使用流行的C/C++語(yǔ)言開(kāi)發(fā)應(yīng)用程序。該開(kāi)發(fā)模式下,網(wǎng)絡(luò)管理人員可以輕松介入到開(kāi)發(fā)工作中,并可以生成高效率運(yùn)行代碼。
?。?)靈活性強(qiáng)。GNU開(kāi)發(fā)工具都是采用命令行的方式,用戶(hù)掌握起來(lái)相對(duì)比較困難,不如基于Windows系統(tǒng)的開(kāi)發(fā)工具好用,但是GNU工具的復(fù)雜性是由于它更貼近編譯器和操作系統(tǒng)的底層,并提供了更大的靈活性。
(3)豐富的網(wǎng)上免費(fèi)資源。上述工具都是按GPL版權(quán)聲明發(fā)布的,任何人都可以從網(wǎng)上免費(fèi)獲取全部的源代碼,無(wú)需任何費(fèi)用的投入,對(duì)于一般小型單位的網(wǎng)絡(luò)質(zhì)量的提升可以起到投入少、見(jiàn)效快的神奇效果。GNU開(kāi)發(fā)套件作為通用的Linux開(kāi)放套件,包括一系列的開(kāi)發(fā)調(diào)試工具。
?。?)易學(xué)易用。網(wǎng)絡(luò)管理人員一般都具有計(jì)算機(jī)以及相關(guān)專(zhuān)業(yè)的背景,都經(jīng)歷過(guò)軟件的初步培訓(xùn)過(guò)程,這些技術(shù)人員一旦學(xué)習(xí)和掌握了相關(guān)工具后,就可以掌握網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)和二次開(kāi)發(fā)的基礎(chǔ)知識(shí)。運(yùn)行于Linux操作系統(tǒng)下的自由軟件GNU gcc編譯器,不僅可以編譯Llnux操作系統(tǒng)下運(yùn)行的應(yīng)用程序,還可以編譯Linux內(nèi)核本身,甚至可以作交叉編譯,編譯運(yùn)行于其它CPU上的程序。
內(nèi)容來(lái)自百科網(wǎng)