




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
11.1嵌入式系統(tǒng)簡(jiǎn)介11.1.1嵌入式系統(tǒng)的定義嵌入式系統(tǒng)是將先進(jìn)的計(jì)算機(jī)技術(shù)、半導(dǎo)體技術(shù)和電子技術(shù)與各個(gè)行業(yè)的具體應(yīng)用相結(jié)合后的產(chǎn)物。
Linux提供了完成嵌入功能的基本的內(nèi)核和所需要的所有用戶界面,它是多面的。它能處理嵌入式任務(wù)和用戶界面。將Linux看作是連續(xù)的統(tǒng)一體,從一個(gè)具有內(nèi)存管理、任務(wù)切換和時(shí)間服務(wù)及其他的分拆的、微內(nèi)核到完整的服務(wù)器,支持所有的文件系統(tǒng)和網(wǎng)絡(luò)服務(wù)。
11.1.2嵌入式系統(tǒng)的特征嵌入式系統(tǒng)是面向用戶、面向產(chǎn)品、面向應(yīng)用的,如果獨(dú)立于應(yīng)用自行發(fā)展,則會(huì)失去市場(chǎng)。嵌入式處理器的功耗、體積、成本、可靠性、速度、處理能力、電磁兼容性等方面均受到應(yīng)用要求的制約,這些也是各個(gè)半導(dǎo)體廠商之間競(jìng)爭(zhēng)的熱點(diǎn)。
11.2嵌入式Linux基礎(chǔ)11.2.1嵌入式Linux的應(yīng)用信息家電:PDA,機(jī)頂盒,DigitalTelephone,AnsweringMachine,ScreenPhone;數(shù)據(jù)網(wǎng)絡(luò):EthernetSwitches,Router,Bridge,Hub,Remoteaccessservers,ATM,F(xiàn)ramerelay;遠(yuǎn)程通信;醫(yī)療電子;交通運(yùn)輸;計(jì)算機(jī)外設(shè);工業(yè)控制;航空航天領(lǐng)域
11.2.2Linux作為嵌入式操作系統(tǒng)的優(yōu)勢(shì)1.免許可證費(fèi)用嵌入式Linux的版權(quán)費(fèi)是免費(fèi)的,其購(gòu)買費(fèi)用僅為媒介成本。大多數(shù)的商業(yè)操作系統(tǒng),例如Windows,WindowsCE對(duì)每套操作系統(tǒng)收取一定的許可證費(fèi)用。相對(duì)地,Linux是一個(gè)免費(fèi)軟件,并且公開源代碼。只要不違反GPL(GeneralPublicLicense,通用版權(quán)許可協(xié)議),就可以自由應(yīng)用和發(fā)布Linux。
2.有很高的穩(wěn)定性在PC硬件上運(yùn)行時(shí),Linux是非常可靠和穩(wěn)定的,特別是和現(xiàn)在流行的一些操作系統(tǒng)相比。有兩個(gè)因素會(huì)影響穩(wěn)定性,一是使用了混亂的驅(qū)動(dòng)程序。驅(qū)動(dòng)程序的選擇很有限,有些穩(wěn)定有些不穩(wěn)定。一旦離開了通用的PC平臺(tái),需要自己編寫。二是使用了硬盤。
3.強(qiáng)大的網(wǎng)絡(luò)功能
Linux天生就是一個(gè)網(wǎng)絡(luò)操作系統(tǒng),幾乎所有的網(wǎng)絡(luò)防議和網(wǎng)絡(luò)接口都已經(jīng)被定制在Linux中。Linux內(nèi)核在處理網(wǎng)絡(luò)防議方面比標(biāo)準(zhǔn)的Unix更具執(zhí)行效率,在每一個(gè)端口上有更高的吞吐量。
4.豐富的開發(fā)工具
Linux提供C,C++,JAVA以及其他很多的開發(fā)工具。更重要的是,愛好者可以免費(fèi)獲得,技術(shù)上由全世界的自由軟件開發(fā)者提供支持。
Linux基于GNU的工具包,此工具包提供了完整與無縫交叉平臺(tái)開發(fā)工具,從編輯器到底層調(diào)試。其C編譯器產(chǎn)生更有效率的執(zhí)行代碼。
5.實(shí)時(shí)性在實(shí)時(shí)性能方面,RT_Linux,HardhatLinux等嵌入式Linux支持實(shí)時(shí)性能;穩(wěn)定性好,安全性好。
11.3LinuxI/O端口編程11.3.1如何在C語言下使用I/O端口1.一般方法在存取任何I/O端口之前,必須讓程序有如此做的權(quán)限。要完成這個(gè)目的,可以在程序一開始的地方(但是,要在任何I/O端口存取動(dòng)作之前)調(diào)用ioperm()這個(gè)函數(shù)(該函數(shù)在文件unistd.h中,并且被定義在內(nèi)核中)。
使用語法是:ioperm(from,num,turn_on)
其中from是第一個(gè)允許存取的I/O端口地址,num是接著連續(xù)存取I/O端口地址的數(shù)目。
函數(shù)ioperm()只能取得端口地址0x000到0x3ff的存取權(quán)限;至于較高地址的端口,需要使用函數(shù)iopl()(該函數(shù)可以一次存取所有的端口地址)。將權(quán)限等級(jí)參數(shù)值設(shè)為3(例如,iopl(3)),以便程序能夠存取所有的I/O端口(如果存取到錯(cuò)誤的端口地址將對(duì)計(jì)算機(jī)造成各種不可預(yù)期的損害。同樣地,調(diào)用函數(shù)iopl()必需要擁有root的權(quán)限。
接著來實(shí)際地存取I/O端口。要從某個(gè)端口地址輸入一個(gè)字節(jié)(8位)的信息,調(diào)用函數(shù)inb(port),該函數(shù)會(huì)傳回所取得的一個(gè)字節(jié)的信息。要輸出一個(gè)字節(jié)的信息,調(diào)用函數(shù)outb(value,port)。要從某兩個(gè)端口地址x和x+1(兩個(gè)字節(jié)組成一個(gè)字,故使用組合語言指令inw)輸入一個(gè)字(16個(gè)bit)的信息,需要調(diào)用函數(shù)inw(x);要輸出一個(gè)字的信息到兩個(gè)端口地址,需要調(diào)用函數(shù)outw(value,x)。
2.替代方法:/dev/port
另一個(gè)存取I/O端口的方法是以函數(shù)open()打開文件/dev/port(一個(gè)字符設(shè)備,主設(shè)備編號(hào)為1,次設(shè)備編號(hào)為4),以便執(zhí)行讀與(或)寫的動(dòng)作(注意標(biāo)準(zhǔn)輸出入函數(shù)f*()有內(nèi)部的緩沖,所以要避免使用)。
11.3.2硬件中斷與DMA存取用戶程序如果在用戶模式下執(zhí)行,不可以直接使用硬件中斷(IRQ)或DMA。用戶必須編寫一個(gè)內(nèi)核驅(qū)動(dòng)程序。也就是說,在用戶模式中所寫的程序無法控制硬件中斷的產(chǎn)生。
11.3.3延遲時(shí)間在用戶模式中執(zhí)行的進(jìn)程不能精確地控制時(shí)間,因?yàn)長(zhǎng)inux是個(gè)多用戶的操作環(huán)境,在執(zhí)行中的進(jìn)程隨時(shí)會(huì)因?yàn)楦鞣N原因被暫停大約10ms到數(shù)秒(在系統(tǒng)負(fù)荷非常高的時(shí)候)。然而對(duì)于大多數(shù)使用I/O端口的應(yīng)用程序而言,這個(gè)延遲時(shí)間實(shí)際上算不了什么。要縮短延遲時(shí)間,需要使用函數(shù)nice將你在執(zhí)行中的進(jìn)程設(shè)定成高優(yōu)先權(quán),或使用即時(shí)調(diào)度法(real-timescheduling)。
11.4嵌入式Linux開發(fā)11.4.1構(gòu)造嵌入式Linux前先要了解的幾個(gè)關(guān)鍵問題1.如何引導(dǎo)?在PC上運(yùn)行的Linux依靠PC的BIOS來提供這些配置和OS加載功能。在一個(gè)嵌入式系統(tǒng)里經(jīng)常沒有這種BIOS。這樣就要提供同等的啟動(dòng)代碼。在大多數(shù)情況下,一個(gè)最小的通電自檢模塊,可以檢查內(nèi)存的正常運(yùn)行、讓LED閃爍,并目驅(qū)動(dòng)其它必須的硬件以使主LinuxOS啟動(dòng)和運(yùn)行。
2.需要虛擬內(nèi)存嗎?由于CPU的原因,在嵌入式Linux中保存虛擬內(nèi)存代碼是明智的,因?yàn)閷⑺宄苜M(fèi)事。而且還有另外一個(gè)原因——它支持共享文本,這樣就可以使許多程序共享一個(gè)軟件。虛擬內(nèi)存的調(diào)入功能可以被關(guān)掉,只要將交換空間的大小設(shè)置為零。然后,如果用戶寫的程序比實(shí)際的內(nèi)存大,系統(tǒng)就會(huì)當(dāng)作用戶的運(yùn)行用盡了交換空間來處理,這個(gè)程序?qū)⒉粫?huì)運(yùn)行。
3.選用什么樣的文件系統(tǒng)?實(shí)際上,許多商業(yè)性嵌入式系統(tǒng),提供文件系統(tǒng)作為選項(xiàng)。許多或者是專用的文件系統(tǒng)或者是MS-DOS-Compatible文件系統(tǒng)。Linux提供MS-DOS-Compatible文件系統(tǒng),同時(shí)還有其它多種選擇。文件系統(tǒng)可以被放在傳統(tǒng)的磁盤驅(qū)動(dòng)器、FlashMemory或其它這類的介質(zhì)上。而且,用于暫時(shí)保存文件,一個(gè)小RAM盤就足夠了。
4.如何消除嵌入式Linux系統(tǒng)對(duì)磁盤的依賴?在一個(gè)嵌入式系統(tǒng)里,可能沒有磁盤。有兩種途徑可以消除對(duì)磁盤的依賴,這要看系統(tǒng)的復(fù)雜性和硬件的設(shè)計(jì)。在一個(gè)簡(jiǎn)單的系統(tǒng)里,當(dāng)系統(tǒng)啟動(dòng)后,內(nèi)核和所有的應(yīng)用程序都在內(nèi)存里。這就是大多數(shù)傳統(tǒng)的嵌入式系統(tǒng)工作模式,它同樣可以被Linux支持。有了Linux,就有了第二種可能性。因?yàn)長(zhǎng)inux已經(jīng)有能力“加載”和“卸載”程序,一個(gè)嵌入式系統(tǒng)就可以利用它來節(jié)省內(nèi)存。
5.嵌入式Linux達(dá)到怎樣的實(shí)時(shí)性?在嵌入式領(lǐng)域中,實(shí)時(shí)并非是最重要的。嵌入式系統(tǒng)常常被錯(cuò)誤地分為實(shí)時(shí)系統(tǒng),盡管多數(shù)系統(tǒng)一般并不要求實(shí)時(shí)功能。實(shí)時(shí)是一個(gè)相對(duì)的詞,常常被嚴(yán)格地定義實(shí)時(shí)為對(duì)一事件以預(yù)定的方式在極短的時(shí)間如微秒作出響應(yīng),漸漸地,在如此短暫時(shí)間間隔內(nèi)的嚴(yán)格實(shí)時(shí)功能在專用DSP芯片或ASIC上實(shí)現(xiàn)了。只有在設(shè)計(jì)低層硬件FIFO、分散/聚集DMA引擎和定制硬件時(shí)才會(huì)有這樣的要求。
11.4.2嵌入式Linux開發(fā)環(huán)境
嵌入式Linux開發(fā)流程
11.4.3開發(fā)嵌入式Linux的步驟1.精簡(jiǎn)內(nèi)核構(gòu)造內(nèi)核常用命令包括:makeconfig,dep,clean,mrproper,zImage,bzImage,modules,modulesinstall。(1)makeconfig核心配置,(2)makedep尋找依存關(guān)系。(3)makeclean清除以前構(gòu)核所產(chǎn)生的所有目標(biāo)文件、模塊文件、核心以及一些臨時(shí)文件等,不產(chǎn)生任何文件。(4)makermproper刪除所有因構(gòu)核過程中產(chǎn)生的所有文件。
(5)make,makezImage,makebzImagemake:構(gòu)核。makezImage:在make的基礎(chǔ)上產(chǎn)生壓縮的核心映象文件./arch/$(ARCH)/boot/zImage以及在./arch/$(ARCH)/boot/compresed/目錄下產(chǎn)生一些臨時(shí)文件。makebzImage:在make的基礎(chǔ)上產(chǎn)生壓縮比例更大的核心映象文件./arch/$(ARCH)/boot/bzImage以及在./arch/$(ARCH)/boot/compresed/目錄下產(chǎn)生一些臨時(shí)文件。在核心太大時(shí)進(jìn)行。(6)makemodules編譯模塊文件。(7)makemodulesinstall
2.系統(tǒng)啟動(dòng)bootsect是第一個(gè)被讀入內(nèi)存中并執(zhí)行的程序。bootsect的啟動(dòng)程序如下:第一步,bootsect將它從被ROMBIOS載入的絕對(duì)地址0x7C00處搬到0x90000處,然后利用一個(gè)jmpi(jumpindirectly)的指令,跳到新位置的jmpi的下一行去執(zhí)行。第二步,將其他segmentregisters包括DS,ES,SS都指向0x9000這個(gè)位置,與CS看齊。另外將SP及DX指向一任意位移地址(offset),這個(gè)地址等一下會(huì)用來存放磁盤參數(shù)表(diskpara-metertable)。第三步,接著利用BIOS中斷服務(wù)int13h的第0號(hào)功能,重置磁盤控制器,使得剛才的設(shè)定發(fā)揮功能。
第四步,完成重置磁盤控制器之后,bootsect就從磁盤上讀入緊鄰著bootsect的setup程序,也就是setup.S,此讀入動(dòng)作是利用BIOS中斷服務(wù)int13h的第2號(hào)功能。Setup的image將會(huì)讀入至程序所指定的內(nèi)存絕對(duì)地址0x90200處,也就是在內(nèi)存中緊鄰著bootsect所在的位置。待setup的image讀入內(nèi)存后,利用BIOS中斷服務(wù)int13h的第8號(hào)功能讀取目前磁盤的參數(shù)。第五步,讀入Linux的kernel。在讀入前,將會(huì)先呼叫BIOS中斷服務(wù)intl0h的第3號(hào)功能,讀取游標(biāo)位置,之后再呼叫BIOS中斷服務(wù)intl0h的第13h號(hào)功能,在屏幕上輸出字串“Loading…”,這個(gè)字串在bootlinux時(shí)都會(huì)首先被看到。第六步,接下來做的事是檢查rootdevice
3.驅(qū)動(dòng)程序在Linux系統(tǒng)里,設(shè)備驅(qū)動(dòng)程序所提供的這組入口點(diǎn)由一個(gè)結(jié)構(gòu)來向系統(tǒng)進(jìn)行說明,此結(jié)構(gòu)定義為:#include<linux/fs.h>structfile_operations{int(*lseek)(structinode*inode,structfile*filp,off_toff,intpos);int(*read)(structinode*inode,structfile*filp,char*buf,intcount);int(*write)(structinode*inode,structfile*filp,char*buf,intcount);
int(*readdir)(structinode*inode,structfile*filp,structdirent*dirent,intcount
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 合作辦園協(xié)議書合同
- 設(shè)計(jì)思維在紡織中的試題及答案
- 云南合同協(xié)議書
- 農(nóng)村公路養(yǎng)護(hù)合同協(xié)議書
- 協(xié)議書 合同 區(qū)別
- 購(gòu)機(jī)合同協(xié)議書
- 更名合同協(xié)議書
- 保姆雇傭住家合同協(xié)議書
- 規(guī)范合同協(xié)議書
- 授課合同協(xié)議書
- 2024年高考真題-生物(天津卷) 含解析
- 浸水電梯應(yīng)急保障檢測(cè)規(guī)范DB1305T+95-2024
- 醫(yī)療安全(不良)事件報(bào)告制度培訓(xùn)課件
- 自動(dòng)噴水滅火系統(tǒng)施工安裝質(zhì)量記錄(樣本)
- 12SS508混凝土模塊式室外給水管道附屬構(gòu)筑物
- T-LNEMA 013-2024 實(shí)驗(yàn)室危險(xiǎn)化學(xué)品貯存管理技術(shù)規(guī)范
- 麻辣燙合伙人合同協(xié)議書(2篇)
- 青年人要有艱苦奮斗的精神(2023年遼寧沈陽(yáng)中考語文試卷議論文閱讀題及答案)
- 食品安全前提方案PRP程序
- 構(gòu)建水利安全生產(chǎn)風(fēng)險(xiǎn)管控六項(xiàng)機(jī)制工作指導(dǎo)手冊(cè)
- 2024-2030年中國(guó)蘿卜種植市場(chǎng)營(yíng)銷渠道分析與發(fā)展規(guī)模研究研究報(bào)告
評(píng)論
0/150
提交評(píng)論