www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]構(gòu)造嵌入式Linux

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

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

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

*引導工具

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

*初始化進程

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

*硬件驅(qū)動程序

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

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

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

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

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

精簡內(nèi)核

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

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

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

首先,使用makeconfig把所有可以拿掉的選項都拿得。

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

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

./Makefile

./arch/i386/kernel/

Makefile

這樣一來,整個核心變小了9K,成為179K。

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

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

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

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

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

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

系統(tǒng)啟動

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

./arch/$ARCH/boot/

bootsect.s

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

./init/main.c

bootsect.S及setup.S

這個程序是Linuxkernel的第一個程序,包括了Linux自己的bootstrap程序,但是在說明這個程序前,必須先說明一般IBMPC開機時的動作(此處的開機是指“打開PC的電源”)。

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

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

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

驅(qū)動程序

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

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

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

將X-Window換成MicroWindows

MicroWindows是使用分層結(jié)構(gòu)的設(shè)計方法。允許改變不同的層來適應(yīng)實際的應(yīng)用。在最底一層,提供了屏幕、鼠標/觸摸屏和鍵盤的驅(qū)動,使程序能訪問實際的硬件設(shè)備和其它用戶定制設(shè)備。在中間一層,有一個輕巧的圖形引擎,提供了繪制線條、區(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)用為中心、以計算機技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統(tǒng)。

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

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

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

上海2025年4月21日 /美通社/ -- 當前汽車行業(yè)正經(jīng)歷深刻變革:電動化進程持續(xù)加速,多種技術(shù)路線并行發(fā)展;智能化技術(shù)融合各類場景,加快落地應(yīng)用;消費者個性化需求日益凸顯,舒適性配置成為汽車差異化競爭的關(guān)鍵要素;同...

關(guān)鍵字: 內(nèi)核 汽車產(chǎn)業(yè) 可持續(xù)發(fā)展 智能化技術(shù)

本文將演示一種加速嵌入式系統(tǒng)設(shè)計原型階段的方法,說明如何將與硬件無關(guān)的驅(qū)動程序和傳感器結(jié)合使用,簡化整個嵌入式系統(tǒng)的器件選擇。同時還將介紹嵌入式系統(tǒng)的器件、典型軟件結(jié)構(gòu)以及驅(qū)動程序的實現(xiàn)。后續(xù)文章“利用與硬件無關(guān)的方法簡...

關(guān)鍵字: 嵌入式系統(tǒng) 驅(qū)動程序 傳感器

隨著科技的飛速發(fā)展,嵌入式系統(tǒng)已經(jīng)成為現(xiàn)代生活不可或缺的一部分,它們被廣泛應(yīng)用于從智能家居到自動駕駛汽車的各個領(lǐng)域。而在這些系統(tǒng)中,C語言由于其高效性、可移植性和對硬件的直接控制能力,成為了嵌入式系統(tǒng)開發(fā)的首選語言。

關(guān)鍵字: C語言 驅(qū)動程序

RAM和ROM等存儲單元的物理地址映射是由做硬件的數(shù)字工程師確定,他們在劃分時主要會考慮電路的延遲,將這些儲存單元按照一定的方式掛在同一條AHB總線上。而嵌入式平臺軟件工程師可以通過修改鏈接腳本來設(shè)置哪些數(shù)據(jù)、代碼在程序...

關(guān)鍵字: RAM ROM

新的人工智能驅(qū)動的自動評分解決方案提高了評分效率和一致性,準確率超過95%,大大減少了所有測試格式的時間和成本。 曼谷2024年11月20日 /美通社/ -- 全球領(lǐng)先的考...

關(guān)鍵字: ROM 人工智能 IC NET

ROM和RAM是人盡皆知的概念。即:RAM(random access memory)隨機存儲內(nèi)存 ,這種bai存儲器在斷電時du將丟失其存儲內(nèi)容,故主要用于存儲短時間使用的程序。ROM(Read-Only Memory...

關(guān)鍵字: RAM ROM 嵌入式

每個嵌入式軟件應(yīng)用程序都必須在某個時候訪問最低級別的固件并控制硬件。驅(qū)動程序的設(shè)計和實現(xiàn)對于確保系統(tǒng)能夠滿足其實時要求至關(guān)重要。

關(guān)鍵字: 嵌入式 驅(qū)動程序

上海2024年8月22日 /美通社/ -- 九曲銀河落碧川,蒼穹遼闊引浮翩。8月20-21日,佳通P10極致中國行活動來到天穹如蓋、遼闊無垠的錫林郭勒,開啟一場草原文化和自然風光的深度融合之旅。在佳通駕控P10輪胎提供的...

關(guān)鍵字: P10 輪胎 內(nèi)核 可持續(xù)發(fā)展
關(guān)閉