當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]構(gòu)造嵌入式Linux

Linux自身具備一整套工具鏈,容易自行建立嵌入式系統(tǒng)的開(kāi)發(fā)環(huán)境和交叉運(yùn)行環(huán)境,并且可以跨越嵌入式系統(tǒng)開(kāi)發(fā)中的仿真工具(ICE)的障礙。內(nèi)核的完全開(kāi)放使人們可以自己設(shè)計(jì)和開(kāi)發(fā)出真正的硬實(shí)時(shí)系統(tǒng),軟實(shí)時(shí)系統(tǒng)在Linux中也容易得到實(shí)現(xiàn)。強(qiáng)大的網(wǎng)絡(luò)支持使得可以利用Linux的網(wǎng)絡(luò)協(xié)議棧將其開(kāi)發(fā)成為嵌入式的TCP/IP網(wǎng)絡(luò)協(xié)議棧。

Linux提供了完成嵌入功能的基本內(nèi)核和所需要的所有用戶界面,它是多面的。它能處理嵌入式任務(wù)和用戶界面。

一個(gè)小型的嵌入式Linux系統(tǒng)只需要下面三個(gè)基本元素:

*引導(dǎo)工具

*Linux微內(nèi)核,由內(nèi)存管理、進(jìn)程管理和事務(wù)處理構(gòu)成

*初始化進(jìn)程

如果要讓它能干點(diǎn)什么且繼續(xù)保持小型化,還得加上:

*硬件驅(qū)動(dòng)程序

*提供所需功能的一個(gè)或更多應(yīng)用程序。

再增加功能,或許需要這些:

*一個(gè)文件系統(tǒng)(也許在ROM或RAM)中

*TCP/IP網(wǎng)絡(luò)堆棧

下面我們就從精簡(jiǎn)內(nèi)核、系統(tǒng)啟動(dòng)、驅(qū)動(dòng)程序?qū)ⅰ-Window換成MicroWindows四個(gè)步驟介紹嵌入式Linux的實(shí)際開(kāi)發(fā)。

精簡(jiǎn)內(nèi)核

構(gòu)造內(nèi)核的常用命令包括:makeconfig、dep、clean、mrproper、zImage、bzImage、modules、modules_install。命令說(shuō)明略。

現(xiàn)在舉個(gè)例子說(shuō)明一下:

我使用的是Mandrake內(nèi)附的2.2.15。我沒(méi)有修改任何一行程序碼,完全只靠修改組態(tài)檔得到這些數(shù)據(jù)。

首先,使用makeconfig把所有可以拿掉的選項(xiàng)都拿得。

不要floppy;不要SMP、MTRR;不要Networking、SCSI;把所有的blockdevice移除,只留下oldIDEdevice;把所有的characterdevice移除;把所有的filesystem移除,只留下minix;不要sound支援。相信我,我己經(jīng)把所有的選項(xiàng)都移除了。這樣做之后,我的到了一個(gè)188K的核心。

還不夠小嗎?OK,再加上一招,請(qǐng)把下列兩個(gè)檔案中的-O3,-O2用-Os取代。

./Makefile

./arch/i386/kernel/

Makefile

這樣一來(lái),整個(gè)核心變小了9K,成為179K。

不過(guò)這個(gè)核心恐怕很難發(fā)揮Linux的功能,因此我決定把網(wǎng)絡(luò)加回去。把General中的networksupport加回去,重新編譯,核心變成189K。10K就加上個(gè)TCP/IPstack,似乎是很上算的生意。

有stack沒(méi)有driver也是枉然,所以我把embeddedboard常用的RTL8139的driver加回去,195K。

如果你需要DOS檔案系統(tǒng),那大小成為213K。如果minix用ext2換代,則大小成長(zhǎng)至222K。

Linux所需的內(nèi)存大約在600K~800K之間。1MB內(nèi)存就可能可以開(kāi)機(jī)了,但不太有用,因?yàn)檫B載入C程序庫(kù)都有困難。2MB內(nèi)存應(yīng)該就可以做點(diǎn)事了,但要到4MB以上才可以執(zhí)行一個(gè)比較完整的系統(tǒng)。

因?yàn)長(zhǎng)inux的filesystem相當(dāng)大,大約在230K左右,占了1/3的體積。內(nèi)存管理占了80K,和核心其它部分的總和差不多。TCP/IPstack占了65K,驅(qū)動(dòng)程序占了120K。SysVIPC占了21K,必要的話可以拿掉,核心檔應(yīng)該可以再小個(gè)10K左右。

如果要裁剪核心大小,應(yīng)該動(dòng)那里呢?答案很明顯,當(dāng)然是文件系統(tǒng)。Linux的VFS簡(jiǎn)化了檔案系統(tǒng)的設(shè)計(jì),buffercache,directorycache增加了系統(tǒng)的效率。但這些embedded系統(tǒng)根本就用處不大。如果可以把它們拿掉,核心可以馬上縮小20K左右。如果跳過(guò)整個(gè)VFS,直接將文件系統(tǒng)寫(xiě)成一個(gè)driver的型式,應(yīng)該可以將230K縮減至50K左右。整個(gè)核心縮到100K左右。

系統(tǒng)啟動(dòng)

系統(tǒng)的啟動(dòng)順序及相關(guān)文件仍在核心源碼目錄下,看以下幾個(gè)文件:

./arch/$ARCH/boot/

bootsect.s

./arch/$ARCH/boot/setup.s

./init/main.c

bootsect.S及setup.S

這個(gè)程序是Linuxkernel的第一個(gè)程序,包括了Linux自己的bootstrap程序,但是在說(shuō)明這個(gè)程序前,必須先說(shuō)明一般IBMPC開(kāi)機(jī)時(shí)的動(dòng)作(此處的開(kāi)機(jī)是指“打開(kāi)PC的電源”)。

一般PC在電源一開(kāi)時(shí),是由內(nèi)存中地址FFFF:0000開(kāi)始執(zhí)行(這個(gè)地址一定在ROMBIOS中,ROMBIOS一般是在FEOOOh到FFFFFh中),而此處的內(nèi)容則是一個(gè)jump指令,jump到另一個(gè)位于ROMBIOS中的位置,開(kāi)始執(zhí)行一系列的動(dòng)作。

緊接著系統(tǒng)測(cè)試碼之后,控制權(quán)會(huì)轉(zhuǎn)移給ROM中的啟動(dòng)程序(ROMbootstraproutine)。這個(gè)程序會(huì)將磁盤(pán)上的第零軌第零扇區(qū)讀入內(nèi)存中,至于讀到內(nèi)存的哪里呢?--絕對(duì)位置07C0:0000(即07C00h處),這是IBM系列PC的特性。而位于Linux開(kāi)機(jī)磁盤(pán)的bootsector上的,正是Linux的bootsect程序。

把大家所熟知的MSDOS與Linux的開(kāi)機(jī)部分做個(gè)粗淺的比較。MSDOS由位于磁盤(pán)上bootsector的boot程序負(fù)責(zé)把IO.SYS載入內(nèi)存中,而IO.SYS則負(fù)有把DOS的kernel--MSDOS.SYS載入內(nèi)存的重任。而Linux則是由位于bootsector的bootsect程序負(fù)責(zé)把setup及Linux的kernel載入內(nèi)存中,再將控制權(quán)交給setup。

驅(qū)動(dòng)程序

在Linux系統(tǒng)里,設(shè)備驅(qū)動(dòng)程序所提供的這組入口點(diǎn)由一個(gè)結(jié)構(gòu)來(lái)向系統(tǒng)進(jìn)行說(shuō)明。

設(shè)備驅(qū)動(dòng)程序所提供的入口點(diǎn),在設(shè)備驅(qū)動(dòng)程序初始化的時(shí)候向系統(tǒng)進(jìn)行登記,以便系統(tǒng)在適當(dāng)?shù)臅r(shí)候調(diào)用。Linux系統(tǒng)里,通過(guò)調(diào)用register_chrdev向系統(tǒng)注冊(cè)字符型設(shè)備驅(qū)動(dòng)程序。

在Linux里,除了直接修改系統(tǒng)核心的源代碼,把設(shè)備驅(qū)動(dòng)程序加進(jìn)核心里以外,還可以把設(shè)備驅(qū)動(dòng)程序作為可加載的模塊,由系統(tǒng)管理員動(dòng)態(tài)地加載它,使之成為核心的一部分。也可以由系統(tǒng)管理員把已加載的模塊動(dòng)態(tài)地卸載下來(lái)。Linux中,模塊可以用C語(yǔ)言編寫(xiě),用gcc編譯成目標(biāo)文件(不進(jìn)行鏈接,作為*.o文件存在)。為此需要在gcc命令行里加上-c的參數(shù)。在成功地向系統(tǒng)注冊(cè)了設(shè)備驅(qū)動(dòng)程序后(調(diào)用register_chrdev成功后),就可以用mknod命令來(lái)把設(shè)備映射為一個(gè)特別文件。其它程序使用這個(gè)設(shè)備的時(shí)候,只要對(duì)此特別文件進(jìn)行操作就行了。

將X-Window換成MicroWindows

MicroWindows是使用分層結(jié)構(gòu)的設(shè)計(jì)方法。允許改變不同的層來(lái)適應(yīng)實(shí)際的應(yīng)用。在最底一層,提供了屏幕、鼠標(biāo)/觸摸屏和鍵盤(pán)的驅(qū)動(dòng),使程序能訪問(wèn)實(shí)際的硬件設(shè)備和其它用戶定制設(shè)備。在中間一層,有一個(gè)輕巧的圖形引擎,提供了繪制線條、區(qū)域填充、繪制多邊形、裁剪和使用顏色模式的方法。在最上一層,提供了不同的API給圖形應(yīng)用程序使用。這些API可以提供或不提供桌面和窗口外形。目前,MicroWindows支持WindowsWin32/WinCEGDI和Nano-XAPI。這些API提供了Win32和X窗口系統(tǒng)的緊密兼容性,使得別的應(yīng)用程序可以很容易就能移植到MicroWindows上。[!--empirenews.page--]

何謂嵌入式系統(tǒng)

嵌入式系統(tǒng)被定義為:以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng)。

嵌入式系統(tǒng)是面向用戶、面向產(chǎn)品、面向應(yīng)用的,如果獨(dú)立于應(yīng)用自行發(fā)展,則會(huì)失去市場(chǎng)。嵌入式處理器的功耗、體積、成本、可靠性、速度、處理能力、電磁兼容性等方面均受到應(yīng)用要求的制約,這些也是各個(gè)半導(dǎo)體廠商之間競(jìng)爭(zhēng)的熱點(diǎn)。嵌入式處理器的應(yīng)用軟件是實(shí)現(xiàn)嵌入式系統(tǒng)功能的關(guān)鍵。軟件要求固化存儲(chǔ),軟件代碼要求高質(zhì)量、高可靠性,系統(tǒng)軟件(OS)的高實(shí)時(shí)性是基本要求。

在制造工業(yè)、過(guò)程控制、通訊、儀器、儀表、汽車(chē)、船舶、航空、航天、軍事裝備、消費(fèi)類(lèi)產(chǎn)品等方面均是嵌入式計(jì)算機(jī)的應(yīng)用領(lǐng)域.

本站聲明: 本文章由作者或相關(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ā)表演講稱(chēng),數(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)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

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