嵌入式-帶答案_第1頁
嵌入式-帶答案_第2頁
嵌入式-帶答案_第3頁
嵌入式-帶答案_第4頁
嵌入式-帶答案_第5頁
已閱讀5頁,還剩9頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

嵌入式操作系統考試要求的內容前3章(25%)1)嵌入式系統的特點:開發方式、內核大小、專用性、編譯方式;2)從開發環境與運行環境來看,嵌入式系統與一般PC的特點。什么是交叉編譯在一個平臺上生成另一個平臺上的可執行代碼。操作系統的兩大功能和四項基本任務使計算機硬件便于使用;高效組織和正確地使用計算機的資源。進程管理、進程間通信與同步、內存管理和I/O資源管理。ARM是什么?是一種嵌入式芯片的型號嗎?是AdvanceRISCMachine(ARM)公司提出的一種嵌入式芯片的內核,ARM公司不生產芯片而只是轉讓知識產權另外也提供基于ARM架構的開發設計技術:軟件工具,評估板,調試工具,應用軟件,總線架構,外圍設備單元,等等嵌入式處理器的分類嵌入式處理器可分為低端的嵌入式微控制器(MicroControllerUnit,MCU)、常用于計算機通信領域的嵌入式DSP處理器(EmbeddedDigitalSignalProcessor,EDSP)、中高端的嵌入式微處理器(EmbeddedMicroProcessorUnit,EMPU)和高度集成的嵌入式片上系統(SystemOnChip,SOC)。談一談嵌入式實時系統從實時性的分類。硬實時和軟實時的區別就在于對外界的事件做出反應的時間。硬實時系統:必須對事件做出及時的反應,絕對不能錯過事件處理的時限。在硬實時系統中如果出現了這樣的情況就意味著巨大的損失和災難。比如說航天飛機的控制系統,如果出現故障,后果不堪想象。軟實時系統:在系統負荷較重的時候,允許發生錯過時限的情況而且不會造成太大的危害。比如液晶屏刷新允許有短暫的延遲。目前比較流行的嵌入式操作系統有些(需例舉3種)VxWorks,QNX,PalmOS,WindowsCE,LynxOS,嵌入式Linux,uC/OS'CISC和RISCCISC:ComplexInstructionSetComputer);RISC:reducedinstructionsetcomputer從代碼密度、尋址方式的多少、指令長度、指令數量、專用性、平均執行周期(CPI)、是否采用Load/Store結構,算術和邏輯操作僅針對寄存器?Load/Store結構流水線技術通過指令的并行運行提高運行速度,ARM7三級流水(fetch,decode,execute),ARM9五級流水(memory,write)ARM處理器的各種基本工作模式用戶模式、快速中斷模式、外部中斷模式、管理模式、中止模式、未定義指令中止模式和系統模式。12?馮?諾依曼體系結構和哈佛體系結構前者操作數和指令分時共用同一組總線,后者操作數和指令所采用的總線不同因而取指和取操作數可以同時進行,從而提高了運行速度13,高速緩存高速緩存是一種小型、快速的存儲器,它保存部分主存內容的拷貝。14.14.FLASH(閃存):是EEPROM的變種,EEPROM與閃存不同的是,它能在字節水平上進行刪除和重寫而不是整個芯片擦寫,這樣閃存就比EEPROM的更新諫度快。中于其斷電時仍能保存數據,閃存通常被用來保存設置信息,如在電腦的BIOS(基本輸入輸出程序)、PDA(個人數字助理)、數碼相機中保存資料等。NandFlash與NorFlash相比較:編程、擦除、讀的速度以及可靠性15.Nandflash/NorFlash 寫快/慢、簡單/擦除前需要寫0、讀稍慢/稍快、不可靠/可15.靠16.從編程的角度看,ARM微處理器的工作狀態有哪些?16.2種且可在2種狀態之間切換:第一種為ARM狀態,此時處理器執行32位的字對齊的ARM指令;第二種為Thumb狀態,此時處理器執行16位的、半字對齊的Thumb指令。17.ARM體系結構兩種存儲字數據方法一一大端格式和小段格式17.大端:字數據的高字節存儲在低地址中,而字數據的低字節則存放在高地址中。小端:與大端存儲格式相反,在小端存儲格式中,低地址中存放的是字數據的低字節,高地址存放的是字數據的高字節。18.ARM寄存器組織、分類,Thum狀態和ARM狀態下寄存器組織上的異同通用寄存器包括R0?R15,可以分為三類:不分組寄存器R0?R7;分組寄存器R8?R14;程序計數器PC(R15)。Thumb狀態下的寄存器集是ARM狀態下寄存器集的一個子集Thumb狀態下和ARM狀態下的R0?R7是相同的。Thumb狀態下和ARM狀態下的CPSR和所有的SPSR是相同的。Thumb狀態下的SP映射到ARM狀態下的R13。Thumb狀態下的LR映射到ARM狀態下的R14。Thumb狀態下的程序計數器PC(R15)映射到ARM狀態下的PC(R15)。19,什么是異常向量異常是由內部或外部源產生并引起處理器處理一個事件,它會導致正常的程序執行流程發生暫時的停止,例如外部中斷或試圖執行未定義指令都會引起異常。異常出現后強制從異常類型對應的固定存貯地址開始執行程序,這些固定的地址稱為異常向量。第4章

這一部分不作要求第5章(40%)如何從鍵盤向main函數傳入參數用scanf函數main(){inta[10];inti;for(i=0;i<10;i++)scanf("%d",&a[i]);printfCWfor(i=0;i<10;i++)printf("%d”,a[i]);}帶參數main函數#include<stdio.h>main(argc,argv)intargc;char*argv[];{while(argc>1){++argv;printf("%s\nn,*argv);--argc;}}增強程序可讀性的寄存器定義格式#define寄存器名(*(volatileunsigned*)寄存器在存儲空間中的位置)例如#define rUCON0(*(volatileunsigned*) 0x50000004)關=!==A=_1110000000000000=0x0eh<12B=0000001100000000=0x03h<8C=0000000010010000=0x09h<4D=0000000000000110=0x06h<05.采用位掩碼對寄存器的某個功能區位進行設置fun3的位掩碼:FUN3_MASK=0xf<4C’=0x0B<4R&=~FUN3_MASKRI=C’6,如何對I/O口的功能進行配置并進行相關操作,讓輸出端口電平變化(配置為輸出,然后向端口數據寄存器位寫入相應電平),要求能進行編程通過對G口8、9腳的操作實現LED輪流閃爍#definerGPGCON(*(volatileunsigned*)0x56000060)//PORTG控制寄存器#definerGPGDAT(*(volatileunsigned*)0x56000064)//PORTG數據寄存器voidmain(void)(Intflag,I;Target_Init()for(;;){If(flag==0){for(i=0;i<1000000;i++);//延時rGPGCON=rGPGCON&0xfff0ffff|0x00050000〃配置8、9腳為輸出rGPGDAT=rGPGDAT&0xeff|0x200;//8腳低電平,9腳高電平for(i=0;i<1000000;i++);//延時Flag=1;}Else{for(i=0;i<1000000;i++);//延時rGPGCON=rGPGCON&0xfff0ffff|0x00050000//配置8、9腳為輸出rGPGDAT=rGPGDAT&0xdff|0x100;//8腳高電平,9腳低電平for(i=0;i<1000000;i++);//延時

Flag=0;}_CPU與外設傳輸數據的方式有哪幾類查詢方式、中斷方式、DMA。DMA不占用cpu,但占用系統總線。中斷部分應掌握如下內容:1)中斷過程、與中斷相關的寄存器的作用、中斷掛起寄存器和中斷源掛起寄存器的區別、與中斷屏蔽有關的寄存器(中斷屏蔽寄存器、子中斷屏蔽寄存器以及CPSR)中斷過程保存現場:PC—LR,CPSR—SPSR根據設置的中斷模式選擇IRQ或FIQ從中斷向量處獲取中斷服務程序的地址根據優先級和中斷標志識別是哪一個中斷發生,并進行相應處理中斷返回,恢復現場:PC—LR,CPSRfSPSR中斷屏蔽寄存器:為了能接受中斷請求必須將F或I位設置為0,同時將中斷屏蔽寄存器的相應位設置為0。中斷掛起寄存器:共32位,每一位與一中斷源相對應,只有一位能為1,指示相應中斷掛起。各掛起的中斷源由各中斷仲裁器確定那個中斷掛起。(中斷掛起的含義是:相應的中斷是下一個待處理的中斷在中斷服務程序中需要將相應中斷清除)中斷源掛起寄存器:共32位,當某一個中斷源產生中斷請求,相應位置1,在中斷服務程序中必須清除中斷模式寄存器:共32位,每一位與一中斷源相對應,設置相應的中斷源為快速中斷還是普通中斷。中斷優先權寄存器:ARM將中斷分為6組,每一組設一個優先權仲裁器,在中斷優先權寄存器中,每一組有一個ARB_MODE位設置是否使能改組各中斷源的優先級滾動變化,另有兩位ARB_SEL以設置改組各中斷源的優先級。中斷偏移寄存器:指示普通中斷中是哪一個中斷掛起,當中斷掛起寄存器或中斷源掛起寄存器中的某位清除時,這個寄存器被清除。子中斷源掛起寄存器:指示子中斷源是否有請求。向這個寄存器中的某位寫數據,則可清除這一位。CPSR:程序狀態寄存器(currentprogramstatusregister)cpsr在用戶級編程時用于存儲條件碼;CPSR包含條件碼標志,中斷禁止位,當前處理器模式以及其他狀態和控制信息。PWM編程:改變頻率和脈沖寬度以及定時器觀測值的讀取改變頻率:定時器減法緩沖寄存器(TCNTBn);改變脈沖寬度:比較緩沖寄存器(TCMPBn);10.串口定時器觀測值:定時器觀測寄存器(TCNTOn)10.串口幀錯誤、奇偶校驗錯誤,溢出錯誤,前兩種錯誤的校驗原理,數據的發送和接收、回環模式、自動流控制,串口數據傳輸的編程,從某一個內存單元取數,然后發往串口(包括DMA方式)使用DMA方式實現從存貯器發送數據到串口0

#include<string.h>#include“?.\INC\config?h”#defineSENDDATA(*(volatileunsignedchar*)0x30200000)//待發送的地址#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; 〃上三條語句提供源數據rUCON0=rCON0&0xff3I0x8;//Uart0設置為DMA的方式//下面的語句對DMA0初始化rDISRC0=(U32)(SENDADDR);rDISCC0=(0?1)I(0<0);/^=AHB?傳送后地址增加rDIDST0=(U32)UTXH0;〃發送FIFO緩沖區地址rDIDSTC0=(1vv1)I(1v0)//目標=APB.傳送后地址不變rDCON0=(0vv31)I(0v<30)I(1vv29)I(0vv28)(0?27)I(1vv23)I(1vv22)I(0?20)I 50);〃設置DMA控制器:握手模式,與APB同步,使能中斷,單位傳輸,單個模式,目標=UART0硬件請求模式,不自動加載,半字,計數初值=50rMASKTRIG0=(1<<1); //打開DMA誦道0whiled)}11.(A)DMA:概念、原理、數據傳輸過程,S3C2410的DMA控制寄存器的單個服務模式和整體服務模式,這一部分單獨編程不作要求。概念:DirectMemoryAcess,是指存貯器和外設在DMA控制器的控制下直接傳輸數據而不誦過CPU,在DMA數據傳輸前需要從CPU獲得總線的控制權DMA數據傳輸過程外設向DMA控制器發出DMA請求DMA控制器向CPU發出總線請求CPU執行完現行的總線周期后向DMA控制器發出應答信號CPU將總線控制權讓給DMA控制器DMA控制器向外部設備發出DMA請求應答信號進行DMA數據傳輸數據傳輸完畢DMA向CPU發出中斷請求,CPU在接收到中斷后進行相應處理CPU從中斷返回并從DMA控制器收回總線控制權在單個服務模式下,主FSM的3種狀態執行完后就停止,并等待下一個DMA請求,并等待下一個DMA請求。如果產生了新的DMA請求,則所有三個狀態將被重復。因此,對于每一個原子傳送操作,DMAACK先后置1和清零。相反,在整體服務模式下,主FSM一直在狀態3等待直到CURR_TC變為0,因此DMAACK在整個傳送過程中置1,僅當CURR_TC變為0才清零。AD轉換器:作用、類型、編程作用:模擬信號與CPU之間的聯系和接口類型:雙積分A/D轉換器:對模擬信號V.積分一個固定時間T;然后用參考電源Vf反相積分Ti直到積分電容放電到0:Vi=Vf-Ti/T逐次逼近A/D轉換器:由逐次逼近寄存器SAR,D/A轉換器、比較器以及時序和邏輯控制等部分組成。比較時先從SAR的最高位開始,逐次確定各位的數碼為1還是0.觸摸屏的工作原理與編程兩個金屬涂層分別為X、Y方向的電極;當給X方向的電極施加一確定的電壓,而在Y方向電極對不施加電壓時,觸點處的電壓值可在Y+或Y-上測量出來。從而確定出X坐標。Y坐標的確定同理LCD:LCD的顯示原理:顯示的最小單位-像素、顯示緩沖區中填寫的是什么信息-每點的顏色信息漢字的顯示原理:嵌入式控制系統中最常用的漢字是16x16點陣,它是由行列各16個點,共256個點組成的點陣圖案,每行的16個點在內存中占兩個字節,一個16x16點陣漢字共16行,在內存中占32個字節。根據這些字節在內存中存放的順序,第一行的第一個字節稱“0”號字節,第一行第二個字節稱“1”號字節;第二行的第一個字節稱“2”號字節,第二個字節稱“3”號字節。以此類推,最后一行的第一個字節稱“30”號字節,第二個字節稱“31”號字節,每個字節高位在前,低位在后,即D7在一個字節的最左側,D0在最右側。漢字的區位碼和內碼、字模:區位碼:漢字庫結構作了統一規定,即將字庫分成94個區,每個區有94個漢字(以位做區別),每一個漢字在漢字庫中有確定的區和位編號(用兩個字節),就是所謂的區位碼(區位碼的第一個字節表示區號,第2個字節表示位號),因而只要知道了區位碼,就可知道該漢字在字庫中的地址。內碼:組成兩字節代碼的最高位為0,即每個字節僅只使用7位,這樣在機器內使用時,由于英文的ASCII碼也在使用,可能將國標碼看成兩個ASCII碼,因而規定用國標碼在機內表示漢字時,將每個字節的最高位“置”1,以表示該碼表示的是漢字,這些國標碼兩字節最高位加1后的代碼稱為機器內的漢字代碼,簡稱內碼。字模:每個漢字在字庫中是以點陣字模形式存儲的。字模提取軟件(可在網上搜索一下,至少要知道一種), 而cerLcdzimo.rarS3C2440(或2410)下的編程,STNLCD部分不作要求,僅要求TFTLCD部分,要搞懂原理。編程要求:邏輯顏色和物理顏色的轉換:漢字和ASCII碼的顯示。第6章(10%)需要知道嵌入式系統的兩種軟件編程模式:裸機編程和基于操作系統的編程裸機編程:開發.工具ADS(作用、開發的方式、語言),如何利用超級終端和DNW進行程序下載ARMADS的全稱為ARMDeveloperSuite,它是ARM公司推出的新一代ARM集成開發環境。裸機程序編輯、編譯軟件。C、匯編。程序下載步驟:(1) 連接好開發板電源,串口線,USB線,并設置開發板為NORFlash啟動系統,分別打開串口超級終端和DNW,上電啟動開發板。(2) 保證USB驅動已經安裝好(前面已經詳細介紹了USB驅動的安裝方法),這時可以看到DNW的標題欄顯示[USB:OK],如果沒有安裝好驅動會顯示[USB:x]3)點DNW菜單Configuration,設置USB下載運行地址為0x30000000(4) 這時在超級終端的BIOS功能菜單中選.擇功能號[d],出現USB下載等待提示信息:(5) 點擊DNW程序的“USBPort”“Transmit”,如圖詵擇剛剛編譯出的映象文件(光盤“\images\2440test”目錄中有已經編譯好的可執行文件),這樣就開始下載了超級終端也用于在基于操作系統的情形開發的程序既可以下載到nandflash也可下載到內存中運行。基于操作系統的編程:Bootloader是什么,它的作用。Bootloader:是在操作系統內核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,以便為最終調用操作系統內核準備好正確的環境。通常,BootLoader是嚴重地依賴于硬件而實現的,特別是在嵌入式世界。因此,在嵌入式世界里建立一個通用的BootLoader幾乎是不可能的。在嵌入式系統中,通常沒有象Bios那樣的固件程序有的嵌入式CPU也會內嵌一段短小的啟動程序),因此整個系統的加載啟動任務完全由lootLoader完成操作系統的內核(在操作系統中的作用:提供硬件抽象層、磁盤及文件控制、多任務等功能計算機系統的必要組成部分?內核不是計算機系統必要組成部分。Linux內核的組成、在目標板上linux操作系統的安裝過^^(bootloader、內核、根文件系統X虛擬機上linux的安裝、linux的基本操作命令,網絡文件系統NFS嵌入式系統編程中的作用,利用NFS進行程序下載的原理,如何在PC端編譯linux程序,并下載到目標板運行、在PC端linux運行的程序怎樣編譯;基于嵌入式操作系統開發的程序下載方式(u盤、網絡文件傳輸、NFS、串口傳輸)。第7章(25%)虛擬文件系統的作用Linux之所以能支持多種文件系統,其實是由于提供了一個虛擬文件系統VFS,VFS作為實際文件系統的上層軟件,掩蓋了實際文件系統底層的具體結構差異,為系統訪問位于不同文件系統的文件提供了一個統一的接口設備:以文件的方式訪問(設備文件)設備驅動的作用(對設備初始化和釋放;把數據從內核傳送到硬件和從硬件讀取數據;讀取應用程序發送給設備文件的數據和回送應用程序請求的數據;檢測和處理設備出現的錯誤。)、linux操作系統下有哪幾類設備類型:(設備類型:字符設備或者塊設備網絡設備)設備文件及其在文件系統中所屬目錄、硬盤、USB盤的設備文件命名、設備類型,主設備號和次設備號(對設備文件的識別使用設備類型,主設備號和次設備號。主設備號:按照設備使用的驅動程序不同而賦予設備不同的主設備號。主設備號與驅動程序 對應。次設備號:用于區分使用同一驅動程序的不同設)。設備驅動程序的file_operations結構(file_operations結構體中主要成員的含義如下:open()用來完成驅動程序的設備初始化操作,并且還會增加設備計數,以防止文件關閉前模塊被卸載出內核。主要完成的操作有:檢查設備錯誤(諸如設備未就緒或相似的硬件問題);如果是首次打開,則初始化設備;標識次設備號;分配和填寫要放在file-private_data內的數據結構;增加使用計數。llseek(涵數用來修改一個文件的當前讀寫位置,并將新位置返回,在出錯時,這個函數返回一個負值read()函數用來從設備中讀取數據,成功時函數返回讀取的字節數,出錯時返回一個負值write()函數向設備發送數據,成功時該函數返回寫入的字節數。如果此函數未被實現,當用戶進行write調用時,將得到-EINVAL返回值。ioctl()提供設備相關的控制命令的實現(既不是讀操作也不是寫操作),當調用成功時,返回給調用程序的一個非負值。內核本身識別部分的控制命令,而不必調用設備驅動中的ioctl()。如果設備驅動不提供ioctl()函數,對于內核不能識別的命令,用戶進行ioctl()系統調用時將得到-EINVAL返回值)、Linux內核模塊(為了把Linux內核中需要的部分都包含在內核中,而又不使其過于龐大。可采用模塊的方式,讓編譯出的內核本身不需要包含所有功能,而在這些功能需要使用時,其對應代碼被動態加載到內核中。這種機制就稱為模塊,具有如下特點:1模塊本身不被編譯為內核映像,從而控制了內核的大小。2模塊一旦被加載,他就和內核中其他部分一樣。—、字符設備驅動(7章ppt)、linux文件操作(Linux系統的一個重要思想是“一切都是文件”,例如對由于字符設備(比如鍵盤和鼠標)和塊設備(硬盤,USB存貯器)等設備的訪問都是通過文件操作的方式進行的。?設備驅動在操作系統的文件系統調用或C庫函數調用時(本質也是基于系統調用)被訪問。?系統調用是指應用程序空間對內核空間訪問)、字符設備編程的主要內容和步驟,cdev結構體在linux2.6內核中使用cdev結構體描述字符設備,cdev結構體的定義為structcdev{structkobjectkobj;//內嵌的kobject對象structmodule*owner;//所屬模塊structfile_operations*ops;〃文件操作結構體structlist_headlistdev_tdev;unsignedintcount;};操作系統程序分析:LED的控制(7章ppt30頁)■驅動程序代碼#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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論