《ARM嵌入式系統(tǒng)原理及應(yīng)用開發(fā)》課件第6章0815_第1頁(yè)
《ARM嵌入式系統(tǒng)原理及應(yīng)用開發(fā)》課件第6章0815_第2頁(yè)
《ARM嵌入式系統(tǒng)原理及應(yīng)用開發(fā)》課件第6章0815_第3頁(yè)
《ARM嵌入式系統(tǒng)原理及應(yīng)用開發(fā)》課件第6章0815_第4頁(yè)
《ARM嵌入式系統(tǒng)原理及應(yīng)用開發(fā)》課件第6章0815_第5頁(yè)
已閱讀5頁(yè),還剩128頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第6章嵌入式Linux操作系統(tǒng)及應(yīng)用6.1嵌入式Linux操作系統(tǒng)概述6.2嵌入式Linux的常用命令6.3嵌入式Linux開發(fā)環(huán)境的構(gòu)建6.4嵌入式Linux內(nèi)核的移植 6.1嵌入式Linux操作系統(tǒng)概述

6.1.1常用嵌入式Linux系統(tǒng)

1.?RT-Linux

這是由墨西哥理工學(xué)院開發(fā)的嵌入式Linux操作系統(tǒng)。到目前為止,RT-Linux已經(jīng)成功地應(yīng)用于航天飛機(jī)的空間數(shù)據(jù)采集、科學(xué)儀器測(cè)控和電影特技圖像處理等廣泛領(lǐng)域。RT-Linux開發(fā)者并沒有針對(duì)實(shí)時(shí)操作系統(tǒng)的特性而重寫Linux的內(nèi)核,因?yàn)檫@樣做的工作量非常大,而且要保證兼容性也非常困難。為此,RT-Linux提出了精巧的內(nèi)核,并把標(biāo)準(zhǔn)的Linux核心作為實(shí)時(shí)核心的一個(gè)進(jìn)程,同用戶的實(shí)時(shí)進(jìn)程一起調(diào)度。這樣對(duì)Linux的改動(dòng)非常小,并且充分利用了Linux下現(xiàn)有的豐富的軟件資源。

2.μCLinux

μCLinux是一種優(yōu)秀的嵌入式Linux版本,是micro-Control-Linux的縮寫。它繼承了標(biāo)準(zhǔn)Linux的優(yōu)良特性,經(jīng)過各方面的小型化改造,形成了一個(gè)高度優(yōu)化的、代碼緊湊的嵌入式Linux。μCLinux主要是針對(duì)目標(biāo)處理器沒有存儲(chǔ)管理單元MMU(MemoryManagementUnit)的嵌入式系統(tǒng)而設(shè)計(jì)的。雖然它的體積很小,卻仍然保留了Linux的大多數(shù)的優(yōu)點(diǎn),如穩(wěn)定、良好的移植性、優(yōu)秀的網(wǎng)絡(luò)功能、對(duì)各種文件系統(tǒng)完備的支持和標(biāo)準(zhǔn)豐富的API。μCLinux專為嵌入式系統(tǒng)做了許多小型化的工作,目前已支持多款CPU。其編譯后目標(biāo)文件可控制在幾百KB數(shù)量級(jí),并已經(jīng)被成功地移植到很多平臺(tái)上。它是Lineo公司的主打產(chǎn)品,同時(shí)也是開放源代碼的嵌入式Linux的典范。

3.?ARM-Linux

ARM-Linux是一個(gè)成功的Linux內(nèi)核的組成部分,它是專門為基于ARM系列處理器而設(shè)計(jì)的。它是由RussellKing在其他人的經(jīng)驗(yàn)基礎(chǔ)上主創(chuàng)出來(lái)的。ARM-Linux正在被全世界不同的組織和個(gè)人持續(xù)的完善和發(fā)展。目前,除了不含MMU的ARM7處理器外,其他的ARM9/XSCALE等ARM系列處理器都運(yùn)行ARM-Linux。據(jù)不完全統(tǒng)計(jì),ARM-Linux內(nèi)核已經(jīng)移植到500種以上的機(jī)器種類上,其中包括個(gè)人電腦、網(wǎng)絡(luò)計(jì)算機(jī)、掌上設(shè)備和各種開發(fā)板。

4.?Redhat-Linux

Redhat公司是全球最大的開源技術(shù)廠家,其產(chǎn)品RedhatLinux也是全世界應(yīng)用最廣泛的Linux。Redhat公司總部位于美國(guó)北卡羅來(lái)納州,在全球擁有22個(gè)分公司。它的產(chǎn)品市場(chǎng)占有率很高,約占Linux操作系統(tǒng)52%的市場(chǎng)份額。它也是Compaq、Dell、Intel等一流的IT企業(yè)的合作伙伴。

現(xiàn)在Redhat已不自己開發(fā)桌面版的Linux操作系統(tǒng)。它最后推出的一款產(chǎn)品是RedhatLinux9。Redhat把桌面版Linux操作系統(tǒng)產(chǎn)品交由Fedora社區(qū)開發(fā)。FedoraCore是由Redhat資助的合作項(xiàng)目產(chǎn)生的一款產(chǎn)品。因?yàn)镕edoraCore最初就是在Redhat的基礎(chǔ)上開發(fā)的,所以由Redhat和Fedora聯(lián)手共同開發(fā)維護(hù)這個(gè)產(chǎn)品。

5.?XLinux

XLinux是由美國(guó)網(wǎng)虎公司推出的。美國(guó)網(wǎng)虎公司是全球性的Linux相關(guān)技術(shù)開發(fā)的領(lǐng)導(dǎo)廠商,成立于1998年9月,總部設(shè)在美國(guó)硅谷。公司致力于發(fā)展Linux的先進(jìn)技術(shù)及實(shí)際應(yīng)用(如Linux嵌入式系統(tǒng)在IA信息家電網(wǎng)領(lǐng)域中的應(yīng)用),并將XLinux建立成為全球Linux的領(lǐng)導(dǎo)品牌。XLinux核心采用了“超字元集”專利技術(shù),讓Linux核心不僅可以與標(biāo)準(zhǔn)字符集相容,還涵蓋了12個(gè)國(guó)家和地區(qū)的字符集。因此,XLinux在推廣Linux的國(guó)際應(yīng)用方面有獨(dú)特的優(yōu)勢(shì)。最新版的XLinuxOS1.5是功能齊全且穩(wěn)定性高的Linux操作系統(tǒng),它不僅提供友好、簡(jiǎn)單的使用界面,而且提供菜單和窗口對(duì)話框方式的系統(tǒng)配置和管理工具。另外,XLinuxOS1.5采用交互式的安裝界面,只需要15~30分鐘就可以完成系統(tǒng)的安裝。

6.紅旗嵌入式Linux

由北京中科院紅旗軟件公司推出的嵌入式Linux是國(guó)內(nèi)做得較好的一款嵌入式操作系統(tǒng)。目前,中科院計(jì)算所自行開發(fā)的開放源碼的嵌入式操作系統(tǒng)—EasyEmbeddedOS(EEOS)也已經(jīng)開始進(jìn)入實(shí)用階段了。該款嵌入式操作系統(tǒng)重點(diǎn)支持p-Java。系統(tǒng)目標(biāo)一方面是小型化,另一方面是能實(shí)現(xiàn)Linux的驅(qū)動(dòng)和其他模塊。由于有中科院計(jì)算所的強(qiáng)大科研力量做后盾,EEOS有望發(fā)展成為功能完善、穩(wěn)定、可靠的國(guó)產(chǎn)嵌入式操作系統(tǒng)平臺(tái)。6.1.2嵌入式Linux系統(tǒng)內(nèi)核

嵌入式Linux系統(tǒng)需要三個(gè)基本要素:系統(tǒng)引導(dǎo)工具(用于機(jī)器加電后的系統(tǒng)定位引導(dǎo))、Linux微內(nèi)核(內(nèi)存管理、程序管理)和初始化進(jìn)程。但如果要讓它成為完整的操作系統(tǒng)并且繼續(xù)保持小型化,還必須加上硬件驅(qū)動(dòng)程序、硬件接口程序和應(yīng)用程序組。

1.內(nèi)核體系結(jié)構(gòu)

Linux內(nèi)核采用的是單一內(nèi)核結(jié)構(gòu)。這種內(nèi)核結(jié)構(gòu)的重要特征是模塊化。模塊化能有效實(shí)現(xiàn)許多良好的功能。每個(gè)模塊都是一個(gè)目標(biāo)文件,它的代碼可以在運(yùn)行時(shí)被鏈接到內(nèi)核。目標(biāo)代碼往往由函數(shù)集組成,該集合實(shí)現(xiàn)了文件系統(tǒng)、設(shè)備驅(qū)動(dòng)器以及其他一些內(nèi)核的上層特征。Linux對(duì)模塊給予了強(qiáng)有力的支持,在各個(gè)模塊之間規(guī)定了一些良好的界面,并且可以動(dòng)態(tài)地裝入和卸載內(nèi)核中的部分代碼。

Linux的內(nèi)核為非搶占式的。它不能通過改變優(yōu)先權(quán)來(lái)影響當(dāng)前的執(zhí)行流程,因此,可以對(duì)Linux某些重要的數(shù)據(jù)結(jié)構(gòu)進(jìn)行修改而不加任何保護(hù)措施。Linux內(nèi)核主要有下列功能:①用軟件接口抽象不同的硬件資源,以簡(jiǎn)化操作,屏蔽低層硬件的不同接口,即資源抽象;②將抽象出來(lái)的各種資源分配給各個(gè)進(jìn)程并負(fù)責(zé)取回這些系統(tǒng)資源,即資源分配;③根據(jù)不同的資源類型使用不同的機(jī)制保證資源被進(jìn)程所獨(dú)占,即資源共享。簡(jiǎn)而言之,Linux內(nèi)核包含進(jìn)程調(diào)度、內(nèi)存管理、文件系統(tǒng)、進(jìn)程間通信、網(wǎng)絡(luò)及資源管理六部分。Linux內(nèi)核的體系結(jié)構(gòu)如圖6.1所示。圖6.1Linux內(nèi)核的體系結(jié)構(gòu)

1)進(jìn)程調(diào)度

進(jìn)程調(diào)度控制CPU資源的分配。Linux內(nèi)核采用給予優(yōu)先級(jí)的搶占式多任務(wù)調(diào)度方式。在這種調(diào)度方式下,系統(tǒng)中運(yùn)行的進(jìn)程是所有可運(yùn)行進(jìn)程中優(yōu)先級(jí)最高的那個(gè)。在嵌入式系統(tǒng)的應(yīng)用中,有很多實(shí)時(shí)需求,所以有些用于嵌入式系統(tǒng)的Linux通過改變進(jìn)程調(diào)度來(lái)實(shí)現(xiàn)實(shí)時(shí)調(diào)度。此類Linux內(nèi)核中進(jìn)程調(diào)度部分和具體的硬件平臺(tái)相關(guān)性不大,因?yàn)檎{(diào)度算法在所有硬件平臺(tái)上的實(shí)現(xiàn)都是相同的。但是進(jìn)程調(diào)度一般都是通過硬件的時(shí)鐘中斷來(lái)實(shí)現(xiàn)的,這一部分與具體硬件相關(guān),另外在進(jìn)程切換部分也和硬件平臺(tái)相關(guān),所以進(jìn)程切換部分一般都用匯編語(yǔ)言實(shí)現(xiàn)。

2)內(nèi)存管理

標(biāo)準(zhǔn)Linux系統(tǒng)在具有MMU的硬件中支持虛擬內(nèi)存,它使用硬件提供的分頁(yè)機(jī)制。Linux的內(nèi)存管理系統(tǒng)用于管理內(nèi)存資源,它實(shí)現(xiàn)了進(jìn)程之間的內(nèi)存保護(hù)、內(nèi)存共享以及內(nèi)存管理功能。內(nèi)存管理可分為硬件相關(guān)部分和硬件無(wú)關(guān)部分。其中硬件相關(guān)部分負(fù)責(zé)初始化內(nèi)存、處理缺頁(yè)中斷、把硬件提供的分頁(yè)機(jī)制抽象成三級(jí)頁(yè)面映射;硬件無(wú)關(guān)部分提供內(nèi)存分配、內(nèi)存映射等功能。有些嵌入式設(shè)備采用的CPU不具有MMU,在這種設(shè)備中,需要把Linux中的虛擬內(nèi)存管理系統(tǒng)去掉。

3)文件系統(tǒng)

Linux的文件系統(tǒng)結(jié)構(gòu)與UNIX的類似,該系統(tǒng)具有虛擬文件系統(tǒng)(VFS)接口,所有真正的文件系統(tǒng)都掛接在虛擬文件系統(tǒng)下,通過虛擬文件系統(tǒng)接口來(lái)訪問。由于使用了統(tǒng)一的接口,因此Linux可以支持多個(gè)文件系統(tǒng),包括一些特殊的文件系統(tǒng)。

Linux的文件系統(tǒng)可分為以下三個(gè)子系統(tǒng):

(1)虛擬文件系統(tǒng)(VFS)。VFS提供了所有文件以及設(shè)備的數(shù)據(jù)抽象,即給上層提供文件操作的接口。其接口函數(shù)包括文件的打開、讀、寫、控制等。Linux操作系統(tǒng)的VFS僅僅存在于內(nèi)存中,它在初始化完成之后,從邏輯文件系統(tǒng)的存儲(chǔ)介質(zhì)加載相應(yīng)的邏輯文件系統(tǒng)到VFS中的某個(gè)路徑,并讀取該邏輯文件中的超級(jí)塊以及索引節(jié)點(diǎn),以建立統(tǒng)一的VFS索引節(jié)點(diǎn)。VFS是內(nèi)核的一個(gè)子系統(tǒng),其他系統(tǒng)只與VFS打交道,不與邏輯文件系統(tǒng)發(fā)生關(guān)系。對(duì)邏輯文件系統(tǒng)而言,VFS是管理者;對(duì)內(nèi)核的其他子系統(tǒng)而言,VFS是它們與邏輯文件系統(tǒng)的接口。同時(shí),VFS還給設(shè)備操作進(jìn)程提供通信接口。在VFS中,采用超級(jí)塊、索引節(jié)點(diǎn)等多級(jí)機(jī)制對(duì)文件進(jìn)行查找、操作、管理。

(2)邏輯文件系統(tǒng)。邏輯文件系統(tǒng)對(duì)應(yīng)各種Linux支持的文件系統(tǒng),它實(shí)現(xiàn)了邏輯數(shù)據(jù)塊與物理數(shù)據(jù)塊之間的轉(zhuǎn)換和映射以及緩沖區(qū)的管理。由于文件系統(tǒng)抽象的具體文件設(shè)備在不同的硬件環(huán)境中差別很大,因此需要邏輯文件系統(tǒng)來(lái)實(shí)現(xiàn)從邏輯塊到物理塊的分配。

(3)設(shè)備管理部分。在設(shè)備管理部分,所有的設(shè)備按照外部數(shù)據(jù)與內(nèi)存數(shù)據(jù)的交換方式分為塊設(shè)備和字符設(shè)備。設(shè)備驅(qū)動(dòng)程序可以通過塊設(shè)備和字符設(shè)備所對(duì)應(yīng)的文件索引節(jié)點(diǎn)號(hào)來(lái)實(shí)現(xiàn)對(duì)設(shè)備的訪問。設(shè)備管理主要實(shí)現(xiàn)對(duì)驅(qū)動(dòng)程序的管理。設(shè)備按照主設(shè)備號(hào)和從設(shè)備號(hào)來(lái)識(shí)別,相同主設(shè)備號(hào)代表一類設(shè)備,其操作訪問方式相同,不同的從設(shè)備號(hào)代表相同種類的多個(gè)設(shè)備。設(shè)備驅(qū)動(dòng)層按照標(biāo)準(zhǔn)的方式進(jìn)行編譯并且注冊(cè)到系統(tǒng)中后,就可以按照統(tǒng)一的界面被調(diào)用。

文件系統(tǒng)是Linux的核心部分。在Linux系統(tǒng)中,許多概念和語(yǔ)義都與文件有關(guān),如文件操作、設(shè)備讀寫、管道通信等。所以文件子系統(tǒng)給應(yīng)用程序提供的頁(yè)面非常重要。

4)進(jìn)程間通信(IPC)

一般情況下,進(jìn)程在自己的地址空間運(yùn)行時(shí)不會(huì)互相干擾。但是有很多應(yīng)用會(huì)要求在進(jìn)程間傳遞信息,所以Linux也提供了UNIX中常用的進(jìn)程間通信機(jī)制。主要的進(jìn)程間通信方式有管道(Pipe)、文件鎖、SystemVIPC、信號(hào)(Signal)及共享內(nèi)存等。因?yàn)長(zhǎng)inux支持網(wǎng)絡(luò),所以還可以使用網(wǎng)絡(luò)接口進(jìn)行進(jìn)程間通信。Linux的進(jìn)程間通信機(jī)制和硬件體系無(wú)關(guān),在大多數(shù)的平臺(tái)上都支持同樣的方式。

5)網(wǎng)絡(luò)

Linux是在互聯(lián)網(wǎng)環(huán)境下產(chǎn)生的操作系統(tǒng),所以它對(duì)網(wǎng)絡(luò)具有良好的支持。Linux內(nèi)核支持多種網(wǎng)絡(luò)協(xié)議,如IP、IPV6、IPX、Appletalk及藍(lán)牙等;支持路由、防火墻過濾等網(wǎng)絡(luò)設(shè)備功能;并提供標(biāo)準(zhǔn)的BSDsocket編程接口。Linux上有大量網(wǎng)絡(luò)應(yīng)用,所有常用的基于IP的應(yīng)用在Linux世界里都可以以GPL方式獲得。Linux的內(nèi)核網(wǎng)絡(luò)代碼和硬件體系無(wú)關(guān)。

6)資源管理

Linux中除了CPU和內(nèi)存,其他資源都是用驅(qū)動(dòng)程序的形式加以管理的,因此,其內(nèi)核代碼的絕大部分是各種驅(qū)動(dòng)程序,并且隨著系統(tǒng)支持的硬件的增加,代碼增加量最大的也是驅(qū)動(dòng)程序。

2.內(nèi)核源碼結(jié)構(gòu)

Linux的內(nèi)核源碼結(jié)構(gòu)類似于抽象結(jié)構(gòu),大體分為進(jìn)程管理、內(nèi)存管理、文件系統(tǒng)、驅(qū)動(dòng)程序和網(wǎng)絡(luò)5個(gè)部分。這種對(duì)應(yīng)性是因?yàn)槌橄蠼Y(jié)構(gòu)來(lái)源于具體結(jié)構(gòu),它很接近源代碼的目錄結(jié)構(gòu)。但是,這種劃分沒有嚴(yán)格依照源代碼的目錄結(jié)構(gòu),且與各子系統(tǒng)的分組也不完全匹配。下面以Linux2.6.14為例介紹Linux的內(nèi)核源碼結(jié)構(gòu)。

Linux2.6.14內(nèi)核源碼有440MB之多,其目錄組成如圖6.2所示(這里假設(shè)Linux2.6.14內(nèi)核代碼的存放位置為/usr/src/linux-2.6.14)。

圖6.2Linux2.6.14內(nèi)核文件結(jié)構(gòu)圖6.2中各目錄的意義和作用如下:

(1)?arch目錄。arch目錄包括所有與體系結(jié)構(gòu)相關(guān)的核心代碼。它包含24個(gè)子目錄,每一個(gè)子目錄都代表一種體系,如ARM就是關(guān)于ARM及與之相兼容體系結(jié)構(gòu)的子目錄。對(duì)于任何平臺(tái),arch目錄必須包括以下子目錄:

●boot:?jiǎn)?dòng)內(nèi)核所使用的部分或全部平臺(tái)特有的代碼。

kernel:存放支持體系結(jié)構(gòu)特有的(如信號(hào)處理和AMP)特征的實(shí)現(xiàn)。

lib:存放高速的體系結(jié)構(gòu)特有的(如strlen和memcpy)通用函數(shù)的實(shí)現(xiàn)。

mm:存放體系結(jié)構(gòu)特有的內(nèi)存管理程序的實(shí)現(xiàn)。

math-emu:模擬FPU的代碼。

(2)?include目錄。include目錄包括編譯核心所需要的大部分頭文件。與平臺(tái)無(wú)關(guān)的頭文件在include/linux子目錄下;與平臺(tái)相關(guān)的頭文件放在include目錄下文件名以asm開頭的子目錄中。例如,與i386相關(guān)的頭文件放在include/asm-i386子目錄下。

(3)?init目錄。init目錄包含核心的初始化代碼(不是系統(tǒng)的引導(dǎo)代碼),包含main.c和version.c兩個(gè)文件,是研究核心如何工作的一個(gè)比較好的起點(diǎn)。

(4)?mm目錄。mm目錄包括所有獨(dú)立于CPU體系結(jié)構(gòu)的內(nèi)存管理代碼,如頁(yè)式存儲(chǔ)管理內(nèi)存的分配和釋放等(與體系結(jié)構(gòu)相關(guān)的內(nèi)存管理代碼位于arch/*/mm/,如arch/i386/mm/Fault.c)。

(5)?kernel目錄。kernel目錄為系統(tǒng)主要的核心代碼,該目錄下的文件包含了大多數(shù)Linux系統(tǒng)的內(nèi)存函數(shù),其中最重要的文件當(dāng)屬sched.c。

(6)?drivers目錄。drivers目錄放置系統(tǒng)所有的設(shè)備驅(qū)動(dòng)程序,每種驅(qū)動(dòng)程序又各占一個(gè)子目錄,如/block下為塊設(shè)備驅(qū)動(dòng)程序。

(7)?lib目錄。lib目錄放置核心的庫(kù)代碼及一些與平臺(tái)無(wú)關(guān)的通用函數(shù),如strlen和memcpy等函數(shù)。

(8)?net目錄。net目錄是系統(tǒng)的網(wǎng)絡(luò)部分代碼,其中每個(gè)子目錄對(duì)應(yīng)網(wǎng)絡(luò)的一個(gè)方面。

(9)?ipc目錄。ipc目錄包含核心的進(jìn)程間通信的代碼,包括util.c、sem.c和msg.c等。

(10)?fs目錄。fs目錄包括所有的文件系統(tǒng)代碼和各種類型的文件操作代碼,它的每一個(gè)子目錄都支持一個(gè)文件系統(tǒng),如fat和ext2。

(11)?scripts目錄。scripts目錄包含用于對(duì)核心進(jìn)行配置的腳本文件。6.1.3嵌入式Linux的文件系統(tǒng)

1)嵌入式Linux文件系統(tǒng)原理

Linux下的文件系統(tǒng)主要可分為三個(gè)層次:一是上層用戶空間的應(yīng)用程序?qū)ξ募到y(tǒng)的系統(tǒng)調(diào)用;二是虛擬文件系統(tǒng)VFS(VirtualFilesystemSwitch);三是掛載到VFS中的各種實(shí)際文件系統(tǒng)。嵌入式Linux系統(tǒng)中文件系統(tǒng)的體系架構(gòu)如圖6.3所示。圖6.3嵌入式Linux文件系統(tǒng)體系架構(gòu)圖6.3嵌入式Linux文件系統(tǒng)體系架構(gòu)

用戶空間包含一些應(yīng)用程序(如文件系統(tǒng)的使用者)和GNUC庫(kù)(glibc),用來(lái)為文件系統(tǒng)調(diào)用(打開,讀取,寫和關(guān)閉)用戶接口。系統(tǒng)調(diào)用接口的作用就像是交換器,它將系統(tǒng)調(diào)用從用戶空間發(fā)送到內(nèi)核空間中的適當(dāng)端點(diǎn)。系統(tǒng)調(diào)用實(shí)際上是通過調(diào)用內(nèi)核虛擬文件系統(tǒng)提供的統(tǒng)一接口來(lái)完成對(duì)各種設(shè)備的使用。

VFS(虛擬文件系統(tǒng))就是把各種具體的文件系統(tǒng)的公共部分抽取出來(lái),形成一個(gè)抽象層,是系統(tǒng)內(nèi)核的一部分。它位于用戶程序和具體的文件系統(tǒng)之間。它為用戶程序提供了標(biāo)準(zhǔn)的文件系統(tǒng)調(diào)用接口,對(duì)具體的文件系統(tǒng),它通過一系列的系統(tǒng)公用的函數(shù)指針來(lái)實(shí)際調(diào)用具體的文件系統(tǒng)函數(shù),完成實(shí)際的有差異的操作。任何使用文件系統(tǒng)的程序必須經(jīng)過這層接口來(lái)使用它。通過這樣的方式,VFS就對(duì)用戶屏蔽了底層文件系統(tǒng)的實(shí)現(xiàn)細(xì)節(jié)和差異。虛擬文件系統(tǒng)提供了很好的通用接口,使系統(tǒng)屏蔽了不同文件系統(tǒng)對(duì)于應(yīng)用程序的差異。各種具體的操作由具體的文件系統(tǒng)按照各自的方式自己實(shí)現(xiàn),如Yaffs文件系統(tǒng)、JFFS等文件系統(tǒng)都有自己的實(shí)現(xiàn)方式,但這些文件系統(tǒng)都導(dǎo)出一組通用接口,供VFS使用。這種想法類似于面向?qū)ο笾械亩鄳B(tài):系統(tǒng)將不同的文件系統(tǒng)封存起來(lái),向用戶提供統(tǒng)一的接口。相同功能的函數(shù)被不同的文件系統(tǒng)重載,完成各自需要的操作。這使得添加新的文件系統(tǒng)也很容易,提高了Linux系統(tǒng)的可擴(kuò)展性和兼容性。虛擬文件系統(tǒng)的使用體現(xiàn)了Linux文件系統(tǒng)的一大特點(diǎn),即支持各種不同的文件系統(tǒng)。目前已經(jīng)穩(wěn)定支持的文件系統(tǒng)包括ext、ext2、ext3、vfat、iso9660、proc、NFS、JFFS、JFFS2、SMB和ReisterFS等。

2)主要嵌入式文件系統(tǒng)介紹

嵌入式文件系統(tǒng)和基本的Linux文件系統(tǒng)原理是一樣的,只是嵌入式文件系統(tǒng)針對(duì)嵌入式應(yīng)用加入了一些特別的處理。由于Flash存儲(chǔ)介質(zhì)的讀寫特點(diǎn),傳統(tǒng)的Linux文件系統(tǒng)已經(jīng)不適合應(yīng)用在嵌入式系統(tǒng)中,如ext2文件系統(tǒng)是為像IDE那樣的塊設(shè)備設(shè)計(jì)的,這些設(shè)備的邏輯塊是512KB、1024KB等大小,沒有提供很好的扇區(qū)擦寫支持,不支持損耗平衡,沒有掉電保護(hù),也沒有特別完美的扇區(qū)管理,這不太適合于因設(shè)備類型而劃分扇區(qū)大小的內(nèi)存設(shè)備?;谶@樣的原因,產(chǎn)生了很多專為Flash設(shè)備而設(shè)計(jì)的文件系統(tǒng),常見的專用于閃存設(shè)備的文件系統(tǒng)如下:

(1)?Romfs。傳統(tǒng)型的Romfs文件系統(tǒng)是最常用的一種文件系統(tǒng),它是一種簡(jiǎn)單的、緊湊的、只讀的文件系統(tǒng),不支持動(dòng)態(tài)擦寫保存。它按順序存放所有的文件數(shù)據(jù),所以這種文件系統(tǒng)格式支持應(yīng)用程序以XIP方式運(yùn)行,在系統(tǒng)運(yùn)行時(shí),可以獲得可觀的RAM節(jié)省空間。μCLinux系統(tǒng)通常采用Romfs文件系統(tǒng)。

(2)?Cramfs。Cramfs是Linux的創(chuàng)始人LinuxTorvalds開發(fā)的一種可壓縮只讀文件系統(tǒng)。在Cramfs文件系統(tǒng)中,每一頁(yè)被單獨(dú)壓縮,可以隨機(jī)訪問,其壓縮比高達(dá)2∶1,為嵌入式系統(tǒng)節(jié)省了大量的Flash存儲(chǔ)空間。Cramfs文件系統(tǒng)以壓縮方式存儲(chǔ),在運(yùn)行時(shí)解壓縮,所以不支持應(yīng)用程序以XIP方式運(yùn)行,所有的應(yīng)用程序都要求被復(fù)制到RAM中運(yùn)行,但這并不代表它比Ramfs需求的RAM空間要大,因?yàn)镃ramfs采用分頁(yè)壓縮的方式存放檔案,在讀取檔案時(shí),不會(huì)耗用過多的內(nèi)存空間,只會(huì)針對(duì)目前實(shí)際讀取的部分分配內(nèi)存,對(duì)尚沒有讀取的部分不分配內(nèi)存空間,當(dāng)讀取的文件不在內(nèi)存中時(shí),Cramfs文件系統(tǒng)自動(dòng)計(jì)算壓縮后的資料所存的位置,再即時(shí)解壓縮到RAM中。另外,它的速度快,效率高,其只讀的特點(diǎn)有利于保護(hù)文件系統(tǒng)免受破壞,提高了系統(tǒng)的可靠性。但是它的只讀屬性同時(shí)又是它的一大缺陷,使得用戶無(wú)法對(duì)其內(nèi)容進(jìn)行擴(kuò)充。Cramfs鏡像文件通常是放在Flash中,但是也能放在別的文件系統(tǒng)里,使用loopback設(shè)備可以把它安裝到別的文件系統(tǒng)里。使用mkCramfs工具可以創(chuàng)建Cramfs鏡像文件。

(3)?Ramfs/Tmpfs。Ramfs也是LinuxTorvalds開發(fā)的,Ramfs文件系統(tǒng)把所有的文件都放在RAM里運(yùn)行,通常用來(lái)存儲(chǔ)一些臨時(shí)性或經(jīng)常要修改的數(shù)據(jù)。相對(duì)于ramdisk來(lái)說(shuō),Ramfs的大小可以隨著所含文件內(nèi)容的大小變化,不像ramdisk的大小是固定的。Tmpfs是基于內(nèi)存的文件系統(tǒng),因?yàn)門mpfs駐留在RAM中,所以寫/讀操作發(fā)生在RAM中。Tmpfs文件系統(tǒng)大小可隨所含文件內(nèi)容的大小變化,使其能夠最理想地使用內(nèi)存。Tmpfs駐留在RAM中,所以讀和寫幾乎都是瞬時(shí)的。Tmpfs的一個(gè)缺點(diǎn)是當(dāng)系統(tǒng)重新引導(dǎo)時(shí)會(huì)丟失所有數(shù)據(jù)。

(4)?JFFS2。JFFS2是Redhat公司基于JFFS開發(fā)的閃存文件系統(tǒng),最初是針對(duì)Redhat公司的嵌入式產(chǎn)品eCos開發(fā)的嵌入式文件系統(tǒng),所以JFFS2也可以用在Linux和μCLinux中。JFFS文件系統(tǒng)最早是由瑞典AxisCommunications公司基于Linux2.0的內(nèi)核為嵌入式系統(tǒng)開發(fā)的文件系統(tǒng)。JFFS2是一個(gè)可讀寫、可壓縮的日志型文件系統(tǒng),并提供了崩潰/掉電安全保護(hù),克服了JFFS的一些缺點(diǎn),使用了基于哈希表的日志節(jié)點(diǎn)結(jié)構(gòu),大大加快了對(duì)節(jié)點(diǎn)的操作速度,支持?jǐn)?shù)據(jù)壓縮,提供了“寫平衡”支持,支持多種節(jié)點(diǎn)類型,提高了對(duì)閃存的利用率,降低了內(nèi)存的消耗。這些特點(diǎn)使JFFS2文件系統(tǒng)成為目前Flash設(shè)備上最流行的文件系統(tǒng)格式,它的缺點(diǎn)是當(dāng)文件系統(tǒng)已滿或接近滿時(shí),JFFS2運(yùn)行會(huì)變慢,這主要是因?yàn)樗槠占膯栴}。

(5)?Yaffs。Yaffs/Yaffs2是一種JFFSx類似的閃存文件系統(tǒng),它是專為嵌入式系統(tǒng)使用Nand型閃存而設(shè)計(jì)的一種日志型文件。與JFFS2相比,它減少一些功能,所以速度更快,而且內(nèi)存的占用比更小。此外,Yaffs自帶Nand芯片的驅(qū)動(dòng),并且為嵌入式系統(tǒng)提供了直接訪問文件系統(tǒng)的API,用戶可以不使用Linux系統(tǒng)中的MTD與VFS,直接對(duì)文件系統(tǒng)操作。Yaffs2支持大頁(yè)面的Nand設(shè)備,并且對(duì)大頁(yè)面的Nand設(shè)備做了優(yōu)化。Yaffs2在閃存上表現(xiàn)并不穩(wěn)定,更適合Nor閃存,Yaffs是更好的選擇。

在具體的嵌入式系統(tǒng)設(shè)計(jì)中,可根據(jù)不同目錄存放的不同內(nèi)容,以及存放的文件屬性確定使用何種文件系統(tǒng)。6.1.4嵌入式Linux的開發(fā)步驟

嵌入式系統(tǒng)通常為一個(gè)資源受限的系統(tǒng)。直接在嵌入式系統(tǒng)的硬件平臺(tái)上編寫軟件比較困難,有時(shí)甚至是不可能的。目前,一般采用的辦法是:先在通用計(jì)算機(jī)上編寫程序;然后,通過交叉編譯生成目標(biāo)平臺(tái)上可運(yùn)行的二進(jìn)制代碼格式;最后下載到目標(biāo)平臺(tái)上的特定位置上運(yùn)行。對(duì)于使用Linux操作系統(tǒng)進(jìn)行嵌入式開發(fā)來(lái)說(shuō),一般步驟如下:

(1)建立嵌入式Linux交叉開發(fā)環(huán)境。交叉開發(fā)環(huán)境是指編譯、鏈接和調(diào)試嵌入式應(yīng)用軟件的環(huán)境。它與運(yùn)行嵌入式應(yīng)用軟件的環(huán)境有所不同,常采用宿主機(jī)/目標(biāo)機(jī)模式。

目前,常用的交叉開發(fā)環(huán)境主要有開放和商業(yè)兩種類型。開放的交叉開發(fā)環(huán)境的典型代表是GNU工具鏈,目前已經(jīng)能夠支持x86、ARM、MIPS、PowerPC等多種處理器。商業(yè)的交叉開發(fā)環(huán)境主要有MetrowerksCodeWarrior、ARMSoftwareDevelopmentToolkit、SDSCrosscomplier、WindRiverTornado和MicrosoftEmbeddedVisualC等。

(2)交叉編譯和鏈接。在完成嵌入式軟件的編碼之后,就是進(jìn)行編譯和鏈接,以生成可執(zhí)行代碼。由于開發(fā)過程大多是在Intel公司的x86系列CPU通用計(jì)算機(jī)上進(jìn)行的,而且目標(biāo)環(huán)境的處理器芯片卻大多為ARM、MIPS、PowerPC、DragonBall等系列的微處理器,這就要求在建立好的交叉開發(fā)環(huán)境中進(jìn)行交叉編譯和鏈接。

例如,在基于ARM體系結(jié)構(gòu)的gcc交叉開發(fā)環(huán)境中,arm-linux-gcc是交叉編譯器,arm-linux-ld是交叉編譯器和鏈接器,如對(duì)于M68K體系結(jié)構(gòu)的gcc交叉開發(fā)環(huán)境而言,就對(duì)應(yīng)于多種交叉編譯器和鏈接器。如果使用的是COFF格式的可執(zhí)行文件,那么在編譯Linux內(nèi)核時(shí),需要使用m68k-coff-gcc和m68k-coff-ld,而在編譯應(yīng)用程序時(shí)則需要使用m68k-coff-pic-gcc和m68k-coff-pic-ld。編寫好的嵌入式軟件經(jīng)過交叉編譯和交叉鏈接后,通常會(huì)生成用于調(diào)試的可執(zhí)行文件和用于固化的可執(zhí)行文件兩種類型。

(3)交叉調(diào)試。交叉調(diào)試就是通過在線仿真器對(duì)產(chǎn)品進(jìn)行軟硬件調(diào)試。

硬件調(diào)試:如果不采用在線仿真器,可以讓CPU直接在其內(nèi)部實(shí)現(xiàn)調(diào)試功能,并通過在開發(fā)板上引用的調(diào)試端口,發(fā)送調(diào)試命令和接受調(diào)試信息,完成調(diào)試過程。目前,ARM公司提供的開發(fā)板上使用的則是JTAG調(diào)試端口。使用合適的軟件工具與這些調(diào)試端口進(jìn)行連接,可以獲得與ICE類似的調(diào)試效果。

軟件調(diào)試:在嵌入式Linux系統(tǒng)中,Linux系統(tǒng)內(nèi)核調(diào)試,可以先在Linux內(nèi)核中設(shè)置一個(gè)調(diào)試樁(debugstub),用做調(diào)試過程中與宿主機(jī)之間的通信服務(wù)器。而后可在宿主機(jī)中通過調(diào)試器的串口與調(diào)試樁進(jìn)行通信,并通過調(diào)試器控制目標(biāo)機(jī)上Linux內(nèi)核的運(yùn)行。嵌入式上層應(yīng)用軟件的調(diào)試可以使用本地調(diào)試和遠(yuǎn)程調(diào)試兩種方法。如果采用的是本地調(diào)試,首先要將所需的調(diào)試器移植到目標(biāo)系統(tǒng)中,然后就可以直接在目標(biāo)機(jī)上運(yùn)行調(diào)試器來(lái)調(diào)試應(yīng)用程序了;如果采用的是遠(yuǎn)程調(diào)試,則需要移植一個(gè)調(diào)試服務(wù)器到目標(biāo)系統(tǒng)中,并通過它與宿主機(jī)上的調(diào)試器共同完成應(yīng)用程序的調(diào)試。在嵌入式Linux系統(tǒng)的開發(fā)中,遠(yuǎn)程調(diào)試時(shí)目標(biāo)機(jī)上使用的調(diào)試服務(wù)器通常是gdbserver,而宿主機(jī)上使用的調(diào)試器則是gdb。兩者相互配合共同完成調(diào)試過程。

(4)系統(tǒng)測(cè)試。在整個(gè)軟件系統(tǒng)編譯的過程中,嵌入式系統(tǒng)的硬件一般采用專門的測(cè)試儀器進(jìn)行測(cè)試,而軟件則需要有相關(guān)的測(cè)試技術(shù)和測(cè)試工具的支持,并要采用特定的測(cè)試策略。測(cè)試技術(shù)指的是軟件測(cè)試的專門途徑,以及能夠更加有效地運(yùn)用這些途徑的特定方法。在嵌入式軟件測(cè)試中,常常要在基于目標(biāo)機(jī)的測(cè)試和基于宿主機(jī)的測(cè)試之間做出折中?;谀繕?biāo)機(jī)的測(cè)試需要消耗較多的時(shí)間和經(jīng)費(fèi),而基于宿主機(jī)的測(cè)試雖然代價(jià)較小,但畢竟是在仿真環(huán)境中進(jìn)行的,因此難以完全反映軟件運(yùn)行的實(shí)際情況。這兩種環(huán)境下的測(cè)試可以發(fā)現(xiàn)不同的軟件缺陷,關(guān)鍵是要對(duì)目標(biāo)機(jī)環(huán)境和宿主機(jī)環(huán)境下的測(cè)試內(nèi)容進(jìn)行合理取舍。嵌入式軟件測(cè)試中經(jīng)常用到的測(cè)試工具主要有內(nèi)存分析工具、性能分析工具、覆蓋分析工具和缺陷跟蹤工具等。 6.2嵌入式Linux的常用命令

在Linux操作系統(tǒng)中,所有事物都被當(dāng)做文件來(lái)處理:硬件設(shè)備(包括鍵盤和終端)、目錄、命令和文件。不論是什么版本的Linux,它們的命令都是通用的,大多數(shù)的Linux的命令格式為:command[option][sourcefiles(s)][targetfile]。Linux的命令是區(qū)分大小的。圖6.4是Redhat-Linux的終端操作示意圖。圖6.4Redhat-Linux的終端操作示意圖6.2.1登錄與退出命令

1.登錄系統(tǒng)

要登錄Linux,必須輸入用戶的賬號(hào)。在系統(tǒng)安裝過程中可以創(chuàng)建以下兩種賬號(hào):

root:超級(jí)用戶賬號(hào)(系統(tǒng)管理員),用這個(gè)賬號(hào)可以在系統(tǒng)中做任何事情。

普通用戶:這個(gè)賬號(hào)供普通用戶使用,只能進(jìn)行有限的操作。用戶登錄分兩步:①輸入用戶的登錄名。系統(tǒng)根據(jù)該登錄名識(shí)別用戶。②輸入用戶的口令。該口令是用戶自己設(shè)置的一個(gè)字符串。

當(dāng)用戶正確地輸入用戶名和口令后,就能合法地進(jìn)入系統(tǒng)。屏幕顯示:[root@localhost/root]#,這時(shí)就可以對(duì)系統(tǒng)進(jìn)行各種各樣的操作了。

注意:超級(jí)用戶的提示符是“#”,其他用戶的提示符是“$”。

2.修改口令

為了更好地保護(hù)用戶賬號(hào)的安全,Linux允許用戶隨時(shí)修改自己的口令。修改口令的命令是Password。輸入Password命令后,將提示用戶輸入舊口令和新口令,之后還要求用戶再次確認(rèn)新口令。如果用戶忘記了口令,可以向系統(tǒng)管理員申請(qǐng)為自己重新設(shè)置。

3.虛擬控制臺(tái)

Linux是一個(gè)真正的多用戶操作系統(tǒng),可以同時(shí)接受多個(gè)用戶登錄。Linux允許一個(gè)用戶進(jìn)行多次登錄,這是因?yàn)長(zhǎng)inux和UNIX一樣,提供了虛擬控制臺(tái)的訪問方式,允許用戶在同一時(shí)間從控制臺(tái)進(jìn)行多次登錄。

虛擬控制臺(tái)的選擇是可以通過按Alt鍵和一個(gè)功能鍵來(lái)實(shí)現(xiàn)的,通常使用功能鍵F1~F6。例如,用戶登錄后,按下Alt+F2鍵就可以看到“Login”提示符,說(shuō)明用戶看到了第二個(gè)虛擬控制臺(tái),再次按Alt+F1鍵,就可以回到第一個(gè)虛擬臺(tái)。

新安裝的Linux系統(tǒng)默認(rèn)允許用戶使用Alt+F6鍵來(lái)訪問前六個(gè)虛擬控制臺(tái)。虛擬控制臺(tái)可以使用戶同時(shí)在多個(gè)控制臺(tái)上工作,真正體現(xiàn)Linux系統(tǒng)多用戶的特性,用戶可以在某一虛擬臺(tái)上進(jìn)行的工作尚未結(jié)束時(shí),切換到另一虛擬控制臺(tái)開始另一項(xiàng)工作。

4.退出系統(tǒng)

無(wú)論超級(jí)用戶還是普通用戶,需要退出系統(tǒng)時(shí),應(yīng)在Shell提示符下鍵入exit命令。6.2.2文件操作命令

1.?CP命令

功能:將給出的文件或目錄復(fù)制到另一個(gè)文件或目錄下。

語(yǔ)法:cp[選項(xiàng)]源文件或目錄目標(biāo)文件或目錄。

說(shuō)明:該命令把指定的源文件復(fù)制到目標(biāo)文件或把多個(gè)源文件復(fù)制到目標(biāo)目錄中。

各選項(xiàng)的含義:

?-a:該選項(xiàng)通常在拷貝目錄時(shí)使用。它保留鏈接、文件屬性,并遞歸地拷貝目錄,其作用相當(dāng)于dpR選項(xiàng)的組合。

?-d:拷貝時(shí)保留鏈接。

?-f:刪除已經(jīng)存在的目標(biāo)文件而不提示。

-i:和f選項(xiàng)相反,在覆蓋目標(biāo)文件之前將給出提示要求用戶確認(rèn),回答y時(shí)目標(biāo)文件將被覆蓋,是交互式拷貝。

-p:此時(shí)cp除復(fù)制源文件的內(nèi)容外,還將把其修改時(shí)間和訪問權(quán)限也復(fù)制到新文件中。

-r:若給出的源文件是目錄文件,此時(shí)cp將遞歸復(fù)制該目錄下的所有子目錄和文件。此時(shí)目標(biāo)文件必須為一個(gè)目錄名。

?-l:不復(fù)制,只是鏈接文件。舉例:[stul@ghoststul]$cp/etc/fstab~/fstab1,執(zhí)行該命令后,將把/etc目錄下的文件fstab復(fù)制到用戶stul的個(gè)人主目錄/home/stul下,復(fù)制后得文件名為fstab1。

注意:為防止用戶在不經(jīng)意的情況下用cp命令破壞另一個(gè)文件,如用戶指定的目標(biāo)文件名已存在,用cp命令復(fù)制文件后,這個(gè)文件就會(huì)被源新文件覆蓋。建議使用cp命令復(fù)制文件時(shí),最好使用i選項(xiàng)。

2.?mv命令

功能:為文件或目錄改名,或?qū)⑽募梢粋€(gè)目錄移入另一個(gè)目錄中。

語(yǔ)法:mv[選項(xiàng)]源文件或目錄目標(biāo)文件或目錄。

說(shuō)明:根據(jù)mv命令中第二個(gè)參數(shù)類型的不同(是目標(biāo)文件還是目標(biāo)目錄),mv命令將文件重命名或?qū)⑵湟浦烈粋€(gè)新的目錄中。當(dāng)?shù)诙€(gè)參數(shù)類型是文件時(shí),mv命令完成文件重命名,此時(shí),源文件只能有一個(gè)(也可以使源目錄名),它將所給出的源文件或目錄重命名為給定的目標(biāo)文件名。當(dāng)?shù)诙€(gè)參數(shù)是已存在的目錄名稱時(shí),源文件或目錄參數(shù)可以有多個(gè),mv命令將多個(gè)參數(shù)指定的源文件均移至目標(biāo)目錄中。在跨文件系統(tǒng)移動(dòng)文件時(shí),mv先復(fù)制,再將原有文件刪除,而鏈至該文件的鏈接也將丟失。各選項(xiàng)的含義:

-i:交互方式操作。如果mv操作將導(dǎo)致對(duì)已存在的目標(biāo)文件的覆蓋,此時(shí)系統(tǒng)詢問是否重寫,要求用戶回答y或n,這樣可以避免誤覆蓋文件。

-f:禁止交互操作。在mv操作要覆蓋某已經(jīng)有的目標(biāo)文件時(shí)不給出任何提示,指定此選項(xiàng)后,i選項(xiàng)將不再起任何作用。

注意:為防止用戶mv命令破壞另一個(gè)文件,使用命令移動(dòng)文件時(shí)最好使用i選項(xiàng)。

3.?rm命令

功能:刪除一個(gè)目錄中的一個(gè)或多個(gè)文件或目錄,它也可以將某個(gè)目錄及其下的所有文件子目錄均刪除。對(duì)于鏈接文件,只是斷開了鏈接,原文件保持不變。

語(yǔ)法:rm[選項(xiàng)]文件...

如果沒有使用-r選項(xiàng),則rm不會(huì)刪除目錄。

各選項(xiàng)的含義:

-f:忽略不存在的文件,從不給出提示。

-r:提示rm將參數(shù)中列出的全部目錄和子目錄均遞歸刪除。

-i:進(jìn)行交互式刪除。6.2.3目錄操作命令

1.?mkdir命令

功能:創(chuàng)建一個(gè)目錄。

語(yǔ)法:mkdir[選項(xiàng)]dir-name

說(shuō)明:創(chuàng)建由dir-name命令的目錄。要求創(chuàng)建目錄的用戶在當(dāng)前目錄中(dir-name的父目錄中)具有寫權(quán)限,并且dir-name不能是當(dāng)前目錄中已有的目錄或文件名稱。

各選項(xiàng)的含義:

-m:對(duì)新建目錄設(shè)置存取權(quán)限,也可以用chmod命令設(shè)置。

-p:可以是一個(gè)路徑名稱。此時(shí)若路徑中的某些目錄不存在,加上此選項(xiàng)后,系統(tǒng)將自動(dòng)建立好那些不存在的目錄,即一次可以建立多個(gè)目錄。

2.?rmdir命令

功能:刪除空目錄。

語(yǔ)法:rmdir[選項(xiàng)]dir-name

說(shuō)明:dir-name表示目錄名。該命令從一個(gè)目錄中刪除一個(gè)或多個(gè)子目錄項(xiàng)。需要特別注意的是,一個(gè)目錄被刪除之前必須是空的。

各選項(xiàng)的含義:

-p:遞歸刪除目錄dirname,當(dāng)子目錄刪除后其父目錄為空時(shí),也一同被刪除。如果整個(gè)路徑被刪除或者由于某種原因保留部分路徑,則系統(tǒng)在標(biāo)準(zhǔn)輸出上顯示相應(yīng)的信息。

3.?cd命令

功能:改變工作目錄。

語(yǔ)法:cd[directory]

說(shuō)明:該命令將當(dāng)前目錄改變至directory所指定的目錄。若沒有指定directory,則回到用戶的主目錄。為了改變到指定目錄,用戶必須擁有對(duì)指定目錄的執(zhí)行和讀權(quán)限。該命令可以通配符。

注意:在Linux中,用“/”代表根目錄,用“..”代表上級(jí)的目錄,用“-”代表用戶的個(gè)人主目錄,用“.”代表當(dāng)前目錄。例如:[root@ghostssh]#cd..執(zhí)行該命令后,將從用戶當(dāng)前目錄進(jìn)入/etc目錄。

4.?pwd命令

功能:顯示整個(gè)路徑名。

語(yǔ)法:pwd。

說(shuō)明:在Linux層次目錄結(jié)構(gòu)中,沒有提示符來(lái)告知用戶目前處于哪一個(gè)目錄中,使用pwd命令可顯示出當(dāng)前工作目錄的絕對(duì)路徑。

5.?ls命令

功能:列出目錄的內(nèi)容。

語(yǔ)法:ls[選項(xiàng)][目錄或是文件]

說(shuō)明:ls是英文單詞list的簡(jiǎn)寫。對(duì)于每個(gè)目錄,ls命令將列出其中的所有子目錄與文件。對(duì)于每個(gè)文件,ls將輸出其文件名以及所要求的其他信息。默認(rèn)情況下,輸出條目按字母順序排序。當(dāng)未給出目錄名或者是文件名時(shí),就顯示當(dāng)前目錄的信息。各選項(xiàng)的含義:

-a:顯示指定目錄下所有子目錄與文件,包括隱藏文件。

-A:顯示指定目錄下所有子目錄與文件,包括隱藏文件。但不列出“.”“..”。

-b:對(duì)文件名中不可輸出的字符用反斜杠加字符編號(hào)的形式列出。

-c:按文件的修改時(shí)間排序。

-C:分成多列顯示各項(xiàng)。6.2.4文本操作命令

1.sort命令

功能:對(duì)文件中的各行進(jìn)行排序。該命令逐行對(duì)文件中的內(nèi)容進(jìn)行排序,如果兩行的首字符相同,該命令將繼續(xù)比較這兩行的下一字符,如果還相同,繼續(xù)進(jìn)行比較。

語(yǔ)法:sort[選項(xiàng)]文件

說(shuō)明:sort命令對(duì)指定文件中所有的行進(jìn)行排序,將結(jié)果顯示在標(biāo)準(zhǔn)輸出上。如不指定輸入文件或使用“-”,則表示排序內(nèi)容來(lái)自標(biāo)準(zhǔn)輸入。

sort命令根據(jù)從輸入行抽取的一個(gè)或多個(gè)關(guān)鍵字進(jìn)行比較。排序關(guān)鍵字定義了用來(lái)排序的最小的字符序列。缺省情況下以整行為關(guān)鍵字按ASCII字符順序進(jìn)行排序。改變?nèi)笔≡O(shè)置的選項(xiàng)主要有:

-m:若給定文件已排好序,合并文件。

-c:檢查給定文件是否已排好序,如果他們沒有排好序,則打印一個(gè)出錯(cuò)信息,并以狀態(tài)1退出。

-u:對(duì)排序后認(rèn)為相同的行只留其中一行。

-o:輸出文件將排序輸出寫到輸出文件中而不是標(biāo)準(zhǔn)輸出,如果輸出文件是輸入文件之一,sort先將該文件的內(nèi)容寫入一個(gè)臨時(shí)文件,然后再排序和寫輸出結(jié)果。改變?nèi)笔∨判蛞?guī)則的選項(xiàng)主要有:

-d:按字典順序排序,比較時(shí)僅字母、數(shù)字、空格和制表符有意義。

-f:將小寫字母與大寫字母同等對(duì)待。

-I:忽略非打印字符。

-M:作為月份比較:“JAN”<“FEB”。

-r:按逆序輸出排序結(jié)果。

+pos1-pos2:指定一個(gè)或幾個(gè)字段作為排序關(guān)鍵字,字段位置從pos1開始,到pos2為止(包括pos1,不包括pos2)。如不指定pos2,則關(guān)鍵字為從pos1到行尾。字段和字符的位置從0開始。

-b;在每行中尋找排序關(guān)鍵字時(shí)忽略前導(dǎo)的空白(空格和制表符)。

-t:separator:指定字符separator作為字段分隔符。

2.uniq命令

功能:文件經(jīng)過處理后,在其輸出文件中可能會(huì)出現(xiàn)重復(fù)的行。這時(shí),可以用uniq命令將這些重復(fù)行從輸出文件中刪除,只留每條記錄的唯一樣本。

語(yǔ)法:uniq[選項(xiàng)]文件

說(shuō)明:該命令讀取輸入文件,并比較相鄰的行。行比較根據(jù)所用字符集的排序序列進(jìn)行,正常情況下,第二個(gè)及以后更多個(gè)重復(fù)行將被刪除。該命令將執(zhí)行結(jié)果寫到輸出文件中。輸入文件和輸出文件必須不同。如果輸入文件用“-”表示,則從標(biāo)準(zhǔn)輸入讀取。

各選項(xiàng)含義:

-c:顯示輸出中,每行行首加上本行在文件中出現(xiàn)的次數(shù)。它可取代-u和-d選項(xiàng)。

-d:只顯示重復(fù)行。

-u:只顯示文件中不重復(fù)的各行。

-n:前n個(gè)字段與每個(gè)字段前的空白一起被忽略。一個(gè)字段是一個(gè)非空格、非制表符的字符串,彼此由制表符和空格隔開(字段從0開始編號(hào))。

+n:前n個(gè)字符被忽略,之前的字符被跳過(字符從0開始編號(hào))。

-fn:與-n相同,這里n是字段數(shù)。

sn:與+n相同,這里n是字符數(shù)。6.2.5壓縮與備份命令

1.tar命令

功能:tar可以為文件和目錄創(chuàng)建檔案。用戶可以為某一特定文件創(chuàng)建檔案(備份文件),也可以在檔案中改變文件,或向檔案中加入新的文件。tar命令可以把一大堆的文件和目錄全部打包成一個(gè)文件。

語(yǔ)法:tar[主選項(xiàng)+輔選項(xiàng)]文件或者目錄

說(shuō)明:使用該命令時(shí),主選項(xiàng)必須有,它告訴tar要做什么事情,輔選項(xiàng)可以選用。主選項(xiàng)的含義:

-c:創(chuàng)建新的檔案文件。如果用戶想備份一個(gè)目錄或一些文件,就必須選擇該選項(xiàng)。

-r:把要存檔的文件追加到檔案文件的末尾。

-t:列出檔案文件的內(nèi)容,查看已經(jīng)備份了哪些文件。

-u:更新文件,即用新增的文件取代原備份的文件,如果在備份文件中找不到要更新的文件,則把它追加到備份文件的最后。

-x:從檔案文件中釋放文件。

輔助選項(xiàng)的含義:

-b:為磁帶機(jī)設(shè)定。其后跟一數(shù)字,用來(lái)說(shuō)明區(qū)塊的大小,系統(tǒng)預(yù)設(shè)值為20。

-f:使用檔案文件或設(shè)備,該選項(xiàng)通常必選。

-k:保存已經(jīng)存在的文件。例如,把某個(gè)文件還原,在還原的過程中,遇到相同的文件不會(huì)進(jìn)行覆蓋。

-m:在還原文件時(shí),把所有的文件的修改時(shí)間設(shè)定為現(xiàn)在。

-M:創(chuàng)建多卷的檔案文件,以便在幾個(gè)磁盤中存放。

-v:詳細(xì)報(bào)告tar處理的文件信息,如無(wú)該選項(xiàng),tar不報(bào)告文件信息。

-w:每一步都要求確認(rèn)。

-z:用gzip來(lái)壓縮/解壓縮文件,加上該選項(xiàng)后可以將檔案文件進(jìn)行壓縮,但是還原時(shí)也一定要使用該選項(xiàng)進(jìn)行解壓縮。舉例:

#tarcvfdata.tar*—>將所有文件打包成data.tar,擴(kuò)展名.tar需自行加上

#tarcvzfdata.tar.gz*—>將所有文件打包成data.tar,再用gzip壓縮

#tartvfdata.tar—>查看文件data.tar中包含那些文件

#tarxvfdata.ta—>解壓data.tar文件

#tarzxvfdata.tar.gz—>將所有文件打包成data.tar,擴(kuò)展名.tar需自行加上

2.gzip命令

功能:對(duì)文件進(jìn)行壓縮和解壓。

語(yǔ)法:gzip[選項(xiàng)]壓縮(解壓縮)的文件名

各選項(xiàng)的含義:

-c:將輸出寫到標(biāo)準(zhǔn)輸出上,并保留原有文件。

-d:將壓縮文件解壓。

-l:對(duì)每個(gè)壓縮文件,顯示的字段為壓縮文件的大??;未壓縮文件的大??;壓縮比;未壓縮文件的名字。

-r:遞歸式地查找指定目錄并壓縮其中的所有文件或者是解壓縮。

-t:測(cè)試,檢查壓縮文件是否完整。

-v:對(duì)每一個(gè)壓縮文件和解壓的文件,顯示文件名和壓縮比。

-num:用指定的數(shù)字num調(diào)整壓縮的速度,1或fast表示最快的壓縮方法(低壓縮比),9或best表示最慢的壓縮方法(高壓縮比)。系統(tǒng)缺省值為6。

3.unzip命令

功能:用Windows壓縮軟件Winzip壓縮的文件在Linux系統(tǒng)中可以用unzip命令展開。該命令用于將擴(kuò)展名為.zip的壓縮文件解壓縮。

語(yǔ)法:unzip[選項(xiàng)]壓縮文件名.zip

各選項(xiàng)的含義:

-x:文件列表(解壓縮文件),但不包括指定的file文件。

-v:查看壓縮文件目錄,但不解壓縮。

-t:測(cè)試文件有無(wú)損壞,但不解壓縮。

-d:目錄,把壓縮文件解到指定目錄下。

-z:只顯示壓縮文件的注解。

-n:不覆蓋已經(jīng)存在的文件。

-o:覆蓋已經(jīng)存在的文件且不要求用戶確認(rèn)。

-j:不重建文檔的目錄結(jié)構(gòu),把所有文件解壓到同一目錄下。6.2.6用戶相關(guān)命令

1.passwd命令

功能:Linux系統(tǒng)中,用useradd命令增加用戶時(shí),還需要用passwd命令為每一位新增加的用戶設(shè)置口令;用戶可以隨時(shí)用passwd命令改變自己的口令。

語(yǔ)法:passwd[用戶名]

說(shuō)明:只有超級(jí)用戶可以用“passwd用戶名”命令修改其他用戶的口令,普通用戶只能用不帶參數(shù)的passwd命令修改自己的口令。使用方法如下:先輸入passwd<enter>;再在(current)UNIXpasswd:下輸入當(dāng)前的口令;接著在newpassword:提示下輸入新的口令(在屏幕上看不到這個(gè)口令);最后系統(tǒng)提示再次輸入這個(gè)新口令,輸入正確后,新口令被加密并放入/etc/shdow文件。

設(shè)定口令的規(guī)則:至少有六位字符;大小寫字母、標(biāo)點(diǎn)符號(hào)和數(shù)字混合。

超級(jí)用戶修改其他用戶(xxq)口令的過程如下:

#passwdroot

NewUNIXpassword

RetypenewUNIXpassword:

Passwd:allauthenticationtokensupdatedsuccessfully

#

2.su命令

功能:讓一個(gè)普通用戶擁有超級(jí)用戶或其他用戶的權(quán)限,或讓超級(jí)用戶以普通用戶的身份做一些事情。普通用戶使用該命令時(shí),必須有超級(jí)用戶或其他用戶的口令。如要離開當(dāng)前用戶的身份,可以輸入exit。

語(yǔ)法:su[選項(xiàng)][?][使用者賬號(hào)]

說(shuō)明:若沒有指定使用者賬號(hào),則系統(tǒng)預(yù)設(shè)值為超級(jí)用root。

各選項(xiàng)的含義:

-c:執(zhí)行一個(gè)命令后就結(jié)束。

-e:加了這個(gè)減號(hào)的目的是使環(huán)境變量和要轉(zhuǎn)換的用戶相同。

-m:保留環(huán)境變量不變。

Password:輸入超級(jí)用戶的密碼。6.2.7磁盤管理命令

1.df命令

功能:檢查文件系統(tǒng)的磁盤空間占用情況。用該命令可獲取硬盤被占用空間的信息。

語(yǔ)法:df[選項(xiàng)]

說(shuō)明:df命令可顯示所有文件系統(tǒng)對(duì)i節(jié)點(diǎn)和磁盤塊的使用情況。

各選項(xiàng)的含義:

-a:顯示所有文件系統(tǒng)的磁盤使用情況。

-k:以k字節(jié)為單位顯示。

-i:顯示i節(jié)點(diǎn)信息,而不是磁盤塊。

-t:顯示各指定類型的文件系統(tǒng)的磁盤空間使用情況。

-x:列出不是某一指定類型文件系統(tǒng)的磁盤空間使用情況(與t選項(xiàng)相反)。

-T:顯示文件系統(tǒng)類型。

2.du命令

功能:統(tǒng)計(jì)目錄(或文件)所占磁盤空間的大小。

語(yǔ)法:du[選項(xiàng)][Names…]

說(shuō)明:該命令逐級(jí)進(jìn)入指定目錄的每一個(gè)子目錄并顯示該目錄占用文件系統(tǒng)數(shù)據(jù)塊(1024字節(jié))的情況。若沒有給出Names,則對(duì)當(dāng)前目錄統(tǒng)計(jì)。各選項(xiàng)的含義:

-s:對(duì)每個(gè)Names參數(shù)只給出占用的數(shù)據(jù)塊總數(shù)。

-a:遞歸地顯示指定目錄中的各文件及子孫目錄中各文件占用的數(shù)據(jù)塊。

-b:以字節(jié)為單位列出磁盤空間的使用情況(系統(tǒng)缺省以k字節(jié)為單位)。

-k:以1024字節(jié)為單位列出磁盤空間的使用情況。

-c:最后再加上一個(gè)總計(jì)(系統(tǒng)缺省設(shè)置)。

-l:計(jì)算所有的文件大小,對(duì)硬鏈接文件,則計(jì)算多次。

-x:跳過在不同文件系統(tǒng)上的目錄不予統(tǒng)計(jì)。

3.dd命令

功能:把指定的輸入文件復(fù)制到指定的輸出文件中,可以在復(fù)制過程中進(jìn)行格式轉(zhuǎn)換。

注意:應(yīng)將硬盤上的寄存文件用rm命令刪除。系統(tǒng)默認(rèn)用標(biāo)準(zhǔn)輸入文件和標(biāo)準(zhǔn)輸出文件。

語(yǔ)法:dd[選項(xiàng)]

各選項(xiàng)的含義:

?if=輸入文件(或設(shè)備名稱)。

?of=輸出文件(或設(shè)備名稱)。

?ibs=bytes:一次讀出bytes字節(jié),即讀入緩沖區(qū)字節(jié)數(shù)。

4.fdformat命令

功能:低級(jí)格式化軟盤。

語(yǔ)法:format

[-n]

device

其中,-n表示軟盤格式化后不作檢驗(yàn);device指定要進(jìn)行格式化的設(shè)備。

說(shuō)明:軟盤在使用前必須先做格式化操作,然后可以用tar、dd、cpio等命令存儲(chǔ)數(shù)據(jù),也可以在軟盤上建立可安裝的文件系統(tǒng)。6.2.8權(quán)限管理命令

在Linux系統(tǒng)中,每個(gè)文件和目錄都有訪問許可權(quán)限,用來(lái)確定誰(shuí)可以通過何種方式對(duì)文件和目錄進(jìn)行訪問和操作。

文件或目錄的訪問權(quán)限分為只讀、只寫和可執(zhí)行三種。以文件為例,只讀權(quán)限表示只允許讀其內(nèi)容,禁止對(duì)其做任何的更改操作;可執(zhí)行權(quán)限表示允許將該文件作為一個(gè)程序執(zhí)行。文件被創(chuàng)建時(shí),文件所有者將自動(dòng)擁有對(duì)該文件的讀、寫和可執(zhí)行權(quán)限,以便于對(duì)文件的閱讀和修改。用戶也可根據(jù)需要把訪問權(quán)限設(shè)置為需要的任何組合。

有三種不同類型的用戶可對(duì)文件或目錄進(jìn)行訪問:文件所有者、同組用戶和其他用戶。所有者一般是文件的創(chuàng)建者,可以允許同組用戶有權(quán)訪問文件,還可以將文件的訪問權(quán)限賦予系統(tǒng)中的其他用戶。在這種情況下,系統(tǒng)中每一位用戶都能訪問該用戶擁有的文件或目錄。

每個(gè)文件或目錄的訪問權(quán)限都有三組,每組用三位表示,分別為文件屬主的讀、寫和執(zhí)行權(quán)限;與屬主同組的用戶的讀、寫和執(zhí)行權(quán)限;系統(tǒng)中其他用戶的讀、寫和執(zhí)行權(quán)限。當(dāng)用ls-1命令顯示文件或目錄的詳細(xì)信息時(shí),最左邊的一列為文件的訪問權(quán)限。例如:

$ls-1sobsrc.tgz

-rw-r--r--1rootroot483997Jul1517:31sobsrc.tgz橫線代表空許可,r代表只讀,w代表寫,x代表可執(zhí)行。

注意:這里有10個(gè)位置。第一個(gè)字符指定文件類型。通常,一個(gè)目錄也是一個(gè)文件。如果第一個(gè)字符是橫線,表示是一個(gè)非目錄的文件。如果是d,表示一個(gè)目錄。

例如:-rw-r--r--(對(duì)應(yīng):普通文件文件主組用戶其他用戶)表示文件sobsrc.tgz的訪問權(quán)限。其中,第一個(gè)橫線表示sobsrc.tgz是一個(gè)普通文件;其余表示sobsrc.tgz的屬主有讀寫權(quán)限;與sobsrc.tgz屬主同組的用戶只有讀權(quán)限;其他用戶也只有讀權(quán)限。

確定一個(gè)文件的訪問權(quán)限后,用戶可以利用Linux系統(tǒng)提供的chmod命令重新設(shè)定不同的訪問權(quán)限,或用chown命令更改某個(gè)文件或目錄的所有者,用chgrp命令更改某個(gè)文件或目錄的用戶組。

1.chmod命令

功能:用于改變文件或目錄的訪問權(quán)。該命令有兩種用法:一種是包含字母和操作符表達(dá)的文字設(shè)定法;另一種是包含數(shù)字的數(shù)字設(shè)定法。

1)文字設(shè)定法

語(yǔ)法:chmod[who][+|-|=][mode]文件名?各選項(xiàng)的含義:

who:操作對(duì)象,可以是u、g、o、a字母中的任意一個(gè)或它們的組合。其中,u表示“用戶(user)”,即文件或目錄的所有者;g表示“同組(group)用戶”,即與文件屬主有相同組ID的所有用戶;o表示“其他(others)用戶”;a表示“所有(all)用戶”,它是系統(tǒng)默認(rèn)值。

操作符號(hào)的含義:+為添加某個(gè)權(quán)限;-為取消某個(gè)權(quán)限;=則為賦予給定權(quán)限并取消其他所有權(quán)限(如果有的話)。

mode:設(shè)置權(quán)限,可用以下字母的任意組合。r為可讀;w為可寫;x為可執(zhí)行;X為只有目標(biāo)文件對(duì)某些用戶是可執(zhí)行的或該目標(biāo)文件是目錄時(shí)才追加x屬性;s為在文件執(zhí)行時(shí)把進(jìn)程的屬主或組ID設(shè)置為該文件的文件屬性。方式“u+s”設(shè)置文件的用戶ID位,“g+s”設(shè)置組ID位;t為保存程序的文本到交換設(shè)備上;u為與文件屬主擁有一樣的權(quán)限;g為與和文件屬主同組的用戶擁有一樣的權(quán)限;o為與其他用戶擁有一樣的權(quán)限。一個(gè)命令行中可給出多個(gè)權(quán)限方式,期間用逗號(hào)隔開。例如:chmodg+r,o+rexample該命令使同組和其他用戶對(duì)文件example有讀權(quán)限。

文件名:以空格分開的要改變權(quán)限的文件列表,支持通配符。

2)數(shù)字設(shè)定法

語(yǔ)法:chmod[mode]文件名?

說(shuō)明:用數(shù)字表示屬性的含義。0表示沒有權(quán)限;1表示可執(zhí)行期限;2表示可寫權(quán)限;4表示可讀權(quán)限,然后將其相加。數(shù)字屬性的格式應(yīng)該為3個(gè)從0到7的八進(jìn)制數(shù),其順序是(u)(g)(o)。例如,如果想讓某個(gè)文件的屬主有“讀/寫”兩種權(quán)限,則為4(可讀)+(可寫)=6(讀/寫)。

2.chgrp命令

功能:改變文件或目錄所屬的組。

語(yǔ)法:chgrp[選項(xiàng)]groupfilename?

說(shuō)明:group可以是用戶組ID,也可以是/ete/group文件中用戶組的組名。文件名是以空格分開的要改變屬組的文件列表,支持通配符。如果用戶不是該文件的屬主或超級(jí)用戶,則不能改變?cè)撐募M。

各選項(xiàng)的含義:

-R:遞歸式地改變指定目錄及其下的所有子目錄和文件的屬組。

3.chown命令

功能:更改某個(gè)文件或目錄的屬主和屬組。例如,root用戶把自己的一個(gè)文件復(fù)制給用戶xu,為了讓用戶xu能夠存取這個(gè)文件,root用戶應(yīng)該把該文件的屬主設(shè)為xu,否則,用戶xu無(wú)法讀取這個(gè)文件。

語(yǔ)法:chown[選項(xiàng)]用戶或組文件

說(shuō)明:chown將指定文件的擁有者改為指定的用戶或組。用戶可以是用戶名或用戶ID;組可以是組名或組ID。文件使用空格分開的、要改變權(quán)限的文件列表,支持通配符。各選項(xiàng)的含義:

-R:遞歸式地改變指定目錄及其下的所有子目錄和文件的擁有者。

-v:顯示chown命令所做的工作。6.2.9其他操作命令

1.echo命令

功能:在顯示器上顯示一段文字,以作為提示。

語(yǔ)法:echo[-n]字符串

說(shuō)明:選項(xiàng)n表示輸出文字后不換行;字符串可以加引號(hào),也可以不加引號(hào)。

用echo命令輸出加引號(hào)的字符串時(shí),將字符串原樣輸出;輸出不加引號(hào)的字符串時(shí),將字符串中的各個(gè)單詞作為字符串輸出,各字符串之間用一個(gè)空格分割。

2.cal命令

功能:顯示某年某月的日歷。

語(yǔ)法:cal[選項(xiàng)][月[年]]

各選項(xiàng)含義:

-j:顯示給定月中的每一天是一年中的第幾天(從1月1日算起)。

-y:顯示整年的日歷。

3.Date命令

功能:顯示和設(shè)置系統(tǒng)日期和時(shí)間。

語(yǔ)法:date[選項(xiàng)]顯示時(shí)間格式(以+開頭,后面接格式)

各選項(xiàng)的含義:

-ddatestr,--datedatestr:顯示由datestr描述的日期。

-sdatestr,--setdatestr:設(shè)置datestr描述的日期。

-u,--universal:顯示或設(shè)置通用時(shí)間。時(shí)間域:

%H:小時(shí)(00..23)。

%M:分(00..59)。

%p:顯示出AM或PM。

%r:時(shí)間(hh:mm:ssAM或PM),12小時(shí)制。

%S:秒(00..59)。

%T:時(shí)間(24小時(shí)制)(hh:mm:ss)。

%X:顯示時(shí)間的格式(%H:%M:%S)。

%c:日期和時(shí)間(MonNov814:12:46CST1999)。

%D:日期(mm/dd/yy)。

注意:只有超級(jí)用戶才有權(quán)限使用date命令設(shè)置時(shí)間,一般用戶只能用date命令顯示時(shí)間。

4.clear命令

功能:清除屏幕上的信息。清屏后,提示符移動(dòng)到屏幕左上角。 6.3嵌入式Linux開發(fā)環(huán)境的構(gòu)建

6.3.1操作系統(tǒng)的安裝

建立嵌入式Linux開發(fā)環(huán)境,一般有三種辦法:一是在Windows系統(tǒng)下安裝虛擬機(jī),再在虛擬機(jī)中安裝Liunux操作系統(tǒng);二是安裝基于PCWindows操作系統(tǒng)下的CYGWIN;三是直接安裝Liunux操作系統(tǒng)。

1.系統(tǒng)安裝程序的獲取

Linux系統(tǒng)是一個(gè)開源操作系統(tǒng),它有很多版本。本節(jié)采用的Linux是Fedora11.0版本,它是紅帽子Linux的最新升級(jí)版本。

RedhatLinux最新操作系統(tǒng)Fedora原版的安裝程序可以在很多網(wǎng)站上獲得,如紅聯(lián)()網(wǎng)站就提供下載連接,具體地址為/viewarticle

.php?ip=13067。

在這個(gè)頁(yè)面上,提供的鏡像文件大多為CD-ROM鏡像,只有面向64位CPU的鏡像文件中提供DVD類型的鏡像文件。用戶下載這些鏡像文件用WinRAR解壓后,可以用Nero等刻錄程序到光盤上。

2.對(duì)開發(fā)PC的性能要求

RedhatLinuxFedora11.0安裝后占用空間在2.4~5?GB之間,還要安裝ARM-Linux開發(fā)軟件,因此對(duì)開發(fā)計(jì)算機(jī)的硬盤空間要求較大。基本要求如下:

CPU:高于奔騰500MHz,推薦高于賽揚(yáng)1.7GHz。

內(nèi)存:大于128MB,推薦使用256MB以上。

硬盤:大于10GB,推薦使用40GB以上。

3.?Liunux操作系統(tǒng)的安裝

Linux操作系統(tǒng)可以和Windows操作系統(tǒng)共存于PC中。當(dāng)一個(gè)PC安裝這兩種操作系統(tǒng)時(shí),一般先安裝Windows操作系統(tǒng),再安裝Linux系統(tǒng),兩系統(tǒng)互相不影響。在安裝前,首先要空出10GB以上的磁盤空間,并且不進(jìn)行分區(qū)。

在已有的WindowsXP操作系統(tǒng)下安裝Linux系統(tǒng),既可從光盤安裝,又可由硬盤安裝。其中從光盤安裝簡(jiǎn)單些。

4.Linux系統(tǒng)運(yùn)行

系統(tǒng)安裝后,重新啟動(dòng)計(jì)算機(jī),會(huì)有一個(gè)Grub引導(dǎo)程序界面,默認(rèn)情況下選擇用Linux啟動(dòng)。若希望用Windows啟動(dòng),則在Grub啟動(dòng)后5秒內(nèi)按任意鍵,然后選擇Other項(xiàng),即可進(jìn)入Windows啟動(dòng)。

Linux啟動(dòng)后,按提示輸入用戶名root和相應(yīng)的密碼進(jìn)入Linux系統(tǒng),從運(yùn)行界面可看到Linux安裝成功。6.3.2開發(fā)環(huán)境的配置

系統(tǒng)安裝好之后,需要配置好開發(fā)環(huán)境才能與開發(fā)板進(jìn)行通信。一般情況下,開發(fā)主機(jī)與開發(fā)板之間的通信端口有三種:串口、USB口和網(wǎng)口。用戶可根據(jù)自己開發(fā)時(shí)使用的端口相應(yīng)地配置。這里介紹串口和網(wǎng)口的配置方法。

1.串口配置方法

Linux下配置串口的程序是Minicom,它類似于Windows中的“超級(jí)終端”。配置的過程如下:

1)運(yùn)行Minicom

單擊系統(tǒng)菜單【應(yīng)用程序】,選擇子菜單【附件】,打開【終端】程序,輸入minicom-s。此時(shí),“終端”程序的顯示窗口列出Minicom的配置菜單。

2)配置參數(shù)

選擇Serialportsetup,進(jìn)入串口配置選項(xiàng);然后選擇A,設(shè)置SerialDevice為/dev/ttyS0,表示串口1(如果有多個(gè)串口可以根據(jù)自己具體的情況進(jìn)行選擇,一般PC只有一個(gè)串口,就是COM1,即ttyS0);再選擇E,設(shè)置波特率為115200;最后選擇F,設(shè)置HardwareFlowControl模式No。完成后按【Enter】鍵,回退到上一層菜單。

3)保存

在Minicom的配置菜單中選擇Savesetupasdf1,保存剛才的設(shè)置即可。

2.網(wǎng)口配置方法

使用網(wǎng)口進(jìn)行數(shù)據(jù)傳輸需要配置網(wǎng)口的傳輸協(xié)議,在Linux下用于網(wǎng)傳輸協(xié)議的主要有NFS和TFTP。

1)?NFS

NFS是由SUN公司發(fā)展的分散式文件系統(tǒng)。它可以讓用戶通過連接的網(wǎng)絡(luò)將其他電腦所共享的文件目錄映射到自己的系統(tǒng)下。

首先單擊系統(tǒng)菜單【應(yīng)用程序】,選擇子菜單【附件】,打開【終端】程序,輸入setup進(jìn)入設(shè)置程序,在按要求進(jìn)行配置。

2)?TFTP

TFTP是一個(gè)傳輸文件的簡(jiǎn)單協(xié)議,它基于UDP協(xié)議實(shí)現(xiàn),但有些TFTP協(xié)議也是基于其他傳輸協(xié)議完成。

因?yàn)門FTP是由超級(jí)守護(hù)進(jìn)程xinetd運(yùn)行的,所以首先要確認(rèn)系統(tǒng)安裝了xinetd。如果沒有安裝,要到Re

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論