《ARM嵌入式系統原理及應用開發》課件第6章0815_第1頁
《ARM嵌入式系統原理及應用開發》課件第6章0815_第2頁
《ARM嵌入式系統原理及應用開發》課件第6章0815_第3頁
《ARM嵌入式系統原理及應用開發》課件第6章0815_第4頁
《ARM嵌入式系統原理及應用開發》課件第6章0815_第5頁
已閱讀5頁,還剩128頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第6章嵌入式Linux操作系統及應用6.1嵌入式Linux操作系統概述6.2嵌入式Linux的常用命令6.3嵌入式Linux開發環境的構建6.4嵌入式Linux內核的移植 6.1嵌入式Linux操作系統概述

6.1.1常用嵌入式Linux系統

1.?RT-Linux

這是由墨西哥理工學院開發的嵌入式Linux操作系統。到目前為止,RT-Linux已經成功地應用于航天飛機的空間數據采集、科學儀器測控和電影特技圖像處理等廣泛領域。RT-Linux開發者并沒有針對實時操作系統的特性而重寫Linux的內核,因為這樣做的工作量非常大,而且要保證兼容性也非常困難。為此,RT-Linux提出了精巧的內核,并把標準的Linux核心作為實時核心的一個進程,同用戶的實時進程一起調度。這樣對Linux的改動非常小,并且充分利用了Linux下現有的豐富的軟件資源。

2.μCLinux

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

3.?ARM-Linux

ARM-Linux是一個成功的Linux內核的組成部分,它是專門為基于ARM系列處理器而設計的。它是由RussellKing在其他人的經驗基礎上主創出來的。ARM-Linux正在被全世界不同的組織和個人持續的完善和發展。目前,除了不含MMU的ARM7處理器外,其他的ARM9/XSCALE等ARM系列處理器都運行ARM-Linux。據不完全統計,ARM-Linux內核已經移植到500種以上的機器種類上,其中包括個人電腦、網絡計算機、掌上設備和各種開發板。

4.?Redhat-Linux

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

現在Redhat已不自己開發桌面版的Linux操作系統。它最后推出的一款產品是RedhatLinux9。Redhat把桌面版Linux操作系統產品交由Fedora社區開發。FedoraCore是由Redhat資助的合作項目產生的一款產品。因為FedoraCore最初就是在Redhat的基礎上開發的,所以由Redhat和Fedora聯手共同開發維護這個產品。

5.?XLinux

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

6.紅旗嵌入式Linux

由北京中科院紅旗軟件公司推出的嵌入式Linux是國內做得較好的一款嵌入式操作系統。目前,中科院計算所自行開發的開放源碼的嵌入式操作系統—EasyEmbeddedOS(EEOS)也已經開始進入實用階段了。該款嵌入式操作系統重點支持p-Java。系統目標一方面是小型化,另一方面是能實現Linux的驅動和其他模塊。由于有中科院計算所的強大科研力量做后盾,EEOS有望發展成為功能完善、穩定、可靠的國產嵌入式操作系統平臺。6.1.2嵌入式Linux系統內核

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

1.內核體系結構

Linux內核采用的是單一內核結構。這種內核結構的重要特征是模塊化。模塊化能有效實現許多良好的功能。每個模塊都是一個目標文件,它的代碼可以在運行時被鏈接到內核。目標代碼往往由函數集組成,該集合實現了文件系統、設備驅動器以及其他一些內核的上層特征。Linux對模塊給予了強有力的支持,在各個模塊之間規定了一些良好的界面,并且可以動態地裝入和卸載內核中的部分代碼。

Linux的內核為非搶占式的。它不能通過改變優先權來影響當前的執行流程,因此,可以對Linux某些重要的數據結構進行修改而不加任何保護措施。Linux內核主要有下列功能:①用軟件接口抽象不同的硬件資源,以簡化操作,屏蔽低層硬件的不同接口,即資源抽象;②將抽象出來的各種資源分配給各個進程并負責取回這些系統資源,即資源分配;③根據不同的資源類型使用不同的機制保證資源被進程所獨占,即資源共享。簡而言之,Linux內核包含進程調度、內存管理、文件系統、進程間通信、網絡及資源管理六部分。Linux內核的體系結構如圖6.1所示。圖6.1Linux內核的體系結構

1)進程調度

進程調度控制CPU資源的分配。Linux內核采用給予優先級的搶占式多任務調度方式。在這種調度方式下,系統中運行的進程是所有可運行進程中優先級最高的那個。在嵌入式系統的應用中,有很多實時需求,所以有些用于嵌入式系統的Linux通過改變進程調度來實現實時調度。此類Linux內核中進程調度部分和具體的硬件平臺相關性不大,因為調度算法在所有硬件平臺上的實現都是相同的。但是進程調度一般都是通過硬件的時鐘中斷來實現的,這一部分與具體硬件相關,另外在進程切換部分也和硬件平臺相關,所以進程切換部分一般都用匯編語言實現。

2)內存管理

標準Linux系統在具有MMU的硬件中支持虛擬內存,它使用硬件提供的分頁機制。Linux的內存管理系統用于管理內存資源,它實現了進程之間的內存保護、內存共享以及內存管理功能。內存管理可分為硬件相關部分和硬件無關部分。其中硬件相關部分負責初始化內存、處理缺頁中斷、把硬件提供的分頁機制抽象成三級頁面映射;硬件無關部分提供內存分配、內存映射等功能。有些嵌入式設備采用的CPU不具有MMU,在這種設備中,需要把Linux中的虛擬內存管理系統去掉。

3)文件系統

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

Linux的文件系統可分為以下三個子系統:

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

(2)邏輯文件系統。邏輯文件系統對應各種Linux支持的文件系統,它實現了邏輯數據塊與物理數據塊之間的轉換和映射以及緩沖區的管理。由于文件系統抽象的具體文件設備在不同的硬件環境中差別很大,因此需要邏輯文件系統來實現從邏輯塊到物理塊的分配。

(3)設備管理部分。在設備管理部分,所有的設備按照外部數據與內存數據的交換方式分為塊設備和字符設備。設備驅動程序可以通過塊設備和字符設備所對應的文件索引節點號來實現對設備的訪問。設備管理主要實現對驅動程序的管理。設備按照主設備號和從設備號來識別,相同主設備號代表一類設備,其操作訪問方式相同,不同的從設備號代表相同種類的多個設備。設備驅動層按照標準的方式進行編譯并且注冊到系統中后,就可以按照統一的界面被調用。

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

4)進程間通信(IPC)

一般情況下,進程在自己的地址空間運行時不會互相干擾。但是有很多應用會要求在進程間傳遞信息,所以Linux也提供了UNIX中常用的進程間通信機制。主要的進程間通信方式有管道(Pipe)、文件鎖、SystemVIPC、信號(Signal)及共享內存等。因為Linux支持網絡,所以還可以使用網絡接口進行進程間通信。Linux的進程間通信機制和硬件體系無關,在大多數的平臺上都支持同樣的方式。

5)網絡

Linux是在互聯網環境下產生的操作系統,所以它對網絡具有良好的支持。Linux內核支持多種網絡協議,如IP、IPV6、IPX、Appletalk及藍牙等;支持路由、防火墻過濾等網絡設備功能;并提供標準的BSDsocket編程接口。Linux上有大量網絡應用,所有常用的基于IP的應用在Linux世界里都可以以GPL方式獲得。Linux的內核網絡代碼和硬件體系無關。

6)資源管理

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

2.內核源碼結構

Linux的內核源碼結構類似于抽象結構,大體分為進程管理、內存管理、文件系統、驅動程序和網絡5個部分。這種對應性是因為抽象結構來源于具體結構,它很接近源代碼的目錄結構。但是,這種劃分沒有嚴格依照源代碼的目錄結構,且與各子系統的分組也不完全匹配。下面以Linux2.6.14為例介紹Linux的內核源碼結構。

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

圖6.2Linux2.6.14內核文件結構圖6.2中各目錄的意義和作用如下:

(1)?arch目錄。arch目錄包括所有與體系結構相關的核心代碼。它包含24個子目錄,每一個子目錄都代表一種體系,如ARM就是關于ARM及與之相兼容體系結構的子目錄。對于任何平臺,arch目錄必須包括以下子目錄:

●boot:啟動內核所使用的部分或全部平臺特有的代碼。

kernel:存放支持體系結構特有的(如信號處理和AMP)特征的實現。

lib:存放高速的體系結構特有的(如strlen和memcpy)通用函數的實現。

mm:存放體系結構特有的內存管理程序的實現。

math-emu:模擬FPU的代碼。

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

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

(4)?mm目錄。mm目錄包括所有獨立于CPU體系結構的內存管理代碼,如頁式存儲管理內存的分配和釋放等(與體系結構相關的內存管理代碼位于arch/*/mm/,如arch/i386/mm/Fault.c)。

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

(6)?drivers目錄。drivers目錄放置系統所有的設備驅動程序,每種驅動程序又各占一個子目錄,如/block下為塊設備驅動程序。

(7)?lib目錄。lib目錄放置核心的庫代碼及一些與平臺無關的通用函數,如strlen和memcpy等函數。

(8)?net目錄。net目錄是系統的網絡部分代碼,其中每個子目錄對應網絡的一個方面。

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

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

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

1)嵌入式Linux文件系統原理

Linux下的文件系統主要可分為三個層次:一是上層用戶空間的應用程序對文件系統的系統調用;二是虛擬文件系統VFS(VirtualFilesystemSwitch);三是掛載到VFS中的各種實際文件系統。嵌入式Linux系統中文件系統的體系架構如圖6.3所示。圖6.3嵌入式Linux文件系統體系架構圖6.3嵌入式Linux文件系統體系架構

用戶空間包含一些應用程序(如文件系統的使用者)和GNUC庫(glibc),用來為文件系統調用(打開,讀取,寫和關閉)用戶接口。系統調用接口的作用就像是交換器,它將系統調用從用戶空間發送到內核空間中的適當端點。系統調用實際上是通過調用內核虛擬文件系統提供的統一接口來完成對各種設備的使用。

VFS(虛擬文件系統)就是把各種具體的文件系統的公共部分抽取出來,形成一個抽象層,是系統內核的一部分。它位于用戶程序和具體的文件系統之間。它為用戶程序提供了標準的文件系統調用接口,對具體的文件系統,它通過一系列的系統公用的函數指針來實際調用具體的文件系統函數,完成實際的有差異的操作。任何使用文件系統的程序必須經過這層接口來使用它。通過這樣的方式,VFS就對用戶屏蔽了底層文件系統的實現細節和差異。虛擬文件系統提供了很好的通用接口,使系統屏蔽了不同文件系統對于應用程序的差異。各種具體的操作由具體的文件系統按照各自的方式自己實現,如Yaffs文件系統、JFFS等文件系統都有自己的實現方式,但這些文件系統都導出一組通用接口,供VFS使用。這種想法類似于面向對象中的多態:系統將不同的文件系統封存起來,向用戶提供統一的接口。相同功能的函數被不同的文件系統重載,完成各自需要的操作。這使得添加新的文件系統也很容易,提高了Linux系統的可擴展性和兼容性。虛擬文件系統的使用體現了Linux文件系統的一大特點,即支持各種不同的文件系統。目前已經穩定支持的文件系統包括ext、ext2、ext3、vfat、iso9660、proc、NFS、JFFS、JFFS2、SMB和ReisterFS等。

2)主要嵌入式文件系統介紹

嵌入式文件系統和基本的Linux文件系統原理是一樣的,只是嵌入式文件系統針對嵌入式應用加入了一些特別的處理。由于Flash存儲介質的讀寫特點,傳統的Linux文件系統已經不適合應用在嵌入式系統中,如ext2文件系統是為像IDE那樣的塊設備設計的,這些設備的邏輯塊是512KB、1024KB等大小,沒有提供很好的扇區擦寫支持,不支持損耗平衡,沒有掉電保護,也沒有特別完美的扇區管理,這不太適合于因設備類型而劃分扇區大小的內存設備。基于這樣的原因,產生了很多專為Flash設備而設計的文件系統,常見的專用于閃存設備的文件系統如下:

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

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

(3)?Ramfs/Tmpfs。Ramfs也是LinuxTorvalds開發的,Ramfs文件系統把所有的文件都放在RAM里運行,通常用來存儲一些臨時性或經常要修改的數據。相對于ramdisk來說,Ramfs的大小可以隨著所含文件內容的大小變化,不像ramdisk的大小是固定的。Tmpfs是基于內存的文件系統,因為Tmpfs駐留在RAM中,所以寫/讀操作發生在RAM中。Tmpfs文件系統大小可隨所含文件內容的大小變化,使其能夠最理想地使用內存。Tmpfs駐留在RAM中,所以讀和寫幾乎都是瞬時的。Tmpfs的一個缺點是當系統重新引導時會丟失所有數據。

(4)?JFFS2。JFFS2是Redhat公司基于JFFS開發的閃存文件系統,最初是針對Redhat公司的嵌入式產品eCos開發的嵌入式文件系統,所以JFFS2也可以用在Linux和μCLinux中。JFFS文件系統最早是由瑞典AxisCommunications公司基于Linux2.0的內核為嵌入式系統開發的文件系統。JFFS2是一個可讀寫、可壓縮的日志型文件系統,并提供了崩潰/掉電安全保護,克服了JFFS的一些缺點,使用了基于哈希表的日志節點結構,大大加快了對節點的操作速度,支持數據壓縮,提供了“寫平衡”支持,支持多種節點類型,提高了對閃存的利用率,降低了內存的消耗。這些特點使JFFS2文件系統成為目前Flash設備上最流行的文件系統格式,它的缺點是當文件系統已滿或接近滿時,JFFS2運行會變慢,這主要是因為碎片收集的問題。

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

在具體的嵌入式系統設計中,可根據不同目錄存放的不同內容,以及存放的文件屬性確定使用何種文件系統。6.1.4嵌入式Linux的開發步驟

嵌入式系統通常為一個資源受限的系統。直接在嵌入式系統的硬件平臺上編寫軟件比較困難,有時甚至是不可能的。目前,一般采用的辦法是:先在通用計算機上編寫程序;然后,通過交叉編譯生成目標平臺上可運行的二進制代碼格式;最后下載到目標平臺上的特定位置上運行。對于使用Linux操作系統進行嵌入式開發來說,一般步驟如下:

(1)建立嵌入式Linux交叉開發環境。交叉開發環境是指編譯、鏈接和調試嵌入式應用軟件的環境。它與運行嵌入式應用軟件的環境有所不同,常采用宿主機/目標機模式。

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

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

例如,在基于ARM體系結構的gcc交叉開發環境中,arm-linux-gcc是交叉編譯器,arm-linux-ld是交叉編譯器和鏈接器,如對于M68K體系結構的gcc交叉開發環境而言,就對應于多種交叉編譯器和鏈接器。如果使用的是COFF格式的可執行文件,那么在編譯Linux內核時,需要使用m68k-coff-gcc和m68k-coff-ld,而在編譯應用程序時則需要使用m68k-coff-pic-gcc和m68k-coff-pic-ld。編寫好的嵌入式軟件經過交叉編譯和交叉鏈接后,通常會生成用于調試的可執行文件和用于固化的可執行文件兩種類型。

(3)交叉調試。交叉調試就是通過在線仿真器對產品進行軟硬件調試。

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

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

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

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

1.登錄系統

要登錄Linux,必須輸入用戶的賬號。在系統安裝過程中可以創建以下兩種賬號:

root:超級用戶賬號(系統管理員),用這個賬號可以在系統中做任何事情。

普通用戶:這個賬號供普通用戶使用,只能進行有限的操作。用戶登錄分兩步:①輸入用戶的登錄名。系統根據該登錄名識別用戶。②輸入用戶的口令。該口令是用戶自己設置的一個字符串。

當用戶正確地輸入用戶名和口令后,就能合法地進入系統。屏幕顯示:[root@localhost/root]#,這時就可以對系統進行各種各樣的操作了。

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

2.修改口令

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

3.虛擬控制臺

Linux是一個真正的多用戶操作系統,可以同時接受多個用戶登錄。Linux允許一個用戶進行多次登錄,這是因為Linux和UNIX一樣,提供了虛擬控制臺的訪問方式,允許用戶在同一時間從控制臺進行多次登錄。

虛擬控制臺的選擇是可以通過按Alt鍵和一個功能鍵來實現的,通常使用功能鍵F1~F6。例如,用戶登錄后,按下Alt+F2鍵就可以看到“Login”提示符,說明用戶看到了第二個虛擬控制臺,再次按Alt+F1鍵,就可以回到第一個虛擬臺。

新安裝的Linux系統默認允許用戶使用Alt+F6鍵來訪問前六個虛擬控制臺。虛擬控制臺可以使用戶同時在多個控制臺上工作,真正體現Linux系統多用戶的特性,用戶可以在某一虛擬臺上進行的工作尚未結束時,切換到另一虛擬控制臺開始另一項工作。

4.退出系統

無論超級用戶還是普通用戶,需要退出系統時,應在Shell提示符下鍵入exit命令。6.2.2文件操作命令

1.?CP命令

功能:將給出的文件或目錄復制到另一個文件或目錄下。

語法:cp[選項]源文件或目錄目標文件或目錄。

說明:該命令把指定的源文件復制到目標文件或把多個源文件復制到目標目錄中。

各選項的含義:

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

?-d:拷貝時保留鏈接。

?-f:刪除已經存在的目標文件而不提示。

-i:和f選項相反,在覆蓋目標文件之前將給出提示要求用戶確認,回答y時目標文件將被覆蓋,是交互式拷貝。

-p:此時cp除復制源文件的內容外,還將把其修改時間和訪問權限也復制到新文件中。

-r:若給出的源文件是目錄文件,此時cp將遞歸復制該目錄下的所有子目錄和文件。此時目標文件必須為一個目錄名。

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

注意:為防止用戶在不經意的情況下用cp命令破壞另一個文件,如用戶指定的目標文件名已存在,用cp命令復制文件后,這個文件就會被源新文件覆蓋。建議使用cp命令復制文件時,最好使用i選項。

2.?mv命令

功能:為文件或目錄改名,或將文件由一個目錄移入另一個目錄中。

語法:mv[選項]源文件或目錄目標文件或目錄。

說明:根據mv命令中第二個參數類型的不同(是目標文件還是目標目錄),mv命令將文件重命名或將其移至一個新的目錄中。當第二個參數類型是文件時,mv命令完成文件重命名,此時,源文件只能有一個(也可以使源目錄名),它將所給出的源文件或目錄重命名為給定的目標文件名。當第二個參數是已存在的目錄名稱時,源文件或目錄參數可以有多個,mv命令將多個參數指定的源文件均移至目標目錄中。在跨文件系統移動文件時,mv先復制,再將原有文件刪除,而鏈至該文件的鏈接也將丟失。各選項的含義:

-i:交互方式操作。如果mv操作將導致對已存在的目標文件的覆蓋,此時系統詢問是否重寫,要求用戶回答y或n,這樣可以避免誤覆蓋文件。

-f:禁止交互操作。在mv操作要覆蓋某已經有的目標文件時不給出任何提示,指定此選項后,i選項將不再起任何作用。

注意:為防止用戶mv命令破壞另一個文件,使用命令移動文件時最好使用i選項。

3.?rm命令

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

語法:rm[選項]文件...

如果沒有使用-r選項,則rm不會刪除目錄。

各選項的含義:

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

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

-i:進行交互式刪除。6.2.3目錄操作命令

1.?mkdir命令

功能:創建一個目錄。

語法:mkdir[選項]dir-name

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

各選項的含義:

-m:對新建目錄設置存取權限,也可以用chmod命令設置。

-p:可以是一個路徑名稱。此時若路徑中的某些目錄不存在,加上此選項后,系統將自動建立好那些不存在的目錄,即一次可以建立多個目錄。

2.?rmdir命令

功能:刪除空目錄。

語法:rmdir[選項]dir-name

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

各選項的含義:

-p:遞歸刪除目錄dirname,當子目錄刪除后其父目錄為空時,也一同被刪除。如果整個路徑被刪除或者由于某種原因保留部分路徑,則系統在標準輸出上顯示相應的信息。

3.?cd命令

功能:改變工作目錄。

語法:cd[directory]

說明:該命令將當前目錄改變至directory所指定的目錄。若沒有指定directory,則回到用戶的主目錄。為了改變到指定目錄,用戶必須擁有對指定目錄的執行和讀權限。該命令可以通配符。

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

4.?pwd命令

功能:顯示整個路徑名。

語法:pwd。

說明:在Linux層次目錄結構中,沒有提示符來告知用戶目前處于哪一個目錄中,使用pwd命令可顯示出當前工作目錄的絕對路徑。

5.?ls命令

功能:列出目錄的內容。

語法:ls[選項][目錄或是文件]

說明:ls是英文單詞list的簡寫。對于每個目錄,ls命令將列出其中的所有子目錄與文件。對于每個文件,ls將輸出其文件名以及所要求的其他信息。默認情況下,輸出條目按字母順序排序。當未給出目錄名或者是文件名時,就顯示當前目錄的信息。各選項的含義:

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

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

-b:對文件名中不可輸出的字符用反斜杠加字符編號的形式列出。

-c:按文件的修改時間排序。

-C:分成多列顯示各項。6.2.4文本操作命令

1.sort命令

功能:對文件中的各行進行排序。該命令逐行對文件中的內容進行排序,如果兩行的首字符相同,該命令將繼續比較這兩行的下一字符,如果還相同,繼續進行比較。

語法:sort[選項]文件

說明:sort命令對指定文件中所有的行進行排序,將結果顯示在標準輸出上。如不指定輸入文件或使用“-”,則表示排序內容來自標準輸入。

sort命令根據從輸入行抽取的一個或多個關鍵字進行比較。排序關鍵字定義了用來排序的最小的字符序列。缺省情況下以整行為關鍵字按ASCII字符順序進行排序。改變缺省設置的選項主要有:

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

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

-u:對排序后認為相同的行只留其中一行。

-o:輸出文件將排序輸出寫到輸出文件中而不是標準輸出,如果輸出文件是輸入文件之一,sort先將該文件的內容寫入一個臨時文件,然后再排序和寫輸出結果。改變缺省排序規則的選項主要有:

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

-f:將小寫字母與大寫字母同等對待。

-I:忽略非打印字符。

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

-r:按逆序輸出排序結果。

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

-b;在每行中尋找排序關鍵字時忽略前導的空白(空格和制表符)。

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

2.uniq命令

功能:文件經過處理后,在其輸出文件中可能會出現重復的行。這時,可以用uniq命令將這些重復行從輸出文件中刪除,只留每條記錄的唯一樣本。

語法:uniq[選項]文件

說明:該命令讀取輸入文件,并比較相鄰的行。行比較根據所用字符集的排序序列進行,正常情況下,第二個及以后更多個重復行將被刪除。該命令將執行結果寫到輸出文件中。輸入文件和輸出文件必須不同。如果輸入文件用“-”表示,則從標準輸入讀取。

各選項含義:

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

-d:只顯示重復行。

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

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

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

-fn:與-n相同,這里n是字段數。

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

1.tar命令

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

語法:tar[主選項+輔選項]文件或者目錄

說明:使用該命令時,主選項必須有,它告訴tar要做什么事情,輔選項可以選用。主選項的含義:

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

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

-t:列出檔案文件的內容,查看已經備份了哪些文件。

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

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

輔助選項的含義:

-b:為磁帶機設定。其后跟一數字,用來說明區塊的大小,系統預設值為20。

-f:使用檔案文件或設備,該選項通常必選。

-k:保存已經存在的文件。例如,把某個文件還原,在還原的過程中,遇到相同的文件不會進行覆蓋。

-m:在還原文件時,把所有的文件的修改時間設定為現在。

-M:創建多卷的檔案文件,以便在幾個磁盤中存放。

-v:詳細報告tar處理的文件信息,如無該選項,tar不報告文件信息。

-w:每一步都要求確認。

-z:用gzip來壓縮/解壓縮文件,加上該選項后可以將檔案文件進行壓縮,但是還原時也一定要使用該選項進行解壓縮。舉例:

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

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

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

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

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

2.gzip命令

功能:對文件進行壓縮和解壓。

語法:gzip[選項]壓縮(解壓縮)的文件名

各選項的含義:

-c:將輸出寫到標準輸出上,并保留原有文件。

-d:將壓縮文件解壓。

-l:對每個壓縮文件,顯示的字段為壓縮文件的大小;未壓縮文件的大小;壓縮比;未壓縮文件的名字。

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

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

-v:對每一個壓縮文件和解壓的文件,顯示文件名和壓縮比。

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

3.unzip命令

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

語法:unzip[選項]壓縮文件名.zip

各選項的含義:

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

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

-t:測試文件有無損壞,但不解壓縮。

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

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

-n:不覆蓋已經存在的文件。

-o:覆蓋已經存在的文件且不要求用戶確認。

-j:不重建文檔的目錄結構,把所有文件解壓到同一目錄下。6.2.6用戶相關命令

1.passwd命令

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

語法:passwd[用戶名]

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

設定口令的規則:至少有六位字符;大小寫字母、標點符號和數字混合。

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

#passwdroot

NewUNIXpassword

RetypenewUNIXpassword:

Passwd:allauthenticationtokensupdatedsuccessfully

#

2.su命令

功能:讓一個普通用戶擁有超級用戶或其他用戶的權限,或讓超級用戶以普通用戶的身份做一些事情。普通用戶使用該命令時,必須有超級用戶或其他用戶的口令。如要離開當前用戶的身份,可以輸入exit。

語法:su[選項][?][使用者賬號]

說明:若沒有指定使用者賬號,則系統預設值為超級用root。

各選項的含義:

-c:執行一個命令后就結束。

-e:加了這個減號的目的是使環境變量和要轉換的用戶相同。

-m:保留環境變量不變。

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

1.df命令

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

語法:df[選項]

說明:df命令可顯示所有文件系統對i節點和磁盤塊的使用情況。

各選項的含義:

-a:顯示所有文件系統的磁盤使用情況。

-k:以k字節為單位顯示。

-i:顯示i節點信息,而不是磁盤塊。

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

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

-T:顯示文件系統類型。

2.du命令

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

語法:du[選項][Names…]

說明:該命令逐級進入指定目錄的每一個子目錄并顯示該目錄占用文件系統數據塊(1024字節)的情況。若沒有給出Names,則對當前目錄統計。各選項的含義:

-s:對每個Names參數只給出占用的數據塊總數。

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

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

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

-c:最后再加上一個總計(系統缺省設置)。

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

-x:跳過在不同文件系統上的目錄不予統計。

3.dd命令

功能:把指定的輸入文件復制到指定的輸出文件中,可以在復制過程中進行格式轉換。

注意:應將硬盤上的寄存文件用rm命令刪除。系統默認用標準輸入文件和標準輸出文件。

語法:dd[選項]

各選項的含義:

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

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

?ibs=bytes:一次讀出bytes字節,即讀入緩沖區字節數。

4.fdformat命令

功能:低級格式化軟盤。

語法:format

[-n]

device

其中,-n表示軟盤格式化后不作檢驗;device指定要進行格式化的設備。

說明:軟盤在使用前必須先做格式化操作,然后可以用tar、dd、cpio等命令存儲數據,也可以在軟盤上建立可安裝的文件系統。6.2.8權限管理命令

在Linux系統中,每個文件和目錄都有訪問許可權限,用來確定誰可以通過何種方式對文件和目錄進行訪問和操作。

文件或目錄的訪問權限分為只讀、只寫和可執行三種。以文件為例,只讀權限表示只允許讀其內容,禁止對其做任何的更改操作;可執行權限表示允許將該文件作為一個程序執行。文件被創建時,文件所有者將自動擁有對該文件的讀、寫和可執行權限,以便于對文件的閱讀和修改。用戶也可根據需要把訪問權限設置為需要的任何組合。

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

每個文件或目錄的訪問權限都有三組,每組用三位表示,分別為文件屬主的讀、寫和執行權限;與屬主同組的用戶的讀、寫和執行權限;系統中其他用戶的讀、寫和執行權限。當用ls-1命令顯示文件或目錄的詳細信息時,最左邊的一列為文件的訪問權限。例如:

$ls-1sobsrc.tgz

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

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

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

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

1.chmod命令

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

1)文字設定法

語法:chmod[who][+|-|=][mode]文件名?各選項的含義:

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

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

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

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

2)數字設定法

語法:chmod[mode]文件名?

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

2.chgrp命令

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

語法:chgrp[選項]groupfilename?

說明:group可以是用戶組ID,也可以是/ete/group文件中用戶組的組名。文件名是以空格分開的要改變屬組的文件列表,支持通配符。如果用戶不是該文件的屬主或超級用戶,則不能改變該文件組。

各選項的含義:

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

3.chown命令

功能:更改某個文件或目錄的屬主和屬組。例如,root用戶把自己的一個文件復制給用戶xu,為了讓用戶xu能夠存取這個文件,root用戶應該把該文件的屬主設為xu,否則,用戶xu無法讀取這個文件。

語法:chown[選項]用戶或組文件

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

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

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

1.echo命令

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

語法:echo[-n]字符串

說明:選項n表示輸出文字后不換行;字符串可以加引號,也可以不加引號。

用echo命令輸出加引號的字符串時,將字符串原樣輸出;輸出不加引號的字符串時,將字符串中的各個單詞作為字符串輸出,各字符串之間用一個空格分割。

2.cal命令

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

語法:cal[選項][月[年]]

各選項含義:

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

-y:顯示整年的日歷。

3.Date命令

功能:顯示和設置系統日期和時間。

語法:date[選項]顯示時間格式(以+開頭,后面接格式)

各選項的含義:

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

-sdatestr,--setdatestr:設置datestr描述的日期。

-u,--universal:顯示或設置通用時間。時間域:

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

%M:分(00..59)。

%p:顯示出AM或PM。

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

%S:秒(00..59)。

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

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

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

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

注意:只有超級用戶才有權限使用date命令設置時間,一般用戶只能用date命令顯示時間。

4.clear命令

功能:清除屏幕上的信息。清屏后,提示符移動到屏幕左上角。 6.3嵌入式Linux開發環境的構建

6.3.1操作系統的安裝

建立嵌入式Linux開發環境,一般有三種辦法:一是在Windows系統下安裝虛擬機,再在虛擬機中安裝Liunux操作系統;二是安裝基于PCWindows操作系統下的CYGWIN;三是直接安裝Liunux操作系統。

1.系統安裝程序的獲取

Linux系統是一個開源操作系統,它有很多版本。本節采用的Linux是Fedora11.0版本,它是紅帽子Linux的最新升級版本。

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

.php?ip=13067。

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

2.對開發PC的性能要求

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

CPU:高于奔騰500MHz,推薦高于賽揚1.7GHz。

內存:大于128MB,推薦使用256MB以上。

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

3.?Liunux操作系統的安裝

Linux操作系統可以和Windows操作系統共存于PC中。當一個PC安裝這兩種操作系統時,一般先安裝Windows操作系統,再安裝Linux系統,兩系統互相不影響。在安裝前,首先要空出10GB以上的磁盤空間,并且不進行分區。

在已有的WindowsXP操作系統下安裝Linux系統,既可從光盤安裝,又可由硬盤安裝。其中從光盤安裝簡單些。

4.Linux系統運行

系統安裝后,重新啟動計算機,會有一個Grub引導程序界面,默認情況下選擇用Linux啟動。若希望用Windows啟動,則在Grub啟動后5秒內按任意鍵,然后選擇Other項,即可進入Windows啟動。

Linux啟動后,按提示輸入用戶名root和相應的密碼進入Linux系統,從運行界面可看到Linux安裝成功。6.3.2開發環境的配置

系統安裝好之后,需要配置好開發環境才能與開發板進行通信。一般情況下,開發主機與開發板之間的通信端口有三種:串口、USB口和網口。用戶可根據自己開發時使用的端口相應地配置。這里介紹串口和網口的配置方法。

1.串口配置方法

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

1)運行Minicom

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

2)配置參數

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

3)保存

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

2.網口配置方法

使用網口進行數據傳輸需要配置網口的傳輸協議,在Linux下用于網傳輸協議的主要有NFS和TFTP。

1)?NFS

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

首先單擊系統菜單【應用程序】,選擇子菜單【附件】,打開【終端】程序,輸入setup進入設置程序,在按要求進行配置。

2)?TFTP

TFTP是一個傳輸文件的簡單協議,它基于UDP協議實現,但有些TFTP協議也是基于其他傳輸協議完成。

因為TFTP是由超級守護進程xinetd運行的,所以首先要確認系統安裝了xinetd。如果沒有安裝,要到Re

溫馨提示

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

評論

0/150

提交評論