第八章 uclinux及應(yīng)用開發(fā)ok_第1頁
第八章 uclinux及應(yīng)用開發(fā)ok_第2頁
第八章 uclinux及應(yīng)用開發(fā)ok_第3頁
第八章 uclinux及應(yīng)用開發(fā)ok_第4頁
第八章 uclinux及應(yīng)用開發(fā)ok_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第八章第八章 uclinux及應(yīng)用開發(fā)及應(yīng)用開發(fā)主要內(nèi)容8.18.1linuxlinux介紹介紹8.28.2ClinuxClinux簡(jiǎn)介簡(jiǎn)介8.3 8.3 ClinuxClinux中的應(yīng)用程序開發(fā)中的應(yīng)用程序開發(fā)8.48.4如何如何構(gòu)造嵌入式構(gòu)造嵌入式linuxlinux系統(tǒng)系統(tǒng) 8.5 8.5 實(shí)驗(yàn)理論部分實(shí)驗(yàn)理論部分 8.1linux介紹8.1.1 linux8.1.1 linux簡(jiǎn)介簡(jiǎn)介 8.1.2 linux8.1.2 linux特點(diǎn)特點(diǎn) 8.1.3 linux8.1.3 linux作為嵌入式操作系統(tǒng)的優(yōu)點(diǎn)作為嵌入式操作系統(tǒng)的優(yōu)點(diǎn) 8.1.4 8.1.4 嵌入式嵌入式linuxlinu

2、x的版本的版本 主要內(nèi)容8.1.18.1.1簡(jiǎn)介簡(jiǎn)介L(zhǎng)inux是個(gè)和Unix相似、以內(nèi)核為基礎(chǔ)的、完全內(nèi)存保護(hù)、多任務(wù)多進(jìn)程的操作系統(tǒng)。Linux最初是在1991年由一名芬蘭學(xué)生Linus Torvalds開發(fā)的,至今不過14個(gè)年頭,它是一個(gè)年輕的操作系統(tǒng),最初開發(fā)的Linux不成熟、性能較低,但是,由于Linux具有開放性,任何人只要遵守GNU組織的GPL(GNU Public License)標(biāo)準(zhǔn),都可對(duì)其源碼進(jìn)行修改。所以Linux在短短的時(shí)間內(nèi)就成了一個(gè)穩(wěn)定、成熟的操作系統(tǒng)。 8.1.2 linux8.1.2 linux特點(diǎn)特點(diǎn)1.符合POSIX 1003.1標(biāo)準(zhǔn) POSIX 1003

3、.1標(biāo)準(zhǔn)定義了一個(gè)最小的Unix操作系統(tǒng)接口,只有符合這一標(biāo)準(zhǔn),才可以運(yùn)行Unix程序。由于Unix具有豐富的應(yīng)用程序,當(dāng)今絕大多數(shù)操作系統(tǒng)都把滿足POSIX 1003.1標(biāo)準(zhǔn)作為實(shí)現(xiàn)目標(biāo),Linux完全支持POSIX 1003.1標(biāo)準(zhǔn)。另外,Linux還增加了部分System V和BSD的系統(tǒng)接口使得Unix System V和BSD上的程序能直接在 Linux上運(yùn)行,從而使Linux成為一個(gè)完善的Unix程序開發(fā)系統(tǒng)。 linuxlinux特點(diǎn)特點(diǎn)2. 支持多用戶訪問和多任務(wù)編程 Linux是一個(gè)真正的多用戶、多任務(wù)操作系統(tǒng),它允許多個(gè)用戶同時(shí)訪問系統(tǒng)且不會(huì)造成用戶之間的相互干擾。而且,每

4、一個(gè)用戶可以創(chuàng)建多個(gè)進(jìn)程,并使各個(gè)進(jìn)程協(xié)同工作來完成用戶的需求。3. 采用頁式存儲(chǔ)管理 與大多數(shù)操作系統(tǒng)一樣,Linux支持頁式存儲(chǔ)管理。它能使Linux更有效地利用物理存儲(chǔ)空間,頁面的換入換出為用戶提供了更大的存儲(chǔ)空間。 linuxlinux特點(diǎn)特點(diǎn)4. 支持動(dòng)態(tài)鏈接 用戶程序的執(zhí)行往往離不開標(biāo)準(zhǔn)庫的支持,運(yùn)行程序前,需要將標(biāo)準(zhǔn)庫與程序鏈接好。按照鏈接方式的不同有靜態(tài)與動(dòng)態(tài)兩種。一般的系統(tǒng)往往采用靜態(tài)鏈接方式,即在裝配階段就已將用戶程序和標(biāo)準(zhǔn)庫鏈接好,這樣,當(dāng)多個(gè)進(jìn)程運(yùn)行時(shí),可能會(huì)出現(xiàn)庫代碼在內(nèi)存中有多個(gè)副本而浪費(fèi)存儲(chǔ)空間的情況;Linux支持動(dòng)態(tài)鏈接方式,當(dāng)運(yùn)行時(shí)才進(jìn)行庫鏈接,如果所需要的

5、庫已被其它進(jìn)程裝入內(nèi)存,則不必再裝入,否則才從硬盤中將庫調(diào)入。這樣能保證內(nèi)存中的庫程序代碼是唯一的,也節(jié)省了內(nèi)存,提高了程序的運(yùn)行效率。 linuxlinux特點(diǎn)特點(diǎn)5. 支持多種文件系統(tǒng) Linux能支持多種文件系統(tǒng)。常見的有:EXT、EXT2、HPFS、MSDOS、UMSDOS、PROC、NFS、SYSV、MINIX、SMB、UFS、NCP、VFAT、JFFS。Linux最常用的文件系統(tǒng)是EXT2/3,它是EXT文件的改進(jìn)版本。6. 支持TCP/IP、SLIP和PPP 在Linux中,用戶可以使用所有的網(wǎng)絡(luò)服務(wù)。 8.1.3linux8.1.3linux作為嵌入式操作系統(tǒng)的優(yōu)點(diǎn)作為嵌入式操

6、作系統(tǒng)的優(yōu)點(diǎn)1. 可應(yīng)用于多種硬件平臺(tái)。Linux已經(jīng)被移植到多種硬件平臺(tái),這對(duì)受成本、時(shí)間限制的研究與開發(fā)項(xiàng)目是很有吸引力的??梢栽跇?biāo)準(zhǔn)平臺(tái)上開發(fā)然后移植到具體的硬件上,加快了軟件與硬件的開發(fā)過程并降低了開發(fā)成本。2. Linux可以隨意地配置而不需要任何的許可證或商家的合作關(guān)系。3. 它是免費(fèi)的,源代碼可以得到。這是最吸引人的。毫無疑問,這會(huì)節(jié)省大量的開發(fā) 費(fèi)用。linuxlinux作為嵌入式操作系統(tǒng)的優(yōu)點(diǎn)作為嵌入式操作系統(tǒng)的優(yōu)點(diǎn)4. 它本身內(nèi)置網(wǎng)絡(luò)支持,具有公認(rèn)的強(qiáng)大的網(wǎng)絡(luò)功能。5. Linux的高度模塊化使添加部件非常容易。6. Linux在臺(tái)式機(jī)上的成功,使大家看到了linux在嵌入

7、式系統(tǒng)中的輝煌前景。8.1.48.1.4嵌入式嵌入式linux的版本的版本 Linux應(yīng)用于嵌入式領(lǐng)域雖然時(shí)間不長(zhǎng),但已形成了許多版本,按照其實(shí)際應(yīng)用的場(chǎng)合及特殊的功能需求,基本上可以分為以下3類:1. 將Linux改進(jìn)以滿足實(shí)時(shí)要求的實(shí)時(shí)操作系統(tǒng),應(yīng)用于一些關(guān)鍵的控制場(chǎng)合,如RTLinux, Hard Hat Linux。2. 盡可能保留Linux的強(qiáng)大功能,盡可能地減少其體積,以滿足許多嵌入式系統(tǒng)對(duì)體積的要求,如Clinux。3. 針對(duì)特定嵌入式領(lǐng)域采用的整合方案,如Lineo,TimeSys,合肥華恒等 8.2Clinux簡(jiǎn)介簡(jiǎn)介 8.2.1Clinux特色特色 8.2.2Clinux的

8、設(shè)計(jì)特征的設(shè)計(jì)特征 主要內(nèi)容 Clinux是保留Linux的強(qiáng)大功能,但體積大大減少,是主要針對(duì)沒有MMU的微處理器開發(fā)的一個(gè)嵌入式Linux版本。 Clinux是Linux2.0版本的一個(gè)分支,被設(shè)計(jì)用來微型控制應(yīng)用領(lǐng)域。 Clinux單詞中代表微型,C代表控制器, Clinux的含義就是針對(duì)微控制領(lǐng)域而設(shè)計(jì)的Linux系統(tǒng),通常讀作“you see linux” 8.2.1Clinux特色特色通用通用的的LinuxAPICkernel512KBCkernel+工具工具 chmod 777 example_uc/var ./ example_uc8.5.6makefile介紹 程序大型化、復(fù)

9、雜化是嵌入式軟件發(fā)展的必然趨勢(shì)。如何維護(hù)和管理程序就是個(gè)突出和緊迫的問題。高級(jí)語言編程所形成的模塊之間不可避免的存在著相互的聯(lián)系和制約,而且其關(guān)系也非常復(fù)雜。這樣,如果某個(gè)模塊需要改動(dòng)、更換或者刪除,那么需要把與該程序相關(guān)的所有程序都重新編譯、鏈接。這樣不僅需要程序員找出與該程序相關(guān)的其它程序,并且需要使用長(zhǎng)而復(fù)雜的命令對(duì)其逐一進(jìn)行編譯、鏈接。這對(duì)程序員來講不僅費(fèi)時(shí)費(fèi)力而且易出錯(cuò)。針對(duì)以上問題,GNU為我們推出了make項(xiàng)目管理工具。Make項(xiàng)目管理工具能夠自動(dòng)確定需要重新編譯的文件,并對(duì)它們進(jìn)行重新編譯,然后鏈接生成執(zhí)行文件。Make項(xiàng)目管理工具是通過makefile來完成這一工作的,它對(duì)大

10、型項(xiàng)目軟件的開發(fā)是很有必要的。Make管理項(xiàng)目把所用的命令行保存到Makefile文件中,簡(jiǎn)化了編譯工作。Make管理項(xiàng)目可以減少重新編譯所需要的時(shí)間,它可以識(shí)別出makefile中哪些文件已經(jīng)修改,并且在再次編譯時(shí)只編譯這些文件,這樣提高了編譯的效率。 Make管理項(xiàng)目還在數(shù)據(jù)庫中維護(hù)了當(dāng)前開發(fā)工程中各個(gè)文件的依賴關(guān)系,在編譯前就可以確定是否能找到所需文件。 要完成Make管理項(xiàng)目的工作必須編寫makefile,makefile是一個(gè)文本形式的數(shù)據(jù)庫文件,其中包含一些規(guī)則來告訴Make編譯哪些文件以及怎樣編譯這些文件。每條規(guī)則包含以下內(nèi)容: l 一個(gè)target,是Make最終要?jiǎng)?chuàng)建的文件l

11、 一個(gè)或多個(gè)dependencies列表,是編譯生成目標(biāo)文件所需的其他文件l 需要執(zhí)行的commands,用于從指定的文件處生成目標(biāo)文件一個(gè)簡(jiǎn)單的makefile規(guī)則可以使用如下代碼表示:target:dependency file1 dependency file2command1command1注意:每一個(gè)命令的第一個(gè)字符必須是制表符,僅使用8個(gè)空格是不行的。否則make會(huì)顯示出錯(cuò)信息。 其中:target是要?jiǎng)?chuàng)建的目標(biāo)文件或者linux系統(tǒng)支持格式的可執(zhí)行文件。dependency fileN是創(chuàng)建target需要的依賴文件列表。CommandN是創(chuàng)建target時(shí)使用的命令組,是包括m

12、ake在內(nèi)的許多shell命令的集合。此外,除非特別指定,否則make的工作目錄就是當(dāng)前目錄。還要注意“#”號(hào)以后的文字為注釋。 # a simple makefile square: square.o Length.o width.o #gcc o square square.o Length.o width.o square.o:square.c square.h Length.h width.h #gcc c square.c Length.o: Length.c Length.h #gcc c Length.c width.o:width.c #gcc c width.c clean:

13、 rm edito*.o一個(gè)簡(jiǎn)單的makefile實(shí)例。makefile文件編寫好以后,在makefile所在目錄下鍵入make就可編譯square。這個(gè)makefile有5條規(guī)則。第1條規(guī)則用于創(chuàng)建默認(rèn)的目標(biāo)square, 它有3個(gè)依賴文件:square.o、Length.o和width.o。在編譯square時(shí)這些文件必須存在。第2行是 make為創(chuàng)建square所要執(zhí)行的命令,后面的三條規(guī)(49行)則告訴make如何逐個(gè)生成那些依賴文件。Clean用來清除編譯過程中的中間文件。 通常情況下,如果試圖在依賴文件不存在的情況下使用第二行所示的命令來編譯square,gcc將會(huì)出錯(cuò)并退出;而m

14、ake則在生成square前先檢查所需要的依賴文件是否存在,如果不存在,則先執(zhí)行別的規(guī)則以生成缺少的依賴文件,最后才編譯依賴性最強(qiáng)的目標(biāo)。如果square.o、Length.o和width.o已經(jīng)存在,則它不急于再次運(yùn)行后面的規(guī)則,而是比較這些依賴文件與其對(duì)應(yīng)的源文件的生成時(shí)間,如果判定有一個(gè)或者多個(gè)源文件新于這些依賴文件,make才重新編譯生成這些文件以反映相關(guān)源文件的最新變化,否則使用舊的依賴文件完成目標(biāo)square的編譯。至此,這個(gè)小小的makefile顯示了它強(qiáng)有力的自動(dòng)查找、比較、編譯等功能,它的用處是顯而易見的。 在編寫makefile時(shí)我們會(huì)使用一些常用的諸如clean、inst

15、all、dist、tags、depend、test、check、installtest以及installcheck的目標(biāo)名。目標(biāo)名clean一般用來清除編譯過程中的中間文件。install目標(biāo)名常會(huì)把最終的二進(jìn)制文件、所支持的庫文件和shell腳本以及相關(guān)文檔移到文件系統(tǒng)中與它對(duì)應(yīng)的位置,同時(shí)設(shè)置文件的權(quán)限和所有者。Uninstall用來刪除install目標(biāo)安裝的文件。Dist常常用于刪除編譯工作目錄中舊的二進(jìn)制文件和目標(biāo)文件并且創(chuàng)建歸檔文件。Tags用來更新或創(chuàng)建程序的標(biāo)記表。Depend用來設(shè)置makefile文件中各個(gè)目標(biāo)所需要的依賴文件列表。installtest和installch

16、eck一般用于驗(yàn)證install目標(biāo)的安裝過程。 5.2.4.7將應(yīng)用程序添加到文件系統(tǒng)的方法一、 編寫Makefile 二、 修改配置相關(guān)文件 三、 快速添加應(yīng)用程序 一、編寫Makefile1 1、使用、使用ViVi在在/user/app/user/app/下編寫下編寫 hello.chello.c文件文件#include int main(void) printf(Hello world!n); return 1; 2 2、編寫、編寫Makefile EXEC = hello OBJS = hello.o all: $(EXEC) $(EXEC): $(OBJS) $(CC) $(LDF

17、LAGS) -o $ $(OBJS) $(LDLIBS) romfs: $(ROMFSINST) /bin/$(EXEC) clean: -rm -f $(EXEC) *.elf *.gdb *.o 二、 修改配置相關(guān)文件1、修改./config/config.in 在最后面增加菜單: # mainmenu_option next_comment commentUser Application bool HelloCONFIG_USER_HELLO comment User Application endmenu #或者在合適的菜單塊中增加一行: bool Hello CONFIG_USER_

18、HELLO 二、 修改配置相關(guān)文件 CONFIG_USER_HELLO This program print hello on screen. 注意:注意: 描述文本必須縮進(jìn)兩空格,不能包括空行且必須少于70個(gè)字符2、修改./config/Configure.help Configure.help包含配置時(shí)顯示的描述文本,在文件中增加: 修改配置相關(guān)文件增加行 dir_$(CONFIG_USER_HELLO) += app 3 3、修改用戶程序工程管理文件、修改用戶程序工程管理文件 user/Makefile三、快速添加應(yīng)用程序快速添加應(yīng)用程序1、編譯生成可執(zhí)行文件 輸入以下命令直接編譯程序源代碼文件,對(duì)于復(fù)雜一點(diǎn)的工程可以使用上節(jié)中的Makefile: 2、復(fù)制可執(zhí)行文件到文件系統(tǒng) 在執(zhí)行make romfs命令時(shí)會(huì)生成romfs文件夾,它是生成的文件系統(tǒng)目錄,因此如果已經(jīng)執(zhí)行過make romfs命令,用戶可將生成的可執(zhí)行文件hello復(fù)制到romfs/bin目錄,不必重復(fù)該命令。注意注意

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論