版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
嵌入式操作系統(tǒng)考試要求的內(nèi)容前3章(25%)1)嵌入式系統(tǒng)的特點(diǎn):開(kāi)發(fā)方式、內(nèi)核大小、專(zhuān)用性、編譯方式;2)從開(kāi)發(fā)環(huán)境與運(yùn)行環(huán)境來(lái)看,嵌入式系統(tǒng)與一般PC的特點(diǎn)。什么是交叉編譯在一個(gè)平臺(tái)上生成另一個(gè)平臺(tái)上的可執(zhí)行代碼。操作系統(tǒng)的兩大功能和四項(xiàng)基本任務(wù)使計(jì)算機(jī)硬件便于使用;高效組織和正確地使用計(jì)算機(jī)的資源。進(jìn)程管理、進(jìn)程間通信與同步、內(nèi)存管理和I/O資源管理。ARM是什么?是一種嵌入式芯片的型號(hào)嗎?是AdvanceRISCMachine(ARM)公司提出的一種嵌入式芯片的內(nèi)核,ARM公司不生產(chǎn)芯片而只是轉(zhuǎn)讓知識(shí)產(chǎn)權(quán)另外也提供基于ARM架構(gòu)的開(kāi)發(fā)設(shè)計(jì)技術(shù):軟件工具,評(píng)估板,調(diào)試工具,應(yīng)用軟件,總線架構(gòu),外圍設(shè)備單元,等等嵌入式處理器的分類(lèi)嵌入式處理器可分為低端的嵌入式微控制器(MicroControllerUnit,MCU)、常用于計(jì)算機(jī)通信領(lǐng)域的嵌入式DSP處理器(EmbeddedDigitalSignalProcessor,EDSP)、中高端的嵌入式微處理器(EmbeddedMicroProcessorUnit,EMPU)和高度集成的嵌入式片上系統(tǒng)(SystemOnChip,SOC)。談一談嵌入式實(shí)時(shí)系統(tǒng)從實(shí)時(shí)性的分類(lèi)。硬實(shí)時(shí)和軟實(shí)時(shí)的區(qū)別就在于對(duì)外界的事件做出反應(yīng)的時(shí)間。硬實(shí)時(shí)系統(tǒng):必須對(duì)事件做出及時(shí)的反應(yīng),絕對(duì)不能錯(cuò)過(guò)事件處理的時(shí)限。在硬實(shí)時(shí)系統(tǒng)中如果出現(xiàn)了這樣的情況就意味著巨大的損失和災(zāi)難。比如說(shuō)航天飛機(jī)的控制系統(tǒng),如果出現(xiàn)故障,后果不堪想象。軟實(shí)時(shí)系統(tǒng):在系統(tǒng)負(fù)荷較重的時(shí)候,允許發(fā)生錯(cuò)過(guò)時(shí)限的情況而且不會(huì)造成太大的危害。比如液晶屏刷新允許有短暫的延遲。目前比較流行的嵌入式操作系統(tǒng)有些(需例舉3種)VxWorks,QNX,PalmOS,WindowsCE,LynxOS,嵌入式Linux,uC/OS'CISC和RISCCISC:ComplexInstructionSetComputer);RISC:reducedinstructionsetcomputer從代碼密度、尋址方式的多少、指令長(zhǎng)度、指令數(shù)量、專(zhuān)用性、平均執(zhí)行周期(CPI)、是否采用Load/Store結(jié)構(gòu),算術(shù)和邏輯操作僅針對(duì)寄存器?Load/Store結(jié)構(gòu)流水線技術(shù)通過(guò)指令的并行運(yùn)行提高運(yùn)行速度,ARM7三級(jí)流水(fetch,decode,execute),ARM9五級(jí)流水(memory,write)ARM處理器的各種基本工作模式用戶(hù)模式、快速中斷模式、外部中斷模式、管理模式、中止模式、未定義指令中止模式和系統(tǒng)模式。12?馮?諾依曼體系結(jié)構(gòu)和哈佛體系結(jié)構(gòu)前者操作數(shù)和指令分時(shí)共用同一組總線,后者操作數(shù)和指令所采用的總線不同因而取指和取操作數(shù)可以同時(shí)進(jìn)行,從而提高了運(yùn)行速度13,高速緩存高速緩存是一種小型、快速的存儲(chǔ)器,它保存部分主存內(nèi)容的拷貝。14.14.FLASH(閃存):是EEPROM的變種,EEPROM與閃存不同的是,它能在字節(jié)水平上進(jìn)行刪除和重寫(xiě)而不是整個(gè)芯片擦寫(xiě),這樣閃存就比EEPROM的更新諫度快。中于其斷電時(shí)仍能保存數(shù)據(jù),閃存通常被用來(lái)保存設(shè)置信息,如在電腦的BIOS(基本輸入輸出程序)、PDA(個(gè)人數(shù)字助理)、數(shù)碼相機(jī)中保存資料等。NandFlash與NorFlash相比較:編程、擦除、讀的速度以及可靠性15.Nandflash/NorFlash 寫(xiě)快/慢、簡(jiǎn)單/擦除前需要寫(xiě)0、讀稍慢/稍快、不可靠/可15.靠16.從編程的角度看,ARM微處理器的工作狀態(tài)有哪些?16.2種且可在2種狀態(tài)之間切換:第一種為ARM狀態(tài),此時(shí)處理器執(zhí)行32位的字對(duì)齊的ARM指令;第二種為T(mén)humb狀態(tài),此時(shí)處理器執(zhí)行16位的、半字對(duì)齊的Thumb指令。17.ARM體系結(jié)構(gòu)兩種存儲(chǔ)字?jǐn)?shù)據(jù)方法一一大端格式和小段格式17.大端:字?jǐn)?shù)據(jù)的高字節(jié)存儲(chǔ)在低地址中,而字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中。小端:與大端存儲(chǔ)格式相反,在小端存儲(chǔ)格式中,低地址中存放的是字?jǐn)?shù)據(jù)的低字節(jié),高地址存放的是字?jǐn)?shù)據(jù)的高字節(jié)。18.ARM寄存器組織、分類(lèi),Thum狀態(tài)和ARM狀態(tài)下寄存器組織上的異同通用寄存器包括R0?R15,可以分為三類(lèi):不分組寄存器R0?R7;分組寄存器R8?R14;程序計(jì)數(shù)器PC(R15)。Thumb狀態(tài)下的寄存器集是ARM狀態(tài)下寄存器集的一個(gè)子集Thumb狀態(tài)下和ARM狀態(tài)下的R0?R7是相同的。Thumb狀態(tài)下和ARM狀態(tài)下的CPSR和所有的SPSR是相同的。Thumb狀態(tài)下的SP映射到ARM狀態(tài)下的R13。Thumb狀態(tài)下的LR映射到ARM狀態(tài)下的R14。Thumb狀態(tài)下的程序計(jì)數(shù)器PC(R15)映射到ARM狀態(tài)下的PC(R15)。19,什么是異常向量異常是由內(nèi)部或外部源產(chǎn)生并引起處理器處理一個(gè)事件,它會(huì)導(dǎo)致正常的程序執(zhí)行流程發(fā)生暫時(shí)的停止,例如外部中斷或試圖執(zhí)行未定義指令都會(huì)引起異常。異常出現(xiàn)后強(qiáng)制從異常類(lèi)型對(duì)應(yīng)的固定存貯地址開(kāi)始執(zhí)行程序,這些固定的地址稱(chēng)為異常向量。第4章
這一部分不作要求第5章(40%)如何從鍵盤(pán)向main函數(shù)傳入?yún)?shù)用scanf函數(shù)main(){inta[10];inti;for(i=0;i<10;i++)scanf("%d",&a[i]);printfCWfor(i=0;i<10;i++)printf("%d”,a[i]);}帶參數(shù)main函數(shù)#include<stdio.h>main(argc,argv)intargc;char*argv[];{while(argc>1){++argv;printf("%s\nn,*argv);--argc;}}增強(qiáng)程序可讀性的寄存器定義格式#define寄存器名(*(volatileunsigned*)寄存器在存儲(chǔ)空間中的位置)例如#define rUCON0(*(volatileunsigned*) 0x50000004)關(guān)=!==A=_1110000000000000=0x0eh<12B=0000001100000000=0x03h<8C=0000000010010000=0x09h<4D=0000000000000110=0x06h<05.采用位掩碼對(duì)寄存器的某個(gè)功能區(qū)位進(jìn)行設(shè)置fun3的位掩碼:FUN3_MASK=0xf<4C’=0x0B<4R&=~FUN3_MASKRI=C’6,如何對(duì)I/O口的功能進(jìn)行配置并進(jìn)行相關(guān)操作,讓輸出端口電平變化(配置為輸出,然后向端口數(shù)據(jù)寄存器位寫(xiě)入相應(yīng)電平),要求能進(jìn)行編程通過(guò)對(duì)G口8、9腳的操作實(shí)現(xiàn)LED輪流閃爍#definerGPGCON(*(volatileunsigned*)0x56000060)//PORTG控制寄存器#definerGPGDAT(*(volatileunsigned*)0x56000064)//PORTG數(shù)據(jù)寄存器voidmain(void)(Intflag,I;Target_Init()for(;;){If(flag==0){for(i=0;i<1000000;i++);//延時(shí)rGPGCON=rGPGCON&0xfff0ffff|0x00050000〃配置8、9腳為輸出rGPGDAT=rGPGDAT&0xeff|0x200;//8腳低電平,9腳高電平for(i=0;i<1000000;i++);//延時(shí)Flag=1;}Else{for(i=0;i<1000000;i++);//延時(shí)rGPGCON=rGPGCON&0xfff0ffff|0x00050000//配置8、9腳為輸出rGPGDAT=rGPGDAT&0xdff|0x100;//8腳高電平,9腳低電平for(i=0;i<1000000;i++);//延時(shí)
Flag=0;}_CPU與外設(shè)傳輸數(shù)據(jù)的方式有哪幾類(lèi)查詢(xún)方式、中斷方式、DMA。DMA不占用cpu,但占用系統(tǒng)總線。中斷部分應(yīng)掌握如下內(nèi)容:1)中斷過(guò)程、與中斷相關(guān)的寄存器的作用、中斷掛起寄存器和中斷源掛起寄存器的區(qū)別、與中斷屏蔽有關(guān)的寄存器(中斷屏蔽寄存器、子中斷屏蔽寄存器以及CPSR)中斷過(guò)程保存現(xiàn)場(chǎng):PC—LR,CPSR—SPSR根據(jù)設(shè)置的中斷模式選擇IRQ或FIQ從中斷向量處獲取中斷服務(wù)程序的地址根據(jù)優(yōu)先級(jí)和中斷標(biāo)志識(shí)別是哪一個(gè)中斷發(fā)生,并進(jìn)行相應(yīng)處理中斷返回,恢復(fù)現(xiàn)場(chǎng):PC—LR,CPSRfSPSR中斷屏蔽寄存器:為了能接受中斷請(qǐng)求必須將F或I位設(shè)置為0,同時(shí)將中斷屏蔽寄存器的相應(yīng)位設(shè)置為0。中斷掛起寄存器:共32位,每一位與一中斷源相對(duì)應(yīng),只有一位能為1,指示相應(yīng)中斷掛起。各掛起的中斷源由各中斷仲裁器確定那個(gè)中斷掛起。(中斷掛起的含義是:相應(yīng)的中斷是下一個(gè)待處理的中斷在中斷服務(wù)程序中需要將相應(yīng)中斷清除)中斷源掛起寄存器:共32位,當(dāng)某一個(gè)中斷源產(chǎn)生中斷請(qǐng)求,相應(yīng)位置1,在中斷服務(wù)程序中必須清除中斷模式寄存器:共32位,每一位與一中斷源相對(duì)應(yīng),設(shè)置相應(yīng)的中斷源為快速中斷還是普通中斷。中斷優(yōu)先權(quán)寄存器:ARM將中斷分為6組,每一組設(shè)一個(gè)優(yōu)先權(quán)仲裁器,在中斷優(yōu)先權(quán)寄存器中,每一組有一個(gè)ARB_MODE位設(shè)置是否使能改組各中斷源的優(yōu)先級(jí)滾動(dòng)變化,另有兩位ARB_SEL以設(shè)置改組各中斷源的優(yōu)先級(jí)。中斷偏移寄存器:指示普通中斷中是哪一個(gè)中斷掛起,當(dāng)中斷掛起寄存器或中斷源掛起寄存器中的某位清除時(shí),這個(gè)寄存器被清除。子中斷源掛起寄存器:指示子中斷源是否有請(qǐng)求。向這個(gè)寄存器中的某位寫(xiě)數(shù)據(jù),則可清除這一位。CPSR:程序狀態(tài)寄存器(currentprogramstatusregister)cpsr在用戶(hù)級(jí)編程時(shí)用于存儲(chǔ)條件碼;CPSR包含條件碼標(biāo)志,中斷禁止位,當(dāng)前處理器模式以及其他狀態(tài)和控制信息。PWM編程:改變頻率和脈沖寬度以及定時(shí)器觀測(cè)值的讀取改變頻率:定時(shí)器減法緩沖寄存器(TCNTBn);改變脈沖寬度:比較緩沖寄存器(TCMPBn);10.串口定時(shí)器觀測(cè)值:定時(shí)器觀測(cè)寄存器(TCNTOn)10.串口幀錯(cuò)誤、奇偶校驗(yàn)錯(cuò)誤,溢出錯(cuò)誤,前兩種錯(cuò)誤的校驗(yàn)原理,數(shù)據(jù)的發(fā)送和接收、回環(huán)模式、自動(dòng)流控制,串口數(shù)據(jù)傳輸?shù)木幊?,從某一個(gè)內(nèi)存單元取數(shù),然后發(fā)往串口(包括DMA方式)使用DMA方式實(shí)現(xiàn)從存貯器發(fā)送數(shù)據(jù)到串口0
#include<string.h>#include“?.\INC\config?h”#defineSENDDATA(*(volatileunsignedchar*)0x30200000)//待發(fā)送的地址#defineSENDADDR((volatileunsignedchar*)0x30200000)voidmain(void){volatileunsignedchar*p=SE]NDADDR;volatileunsignedchar*p=SE]NDADDR;intI; Targetinit(); Delay(1000)SENDDATA=0x41;for(i=0;i<128;i++)*pp++=0x41+i; 〃上三條語(yǔ)句提供源數(shù)據(jù)rUCON0=rCON0&0xff3I0x8;//Uart0設(shè)置為DMA的方式//下面的語(yǔ)句對(duì)DMA0初始化rDISRC0=(U32)(SENDADDR);rDISCC0=(0?1)I(0<0);/^=AHB?傳送后地址增加rDIDST0=(U32)UTXH0;〃發(fā)送FIFO緩沖區(qū)地址rDIDSTC0=(1vv1)I(1v0)//目標(biāo)=APB.傳送后地址不變r(jià)DCON0=(0vv31)I(0v<30)I(1vv29)I(0vv28)(0?27)I(1vv23)I(1vv22)I(0?20)I 50);〃設(shè)置DMA控制器:握手模式,與APB同步,使能中斷,單位傳輸,單個(gè)模式,目標(biāo)=UART0硬件請(qǐng)求模式,不自動(dòng)加載,半字,計(jì)數(shù)初值=50rMASKTRIG0=(1<<1); //打開(kāi)DMA誦道0whiled)}11.(A)DMA:概念、原理、數(shù)據(jù)傳輸過(guò)程,S3C2410的DMA控制寄存器的單個(gè)服務(wù)模式和整體服務(wù)模式,這一部分單獨(dú)編程不作要求。概念:DirectMemoryAcess,是指存貯器和外設(shè)在DMA控制器的控制下直接傳輸數(shù)據(jù)而不誦過(guò)CPU,在DMA數(shù)據(jù)傳輸前需要從CPU獲得總線的控制權(quán)DMA數(shù)據(jù)傳輸過(guò)程外設(shè)向DMA控制器發(fā)出DMA請(qǐng)求DMA控制器向CPU發(fā)出總線請(qǐng)求CPU執(zhí)行完現(xiàn)行的總線周期后向DMA控制器發(fā)出應(yīng)答信號(hào)CPU將總線控制權(quán)讓給DMA控制器DMA控制器向外部設(shè)備發(fā)出DMA請(qǐng)求應(yīng)答信號(hào)進(jìn)行DMA數(shù)據(jù)傳輸數(shù)據(jù)傳輸完畢DMA向CPU發(fā)出中斷請(qǐng)求,CPU在接收到中斷后進(jìn)行相應(yīng)處理CPU從中斷返回并從DMA控制器收回總線控制權(quán)在單個(gè)服務(wù)模式下,主FSM的3種狀態(tài)執(zhí)行完后就停止,并等待下一個(gè)DMA請(qǐng)求,并等待下一個(gè)DMA請(qǐng)求。如果產(chǎn)生了新的DMA請(qǐng)求,則所有三個(gè)狀態(tài)將被重復(fù)。因此,對(duì)于每一個(gè)原子傳送操作,DMAACK先后置1和清零。相反,在整體服務(wù)模式下,主FSM一直在狀態(tài)3等待直到CURR_TC變?yōu)?,因此DMAACK在整個(gè)傳送過(guò)程中置1,僅當(dāng)CURR_TC變?yōu)?才清零。AD轉(zhuǎn)換器:作用、類(lèi)型、編程作用:模擬信號(hào)與CPU之間的聯(lián)系和接口類(lèi)型:雙積分A/D轉(zhuǎn)換器:對(duì)模擬信號(hào)V.積分一個(gè)固定時(shí)間T;然后用參考電源Vf反相積分Ti直到積分電容放電到0:Vi=Vf-Ti/T逐次逼近A/D轉(zhuǎn)換器:由逐次逼近寄存器SAR,D/A轉(zhuǎn)換器、比較器以及時(shí)序和邏輯控制等部分組成。比較時(shí)先從SAR的最高位開(kāi)始,逐次確定各位的數(shù)碼為1還是0.觸摸屏的工作原理與編程兩個(gè)金屬涂層分別為X、Y方向的電極;當(dāng)給X方向的電極施加一確定的電壓,而在Y方向電極對(duì)不施加電壓時(shí),觸點(diǎn)處的電壓值可在Y+或Y-上測(cè)量出來(lái)。從而確定出X坐標(biāo)。Y坐標(biāo)的確定同理LCD:LCD的顯示原理:顯示的最小單位-像素、顯示緩沖區(qū)中填寫(xiě)的是什么信息-每點(diǎn)的顏色信息漢字的顯示原理:嵌入式控制系統(tǒng)中最常用的漢字是16x16點(diǎn)陣,它是由行列各16個(gè)點(diǎn),共256個(gè)點(diǎn)組成的點(diǎn)陣圖案,每行的16個(gè)點(diǎn)在內(nèi)存中占兩個(gè)字節(jié),一個(gè)16x16點(diǎn)陣漢字共16行,在內(nèi)存中占32個(gè)字節(jié)。根據(jù)這些字節(jié)在內(nèi)存中存放的順序,第一行的第一個(gè)字節(jié)稱(chēng)“0”號(hào)字節(jié),第一行第二個(gè)字節(jié)稱(chēng)“1”號(hào)字節(jié);第二行的第一個(gè)字節(jié)稱(chēng)“2”號(hào)字節(jié),第二個(gè)字節(jié)稱(chēng)“3”號(hào)字節(jié)。以此類(lèi)推,最后一行的第一個(gè)字節(jié)稱(chēng)“30”號(hào)字節(jié),第二個(gè)字節(jié)稱(chēng)“31”號(hào)字節(jié),每個(gè)字節(jié)高位在前,低位在后,即D7在一個(gè)字節(jié)的最左側(cè),D0在最右側(cè)。漢字的區(qū)位碼和內(nèi)碼、字模:區(qū)位碼:漢字庫(kù)結(jié)構(gòu)作了統(tǒng)一規(guī)定,即將字庫(kù)分成94個(gè)區(qū),每個(gè)區(qū)有94個(gè)漢字(以位做區(qū)別),每一個(gè)漢字在漢字庫(kù)中有確定的區(qū)和位編號(hào)(用兩個(gè)字節(jié)),就是所謂的區(qū)位碼(區(qū)位碼的第一個(gè)字節(jié)表示區(qū)號(hào),第2個(gè)字節(jié)表示位號(hào)),因而只要知道了區(qū)位碼,就可知道該漢字在字庫(kù)中的地址。內(nèi)碼:組成兩字節(jié)代碼的最高位為0,即每個(gè)字節(jié)僅只使用7位,這樣在機(jī)器內(nèi)使用時(shí),由于英文的ASCII碼也在使用,可能將國(guó)標(biāo)碼看成兩個(gè)ASCII碼,因而規(guī)定用國(guó)標(biāo)碼在機(jī)內(nèi)表示漢字時(shí),將每個(gè)字節(jié)的最高位“置”1,以表示該碼表示的是漢字,這些國(guó)標(biāo)碼兩字節(jié)最高位加1后的代碼稱(chēng)為機(jī)器內(nèi)的漢字代碼,簡(jiǎn)稱(chēng)內(nèi)碼。字模:每個(gè)漢字在字庫(kù)中是以點(diǎn)陣字模形式存儲(chǔ)的。字模提取軟件(可在網(wǎng)上搜索一下,至少要知道一種), 而cerLcdzimo.rarS3C2440(或2410)下的編程,STNLCD部分不作要求,僅要求TFTLCD部分,要搞懂原理。編程要求:邏輯顏色和物理顏色的轉(zhuǎn)換:漢字和ASCII碼的顯示。第6章(10%)需要知道嵌入式系統(tǒng)的兩種軟件編程模式:裸機(jī)編程和基于操作系統(tǒng)的編程裸機(jī)編程:開(kāi)發(fā).工具ADS(作用、開(kāi)發(fā)的方式、語(yǔ)言),如何利用超級(jí)終端和DNW進(jìn)行程序下載ARMADS的全稱(chēng)為ARMDeveloperSuite,它是ARM公司推出的新一代ARM集成開(kāi)發(fā)環(huán)境。裸機(jī)程序編輯、編譯軟件。C、匯編。程序下載步驟:(1) 連接好開(kāi)發(fā)板電源,串口線,USB線,并設(shè)置開(kāi)發(fā)板為NORFlash啟動(dòng)系統(tǒng),分別打開(kāi)串口超級(jí)終端和DNW,上電啟動(dòng)開(kāi)發(fā)板。(2) 保證USB驅(qū)動(dòng)已經(jīng)安裝好(前面已經(jīng)詳細(xì)介紹了USB驅(qū)動(dòng)的安裝方法),這時(shí)可以看到DNW的標(biāo)題欄顯示[USB:OK],如果沒(méi)有安裝好驅(qū)動(dòng)會(huì)顯示[USB:x]3)點(diǎn)DNW菜單Configuration,設(shè)置USB下載運(yùn)行地址為0x30000000(4) 這時(shí)在超級(jí)終端的BIOS功能菜單中選.擇功能號(hào)[d],出現(xiàn)USB下載等待提示信息:(5) 點(diǎn)擊DNW程序的“USBPort”“Transmit”,如圖詵擇剛剛編譯出的映象文件(光盤(pán)“\images\2440test”目錄中有已經(jīng)編譯好的可執(zhí)行文件),這樣就開(kāi)始下載了超級(jí)終端也用于在基于操作系統(tǒng)的情形開(kāi)發(fā)的程序既可以下載到nandflash也可下載到內(nèi)存中運(yùn)行?;诓僮飨到y(tǒng)的編程:Bootloader是什么,它的作用。Bootloader:是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序。通過(guò)這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。通常,BootLoader是嚴(yán)重地依賴(lài)于硬件而實(shí)現(xiàn)的,特別是在嵌入式世界。因此,在嵌入式世界里建立一個(gè)通用的BootLoader幾乎是不可能的。在嵌入式系統(tǒng)中,通常沒(méi)有象Bios那樣的固件程序有的嵌入式CPU也會(huì)內(nèi)嵌一段短小的啟動(dòng)程序),因此整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)完全由lootLoader完成操作系統(tǒng)的內(nèi)核(在操作系統(tǒng)中的作用:提供硬件抽象層、磁盤(pán)及文件控制、多任務(wù)等功能計(jì)算機(jī)系統(tǒng)的必要組成部分??jī)?nèi)核不是計(jì)算機(jī)系統(tǒng)必要組成部分。Linux內(nèi)核的組成、在目標(biāo)板上linux操作系統(tǒng)的安裝過(guò)^^(bootloader、內(nèi)核、根文件系統(tǒng)X虛擬機(jī)上linux的安裝、linux的基本操作命令,網(wǎng)絡(luò)文件系統(tǒng)NFS嵌入式系統(tǒng)編程中的作用,利用NFS進(jìn)行程序下載的原理,如何在PC端編譯linux程序,并下載到目標(biāo)板運(yùn)行、在PC端linux運(yùn)行的程序怎樣編譯;基于嵌入式操作系統(tǒng)開(kāi)發(fā)的程序下載方式(u盤(pán)、網(wǎng)絡(luò)文件傳輸、NFS、串口傳輸)。第7章(25%)虛擬文件系統(tǒng)的作用Linux之所以能支持多種文件系統(tǒng),其實(shí)是由于提供了一個(gè)虛擬文件系統(tǒng)VFS,VFS作為實(shí)際文件系統(tǒng)的上層軟件,掩蓋了實(shí)際文件系統(tǒng)底層的具體結(jié)構(gòu)差異,為系統(tǒng)訪問(wèn)位于不同文件系統(tǒng)的文件提供了一個(gè)統(tǒng)一的接口設(shè)備:以文件的方式訪問(wèn)(設(shè)備文件)設(shè)備驅(qū)動(dòng)的作用(對(duì)設(shè)備初始化和釋放;把數(shù)據(jù)從內(nèi)核傳送到硬件和從硬件讀取數(shù)據(jù);讀取應(yīng)用程序發(fā)送給設(shè)備文件的數(shù)據(jù)和回送應(yīng)用程序請(qǐng)求的數(shù)據(jù);檢測(cè)和處理設(shè)備出現(xiàn)的錯(cuò)誤。)、linux操作系統(tǒng)下有哪幾類(lèi)設(shè)備類(lèi)型:(設(shè)備類(lèi)型:字符設(shè)備或者塊設(shè)備網(wǎng)絡(luò)設(shè)備)設(shè)備文件及其在文件系統(tǒng)中所屬目錄、硬盤(pán)、USB盤(pán)的設(shè)備文件命名、設(shè)備類(lèi)型,主設(shè)備號(hào)和次設(shè)備號(hào)(對(duì)設(shè)備文件的識(shí)別使用設(shè)備類(lèi)型,主設(shè)備號(hào)和次設(shè)備號(hào)。主設(shè)備號(hào):按照設(shè)備使用的驅(qū)動(dòng)程序不同而賦予設(shè)備不同的主設(shè)備號(hào)。主設(shè)備號(hào)與驅(qū)動(dòng)程序 對(duì)應(yīng)。次設(shè)備號(hào):用于區(qū)分使用同一驅(qū)動(dòng)程序的不同設(shè))。設(shè)備驅(qū)動(dòng)程序的file_operations結(jié)構(gòu)(file_operations結(jié)構(gòu)體中主要成員的含義如下:open()用來(lái)完成驅(qū)動(dòng)程序的設(shè)備初始化操作,并且還會(huì)增加設(shè)備計(jì)數(shù),以防止文件關(guān)閉前模塊被卸載出內(nèi)核。主要完成的操作有:檢查設(shè)備錯(cuò)誤(諸如設(shè)備未就緒或相似的硬件問(wèn)題);如果是首次打開(kāi),則初始化設(shè)備;標(biāo)識(shí)次設(shè)備號(hào);分配和填寫(xiě)要放在file-private_data內(nèi)的數(shù)據(jù)結(jié)構(gòu);增加使用計(jì)數(shù)。llseek(涵數(shù)用來(lái)修改一個(gè)文件的當(dāng)前讀寫(xiě)位置,并將新位置返回,在出錯(cuò)時(shí),這個(gè)函數(shù)返回一個(gè)負(fù)值read()函數(shù)用來(lái)從設(shè)備中讀取數(shù)據(jù),成功時(shí)函數(shù)返回讀取的字節(jié)數(shù),出錯(cuò)時(shí)返回一個(gè)負(fù)值write()函數(shù)向設(shè)備發(fā)送數(shù)據(jù),成功時(shí)該函數(shù)返回寫(xiě)入的字節(jié)數(shù)。如果此函數(shù)未被實(shí)現(xiàn),當(dāng)用戶(hù)進(jìn)行write調(diào)用時(shí),將得到-EINVAL返回值。ioctl()提供設(shè)備相關(guān)的控制命令的實(shí)現(xiàn)(既不是讀操作也不是寫(xiě)操作),當(dāng)調(diào)用成功時(shí),返回給調(diào)用程序的一個(gè)非負(fù)值。內(nèi)核本身識(shí)別部分的控制命令,而不必調(diào)用設(shè)備驅(qū)動(dòng)中的ioctl()。如果設(shè)備驅(qū)動(dòng)不提供ioctl()函數(shù),對(duì)于內(nèi)核不能識(shí)別的命令,用戶(hù)進(jìn)行ioctl()系統(tǒng)調(diào)用時(shí)將得到-EINVAL返回值)、Linux內(nèi)核模塊(為了把Linux內(nèi)核中需要的部分都包含在內(nèi)核中,而又不使其過(guò)于龐大。可采用模塊的方式,讓編譯出的內(nèi)核本身不需要包含所有功能,而在這些功能需要使用時(shí),其對(duì)應(yīng)代碼被動(dòng)態(tài)加載到內(nèi)核中。這種機(jī)制就稱(chēng)為模塊,具有如下特點(diǎn):1模塊本身不被編譯為內(nèi)核映像,從而控制了內(nèi)核的大小。2模塊一旦被加載,他就和內(nèi)核中其他部分一樣?!?、字符設(shè)備驅(qū)動(dòng)(7章ppt)、linux文件操作(Linux系統(tǒng)的一個(gè)重要思想是“一切都是文件”,例如對(duì)由于字符設(shè)備(比如鍵盤(pán)和鼠標(biāo))和塊設(shè)備(硬盤(pán),USB存貯器)等設(shè)備的訪問(wèn)都是通過(guò)文件操作的方式進(jìn)行的。?設(shè)備驅(qū)動(dòng)在操作系統(tǒng)的文件系統(tǒng)調(diào)用或C庫(kù)函數(shù)調(diào)用時(shí)(本質(zhì)也是基于系統(tǒng)調(diào)用)被訪問(wèn)。?系統(tǒng)調(diào)用是指應(yīng)用程序空間對(duì)內(nèi)核空間訪問(wèn))、字符設(shè)備編程的主要內(nèi)容和步驟,cdev結(jié)構(gòu)體在linux2.6內(nèi)核中使用cdev結(jié)構(gòu)體描述字符設(shè)備,cdev結(jié)構(gòu)體的定義為structcdev{structkobjectkobj;//內(nèi)嵌的kobject對(duì)象structmodule*owner;//所屬模塊structfile_operations*ops;〃文件操作結(jié)構(gòu)體structlist_headlistdev_tdev;unsignedintcount;};操作系統(tǒng)程序分析:LED的控制(7章ppt30頁(yè))■驅(qū)動(dòng)程序代碼#include<linux/miscdevice.h>#include<linux/delay.h>…#defineDEVICE_NAME"leds“staticunsignedlongled_table[]={S3C2410_GPB5,S3C2410_GPB6,S3C2410_GPB7,S3C2410_GPB8,■}staticunsignedintled_cfg_table[]={S3C2410_GPB5_OUTP,S3C2410_GPB6_OUTP,S3C2410_GPB7_OUTP,S3C2410_GPB8_OUTP,};staticintsbc2440_leds_ioctl(structinode*inode,structfile*file,unsignedintcmd,unsignedlongarg){switch(cmd){case0:case1:if(arg>4){return-EINVAL;■}s3c2410_gpio_setpin(led_table[arg],!cmd);return0;default:return-EINVAL;■}■}staticstructfile_operationsdev_fops={.owner=THIS_MODULE,.ioctl=s3c2440_leds_ioctl,};staticstructmiscdevicemisc={.minor
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年環(huán)境管理體系3篇
- 2024年果園景觀使用權(quán)合同
- 湄洲灣職業(yè)技術(shù)學(xué)院《數(shù)學(xué)建模1》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年度民辦學(xué)校校長(zhǎng)任期綜合評(píng)價(jià)合同3篇
- 2024年度醫(yī)院醫(yī)療質(zhì)量管理員聘用協(xié)議3篇
- 2024年度水車(chē)租賃及環(huán)保技術(shù)應(yīng)用合同范本3篇
- 2024年權(quán)益讓渡協(xié)議全書(shū)
- 2025三方房屋租賃合同
- 2025年貨運(yùn)從業(yè)資格證在那里考
- 2024年度高速公路服務(wù)區(qū)充電停車(chē)位租賃合同模板3篇
- 小兒全麻患者術(shù)后護(hù)理
- 黑龍江省哈爾濱市2023-2024學(xué)年八年級(jí)上學(xué)期語(yǔ)文期末模擬考試試卷(含答案)
- 理論力學(xué)(浙江大學(xué))知到智慧樹(shù)章節(jié)答案
- 云南省普通高中2023-2024學(xué)年高一上學(xué)期1月期末學(xué)業(yè)水平考試技術(shù)試卷
- 2024年百科知識(shí)競(jìng)賽題庫(kù)及答案(共三套)
- JGJ-T490-2021鋼框架內(nèi)填墻板結(jié)構(gòu)技術(shù)標(biāo)準(zhǔn)
- 2024年移動(dòng)解決方案經(jīng)理認(rèn)證考試題庫(kù)大全-中(多選題)
- 破碎錘項(xiàng)目營(yíng)銷(xiāo)計(jì)劃書(shū)
- 愚公移山英文 -中國(guó)故事英文版課件
- 國(guó)開(kāi)經(jīng)濟(jì)學(xué)(本)1-14章練習(xí)試題及答案
- 三相橋式有源逆變電路的仿真Word版
評(píng)論
0/150
提交評(píng)論