国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
step by step 構(gòu)建嵌入式Linux系統(tǒng)平臺

前些日子寫的一些文章,大家可以看看...

為了適應(yīng)目前嵌入式系統(tǒng)操作平臺在性能、成本、可靠性等各方面的要求,論述了以Linux作為操作系統(tǒng)平臺的優(yōu)勢,分析了以PC104卡和CompactFlash卡構(gòu)造帶圖形用戶界面(GUI)的Linux系統(tǒng)的關(guān)鍵技術(shù).

0 前言
嵌入式系統(tǒng)的商品化操作系統(tǒng)十分豐富,如Palm OS、VxWorks、pSOS、Neculeus和Windows CE等。高端嵌入式系統(tǒng)要求許多高級的功能,但其價格也相對昂貴,一般用戶難以接受。微軟的Windows CE也有此類功能,卻不具備大多數(shù)嵌入式系統(tǒng)要求的實(shí)時性能,而且難以移植。
Linux為嵌入式系統(tǒng)提供了一個極有吸引力的選擇,對于嵌入式系統(tǒng)而言,性能、成本和可靠性是最至關(guān)重要的三個因素。首先,眾多文獻(xiàn)資料表明,Linux是當(dāng)前可獲得的最簡捷、最快速的操作系統(tǒng) ,其性能優(yōu)越之處,是把圖形處理為一個用戶級的應(yīng)用,圖形可根據(jù)需要被選擇是否運(yùn)行。Linux系統(tǒng)中存在適度復(fù)雜的圖形界面,但是它們并沒有與操作系統(tǒng)的內(nèi)核緊緊捆綁在一起,圖形界面可按需求關(guān)閉。這樣就可以在Linux內(nèi)核上運(yùn)行專門為嵌入式系統(tǒng)定制的圖形系統(tǒng),從而獲得優(yōu)越的性能。其次,Linux系統(tǒng)源代碼完全公開,可以用非常便宜的價格得到各種Linux分發(fā)版,不必考慮許可成本,將用戶從許可證的限制中解脫出來,無需去為資金短缺而煩憂。Linux能正常運(yùn)行于內(nèi)存缺乏,容量緊張的系統(tǒng)中,減少在硬件升級上的開支。另外,在系統(tǒng)穩(wěn)定性方面,Linux幾乎不崩潰,Linux的穩(wěn)定性是由于它沒有像其它操作系統(tǒng)一樣內(nèi)核極其龐大??疾熨Y料表明,Linux與其它Unix系統(tǒng)和大型操作系統(tǒng)如VMS、IBM大型機(jī)等一樣具有相同的可靠性。在上述優(yōu)勢之外,Linux還擁有眾多硬件支持的特點(diǎn)和強(qiáng)大的網(wǎng)絡(luò)支持功能。正因?yàn)長inux在價格、性能、穩(wěn)定性以及用戶定制等方面的突出優(yōu)勢,用它來構(gòu)建系統(tǒng)操作平臺是一個很不錯的解決方案。


1 開發(fā)中的關(guān)鍵問題及解決方案
1.1 硬件及軟件環(huán)境
Linux系統(tǒng)的硬件環(huán)境以PC104卡為核心,卡上集成美國國家半導(dǎo)體公司(NS Geode)GX1 300MHz CPU,SVGA/LCD/LAN接口以及增強(qiáng)型IDE硬盤接口,支持CompactFlash卡。硬盤和光驅(qū)接至PC104的IDE1口,設(shè)置跳線使硬盤為主設(shè)備(master),光驅(qū)為從設(shè)備(slave),CompactFlash裝在IDE2口,設(shè)為主設(shè)備,這樣Linux識別CompactFlah卡為/dev/hdc,而硬盤和光驅(qū)分別為/dev/had,/dev/hdb.我的Linux開發(fā)系統(tǒng)是Red Hat 7.2版,通過PC104上的光驅(qū)安裝在硬盤上。
CompactFlash卡容量為32M,如果系統(tǒng)的BIOS支持自動檢測,應(yīng)該可以直接探測到它。如果不行的話,需要自己輸入卡的各項(xiàng)參數(shù)。確保不要帶電插拔CompactFlash卡,因?yàn)檫@可能導(dǎo)致卡上數(shù)據(jù)的丟失。
    由于像Red Hat或Mandrake這樣的Linux分發(fā)版體積龐大(如果帶X-Windows基本都在1G以上),是不可能裝在容量只有32M的CompactFlash卡上的。目前有許多小型的嵌入式Linux版本,比較有名的有:
ETLinux — 設(shè)計用于在小型工業(yè)計算機(jī),尤其是 PC/104 模塊上運(yùn)行的 Linux 的完全分發(fā)版。
LEM — 運(yùn)行在 386 上的小型(<8 MB)多用戶、網(wǎng)絡(luò) Linux 版本。
LOAF — "Linux On A Floppy"分發(fā)版,運(yùn)行在 386 上。
uClinux — 在沒有 MMU 的系統(tǒng)上運(yùn)行的 Linux。目前支持 Motorola 68K、MCF5206 和 MCF5207 ColdFire 微處理器。
出于深入了解Linux系統(tǒng)運(yùn)行環(huán)境和機(jī)制的想法,建議自己構(gòu)建Linux系統(tǒng),這對于將來系統(tǒng)內(nèi)核版本的升級和應(yīng)用功能的拓展很有好處。選擇Red Hat 7.2的Linux版本。


1.2 系統(tǒng)分區(qū)和格式化
首先,需要在CompactFlash卡上建立分區(qū)和格式化,在Linux下用fdisk命令可以在CompactFlash卡上創(chuàng)建分區(qū),命令格式為fdisk /dev/hdc,然后用mke2fs命令創(chuàng)建ext2文件系統(tǒng).

1.2 系統(tǒng)分區(qū)和格式化
首先,需要在CompactFlash卡上建立分區(qū)和格式化,在Linux下用fdisk命令可以在CompactFlash卡上創(chuàng)建分區(qū),命令格式為fdisk /dev/hdc,然后用mke2fs命令創(chuàng)建ext2文件系統(tǒng).
1.3 編譯內(nèi)核
接下來要做的事情是編譯一個自己的內(nèi)核。內(nèi)核負(fù)責(zé)管理系統(tǒng)的進(jìn)程、內(nèi)存、設(shè)備驅(qū)動程序、文件和網(wǎng)絡(luò)系統(tǒng),決定著系統(tǒng)的性能和穩(wěn)定性。從技術(shù)上而言,Linux 是一個內(nèi)核,而且只是一個內(nèi)核。其余我們通常稱之為 "Linux" (例如一個 shell 和編譯器)的部分實(shí)質(zhì)上只是整個軟件包的一部分,它們從技術(shù)上而言是與 Linux (內(nèi)核)分開的。選擇與開發(fā)系統(tǒng)一樣的內(nèi)核版本2.4.7,在Linux內(nèi)核版本發(fā)布的官方網(wǎng)站
http://www.kernel.org 上可以找到內(nèi)核源代碼。
在編譯內(nèi)核的時候,由于內(nèi)核是在特定的機(jī)器上使用的,所以應(yīng)該對機(jī)器的情況了如指掌。另一方面,為了降低過高的復(fù)雜性,可以不用kernel module支持,把所有需要的東西直接編譯到內(nèi)核里。IDE支持是必不可少的,因?yàn)長inux認(rèn)CompactFlash卡為IDE硬盤,F(xiàn)rame buffer的支持也是必要的,這來源于GUI系統(tǒng)—MiniGUI的要求,網(wǎng)絡(luò)支持可以不要,但是如果認(rèn)為顯示屏將來有這方面的要求也可以把它加上。

1.4 創(chuàng)建根文件系統(tǒng)(Root Filesystem)
在編譯好內(nèi)核后,需要在CompactFlash卡上創(chuàng)建根文件系統(tǒng)。每臺機(jī)器都有根文件系統(tǒng)(一般在本地盤中,當(dāng)然也可以在RAM盤或網(wǎng)絡(luò)盤中),它包含系統(tǒng)引導(dǎo)和使其他文件系統(tǒng)得以mount所必要的文件,根文件系統(tǒng)應(yīng)該有單用戶狀態(tài)所必須的足夠的內(nèi)容。還應(yīng)該包括修復(fù)損壞系統(tǒng)、恢復(fù)備份等的工具。
如果有一個任務(wù)比其它任務(wù)更能簡化從頭構(gòu)建 Linux 根文件系統(tǒng)過程的話,那就是構(gòu)建和安裝 BusyBox 軟件包。BusyBox 是一個可執(zhí)行文件,它提供許多其它常用命令行工具的功能,所有這些功能都合為一體。BusyBox 的文檔聲稱構(gòu)建一個有效系統(tǒng)所需要的全部就是 BusyBox 和"/dev、/etc 以及內(nèi)核"— 而且他們沒有開玩笑。
Busybox 編譯出一個單個的獨(dú)立執(zhí)行程序,就叫做 busybox。但是它可以根據(jù)配置,執(zhí)行 ash shell 的功能,以及幾十個各種小應(yīng)用程序的功能。這其中包括有一個迷你的 vi 編輯器,系統(tǒng)不可或缺的 /sbin/init 程序,以及其他諸如 sed, ifconfig, halt, reboot, mkdir, mount, ln, ls, echo, cat ... 等等這些都是一個正常的系統(tǒng)上必不可少的。但是如果我們把這些程序的原件拿過來的話,它們的體積加在一起,讓人吃不消??墒?busybox 有全部的這么多功能,大小也不過 100K 左右。而且,用戶還可以根據(jù)自己的需要,決定到底要在 busybox 中編譯進(jìn)哪幾個應(yīng)用程序的功能。這樣的話,busybox 的體積就可以進(jìn)一步縮小了。Busybox的具體編譯和配置方法請參閱Busybox的官方文檔,用戶可以在
http://www.busybox.net/上找到.
系統(tǒng)啟動后內(nèi)核調(diào)用的第一個進(jìn)程是/sbin/init。init進(jìn)程是系統(tǒng)所有進(jìn)程的起點(diǎn),內(nèi)核在完成核內(nèi)引導(dǎo)以后,即在本線程(進(jìn)程)空間內(nèi)加載init程序,它的進(jìn)程號是1。init程序需要讀取/etc/inittab文件作為其行為指針,inittab是以行為單位的描述性(非執(zhí)行性)文本,inittab文件至少應(yīng)該包含下面幾行:
::sysinit:/etc/init.d/rcS         //運(yùn)行系統(tǒng)公共腳本
::respawn:/bin/sh             //立即進(jìn)入shell環(huán)境
::ctrlaltdel:/bin/umount -a      //捕捉Ctrl+Alt+Del快捷鍵,退出系統(tǒng)
由于init進(jìn)程第一個執(zhí)行的腳本文件是/etc/init.d/rcS,編輯rcS文件:
#! /bin/sh
mount -a
接著還需要編寫/etc/fstab文件:
proc          /proc          proc           defaults           0       0
none          /var/shm       shm           defaults           0       0


1.5 安裝系統(tǒng)引導(dǎo)工具(boot loader)
現(xiàn)在CompactFlask卡上新的內(nèi)核已經(jīng)有了,文件系統(tǒng)也已經(jīng)建好了,接著要做的事情是安裝系統(tǒng)引導(dǎo)工具(boot loader)。目前可以選用的引導(dǎo)工具很多,象LILO或GRUB都是挺不錯的,用戶可以按自己的喜好來選擇。在這里我們選用LILO,它在硬盤開始的MBR寫入引導(dǎo)代碼,這些代碼不經(jīng)過文件系統(tǒng),直接從硬盤扇區(qū)號讀內(nèi)核映象(kernel image)裝入內(nèi)存。那么要如何安裝LILO呢?首先需要根據(jù)用戶系統(tǒng)的搭建情況編輯/etc/lilo.conf文件,下面是我的/etc/lilo.conf文件,配有注釋,你可以根據(jù)自己的情況進(jìn)行更改,具體你可以參考LILO mini-HOWTO:
boot=/dev/hdc              #從CompactFlash卡啟動
disk=/dev/hdc
bios=0x80                 #使BIOS認(rèn)CompactFlash卡為啟動盤
delay=0                   #可選,以秒為單位
vga=0x311                #可選,參照Frame buffer的配置
image=/boot/vmlinuz-2.4.7   #內(nèi)核文件位置
root=/dev/hdc1             #root分區(qū)位置
label=CompactFlash         #嵌入式Linux的名字
read-write                  #以read-write方式mount根文件系統(tǒng)
編輯完/etc/lilo.conf后,將它寫到CompactFlash卡上,假設(shè)CompactFlash卡已經(jīng)被mount到了/mnt/CompactLinux目錄下,運(yùn)行命令:
/mnt/CompactLinux/sbin/lilo -r /mnt/CompactLinux -C etc/lilo.conf
使用這個命令時必須非常小心,它可能會破壞開發(fā)系統(tǒng)上的引導(dǎo)系統(tǒng)而使它不能啟動,為確保安全應(yīng)在運(yùn)行此命令前先創(chuàng)建系統(tǒng)引導(dǎo)軟盤。
嵌入式Linux系統(tǒng)的雛形建立完成后,應(yīng)先對其進(jìn)行簡單測試。關(guān)上PC104卡的電源,拔下接在IDE1口的硬盤和光驅(qū),合上電源重啟PC104,在BIOS中設(shè)置IDE1口硬盤為None,存盤退出BIOS,進(jìn)入CompactFlash卡上的系統(tǒng)。如果系統(tǒng)可以一直運(yùn)行到出現(xiàn)shell提示符#,那就證明Linux平臺已經(jīng)初步搭建成功了。
1.6 MiniGUI
現(xiàn)在面向嵌入式Linux 系統(tǒng)的圖形用戶界面很多,如MicoroWindows/NanoX ,OpenGUI,Qt/Embedded,MiniGUI等,我們選用的是MiniGUI . MiniGUI是由魏永明主持,并由許多自由軟件開發(fā)人員支持的一個自由軟件項(xiàng)目(遵循 LGPL 條款發(fā)布),其目標(biāo)是為基于 Linux 的實(shí)時嵌入式系統(tǒng)提供一個輕量級的圖形用戶界面支持系統(tǒng)。該項(xiàng)目自 1998 年底開始到現(xiàn)在,歷經(jīng) 3 年多的開發(fā)過程,已經(jīng)非常成熟和穩(wěn)定。因?yàn)?MiniGUI 的靈活性非常好,可以應(yīng)用在包括手持設(shè)備、機(jī)頂盒、游戲終端等在內(nèi)的各種高端或者低端的嵌入式系統(tǒng)中,并且是免費(fèi)的,這使其在眾多GUI系統(tǒng)的競爭中脫穎而出,成為我們選擇它的一個很重要的理由。
從MiniGUI的官方網(wǎng)站(
http://www.minigui.org)上下載MiniGUI的源代碼,在PC104的硬盤上進(jìn)行編譯安裝,MiniGUI的官方網(wǎng)站上有關(guān)于這方面的文檔,本文也就不再贅述了。因?yàn)镸iniGUI 是以源代碼的形式發(fā)布的,在硬盤上以編譯的方法產(chǎn)生的MiniGUI的libminigui 目錄下包含了這些源代碼以及編譯時生成的中間文件,所以需要的空間很大,是不可能將它全部安裝到CompactFlash卡上的,需要的文件有:

*  MiniGUI的演示文件。
*  MiniGUI 的函數(shù)庫,包括 libminigui、libmywins 和 libmgext 等。
*  MiniGUI 的配置文件,即 MiniGUI.cfg 文件。
*  MiniGUI 所使用的資源文件。
如果你覺得文件太大,參照下面的方法進(jìn)行修改:
1. 首先可以修改編譯選項(xiàng),把不用的功能去掉,比如說繁體支持等。這樣庫會小一些。
2.去掉不需要的演示程序。
3. 去掉無用的資源,可以只保留一種字體,只保留一種輸入法,刪除一些位圖文件。
   
至此,帶圖形用戶界面的Linux系統(tǒng)已經(jīng)搭建完成,可以在開發(fā)系統(tǒng)上寫自己的基于MiniGUI的應(yīng)用程序,然后將它拷貝至CompactFlash卡上運(yùn)行。 1.6 MiniGUI
現(xiàn)在面向嵌入式Linux 系統(tǒng)的圖形用戶界面很多,如MicoroWindows/NanoX ,OpenGUI,Qt/Embedded,MiniGUI等,我們選用的是MiniGUI . MiniGUI是由魏永明主持,并由許多自由軟件開發(fā)人員支持的一個自由軟件項(xiàng)目(遵循 LGPL 條款發(fā)布),其目標(biāo)是為基于 Linux 的實(shí)時嵌入式系統(tǒng)提供一個輕量級的圖形用戶界面支持系統(tǒng)。該項(xiàng)目自 1998 年底開始到現(xiàn)在,歷經(jīng) 3 年多的開發(fā)過程,已經(jīng)非常成熟和穩(wěn)定。因?yàn)?MiniGUI 的靈活性非常好,可以應(yīng)用在包括手持設(shè)備、機(jī)頂盒、游戲終端等在內(nèi)的各種高端或者低端的嵌入式系統(tǒng)中,并且是免費(fèi)的,這使其在眾多GUI系統(tǒng)的競爭中脫穎而出,成為我們選擇它的一個很重要的理由。
從MiniGUI的官方網(wǎng)站(
http://www.minigui.org)上下載MiniGUI的源代碼,在PC104的硬盤上進(jìn)行編譯安裝,MiniGUI的官方網(wǎng)站上有關(guān)于這方面的文檔,本文也就不再贅述了。因?yàn)镸iniGUI 是以源代碼的形式發(fā)布的,在硬盤上以編譯的方法產(chǎn)生的MiniGUI的libminigui 目錄下包含了這些源代碼以及編譯時生成的中間文件,所以需要的空間很大,是不可能將它全部安裝到CompactFlash卡上的,需要的文件有:

*  MiniGUI的演示文件。
*  MiniGUI 的函數(shù)庫,包括 libminigui、libmywins 和 libmgext 等。
*  MiniGUI 的配置文件,即 MiniGUI.cfg 文件。
*  MiniGUI 所使用的資源文件。
如果你覺得文件太大,參照下面的方法進(jìn)行修改:
1. 首先可以修改編譯選項(xiàng),把不用的功能去掉,比如說繁體支持等。這樣庫會小一些。
2.去掉不需要的演示程序。
3. 去掉無用的資源,可以只保留一種字體,只保留一種輸入法,刪除一些位圖文件。
   
至此,帶圖形用戶界面的Linux系統(tǒng)已經(jīng)搭建完成,可以在開發(fā)系統(tǒng)上寫自己的基于MiniGUI的應(yīng)用程序,然后將它拷貝至CompactFlash卡上運(yùn)行。
2 一些補(bǔ)充
上面的Linux系統(tǒng)滿足了一個系統(tǒng)所需的基本要求,但是針對不同的硬件環(huán)境和軟件要求,還可以作出一些改進(jìn)。
首先是在體積上的裁減,在本文中采用的是32M的CompactFlash卡,所以這不是一個很迫切的問題,但如果是16M或8M容量DOC,片內(nèi)的空間可以說是寸土寸金,那就需要一些其他的方法:
* 內(nèi)核編譯  在編譯內(nèi)核時去掉不需要的功能,如網(wǎng)絡(luò)支持等。
* uClibc     每個 Linux 系統(tǒng)都需要一個 C 庫。C 庫提供了常用的文件操作(打開、讀和寫)、內(nèi)存管理操作(malloc 和 free)和許多其它使一個 Linux 系統(tǒng)名副其實(shí)的函數(shù)。大多數(shù) Linux 系統(tǒng)使用 gLibc。gLibc 是成熟的、經(jīng)過良好測試的,并且正在積極的開發(fā)中。遺憾的是,它使用的內(nèi)存數(shù)量相對較多,容量也較大。 uClibc是一個現(xiàn)代的、穩(wěn)定的、具有高度兼容性的 gLibc 替代品。uClibc 是針對嵌入式系統(tǒng)開發(fā)的,所以它力圖成為完整但輕量級的 C 庫。
如果系統(tǒng)在啟動后要求登錄的話,建議采用TinyLogin。TinyLogin 是一套 tiny UNIX 實(shí)用程序,它用于登錄嵌入式系統(tǒng)、接受其驗(yàn)證身份、為其修改密碼,并能維護(hù)其用戶和用戶組。為了增強(qiáng)系統(tǒng)安全性它還支持影子口令。正如它的名字所暗示的,TinyLogin 非常小,對嵌入式系統(tǒng)上的 BusyBox 是極好的補(bǔ)充。

3 結(jié)束語

    在嵌入式應(yīng)用的領(lǐng)域里,從因特網(wǎng)設(shè)備到專用的控制系統(tǒng),Linux 操作系統(tǒng)的前景都很光明。所有新造的微型計算機(jī)芯片中大約有 95% 都是用于嵌入式應(yīng)用的。由于 Linux 功能強(qiáng)大、可靠、靈活而且具有伸縮性,再加上它支持大量的微處理器體系結(jié)構(gòu)、硬件設(shè)備、圖形支持和通信協(xié)議,因此大大擴(kuò)展了用途,使其作為許多方案和產(chǎn)品的軟件平臺越來越流行。相信在不久的將來,在許多其它的信息技術(shù)(IT)領(lǐng)域會出現(xiàn)更多的Linux產(chǎn)品!

參考文獻(xiàn)
* Linux bootdisk HOWTO
* LILO mini-HOWTO
* 王學(xué)龍. <<嵌入式Linux系統(tǒng)設(shè)計與應(yīng)用>>. 清華大學(xué)出版社. 2001.8
* Darrick Addison. 嵌入式 Linux 應(yīng)用:概述. IBM developerWorks網(wǎng)站. 2001.8
*
http://www.kernel.org/
* http://www.minigui.org/
* http://www.busybox.net/

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
基于ARM的3DES加密算法實(shí)現(xiàn)(2
系統(tǒng)引導(dǎo)過程及硬盤結(jié)構(gòu)和分區(qū)出現(xiàn)錯誤后解決辦法--寫我情真
Linux服務(wù)器啟動過程詳解(引載)_江海川行
GRUB入門
linux環(huán)境下使用JFS文件系統(tǒng)
編程入門網(wǎng)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服