第一篇:嵌入式考試筆試
基于雙核處理器的視頻觀瞄設備,同時實現標清分辨率的紅外和可見光兩路模擬復合信號采集和處理,且由兩個內核中的CoreA完成紅外通道視頻信號處理,CoreB完成可見光通道視頻處理,系統(tǒng)需要按照嵌入式系統(tǒng)模式實現“通道關聯(lián)”實時紅外信號檢測與目標型號判別。
要求:
1.畫出實現此功能的硬件流程圖和軟件流程圖
2.程序會用到數據結構和數據傳輸流程
3.在多任務情況下,進程和線程的區(qū)別與聯(lián)系。以及如何保持同步
4.影響實時性的主要參數,以及如何改善。
解:
12數據結構會用到乒乓雙緩沖
3進程是具有一定獨立功能的程序關于某個數據集合上的一次運行活動,進程是系統(tǒng)進行資源分配和調度的一個獨立單位。
線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位.線程自己基本上不擁有系統(tǒng)資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源.聯(lián)系:線程是一個更加接近于執(zhí)行體的概念,它可以與同進程中的其他線程共享數據,但擁有自己的??臻g,擁有獨立的執(zhí)行序列。
區(qū)別:進程和線程的主要差別在于它們是不同的操作系統(tǒng)資源管理方式。進程有獨立的地址空間,一個進程崩潰后,在保護模式下不會對其它進程產生影響,而線程只是一個進程中的不同執(zhí)行路徑。線程有自己的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個線程死掉就等于整個進程死掉,所以多進程的程序要比多線程的程序健壯,但在進程切換時,耗費資源較大,效率要差一些。
多任務下的同步:在多任務操作系統(tǒng)下,要保持線程和進程的同步利用:1臨界區(qū)2互斥鎖3信號量4事件機制
4.所謂的實時性,也就是從系統(tǒng)發(fā)生到系統(tǒng)響應的時間?;蛘撸鼜V泛一點,也就是從用戶輸入一個信息到系統(tǒng)處理完以后,返回給用戶的這個反應時間。影響實時性一般有一下幾個方面:
1>中斷響應時間
2>RTOS進程調度響應時間
3>任務切換時間
4>應用程序響應時間
改善:
中斷的響應時間是有處理器決定的,可以有系統(tǒng)設置來改善?;蛘邔ふ腋玫奶幚砥?。
對于進程調度本身,有很多經典的算法,可參考操作系統(tǒng)的理論部分,有些算法的實時性稍高,但整體性就稍差,有些則相反,可以選擇高效的進程調度策略,來提高進程響應速度。另外,盡量減少系統(tǒng)的進程數,進程越少,處理器的負擔越小,響應就越快。進程中屏蔽中斷的地方就越少,則整體響應時間就越快。
采用搶占式內核處理形式
提高應用程序的執(zhí)行效率
第二篇:嵌入式linux工程師筆試題目
北京航天泰睿科技有限公司
嵌入式linux筆試題目
一、簡答題:
1. 請寫出實現后面幾個功能的Linux命令:顯示文件,拷貝,刪除
Ls cp rm 2. do??while和while??do有什么區(qū)別?
Do?while是先執(zhí)行一次循環(huán)體內的代碼然后在判斷,而while?.do則是先判斷一下條件,然后在執(zhí)行。Do??.while如果是不滿足條件也會執(zhí)行,一定會執(zhí)行一次。
3. Linux系統(tǒng)下.ko文件是什么文件?.so文件是什么文件?
Linux系統(tǒng)下.ko是模塊文件,比如驅動之類的。.so是動態(tài)鏈接庫文件 4. 如何使用vi進行塊拷貝、粘貼、刪除的操作
5. 在Linux系統(tǒng)中,用來存放系統(tǒng)所需要的配置文件和子目錄的目錄是。
/etc 這個目錄用來存放系統(tǒng)管理所需要的配置文件和子目錄
6. 如何使用gcc得到宏展開的中間代碼
gcc –E –P xxfile 7. 如何使用gdb調試多進程
先ps出進程id,再gdb-a attach上去,b設一個斷點,c繼續(xù)運行就可以了
8. 用戶進程間通信主要哪幾種方式
管道,信號量,消息隊列,有名管道 9. 解釋命令ls-amore具體含義。
-a 輸出目錄下的所有文件,包括隱藏文件-m 橫向輸出文件名,并以’,’隔開-o 顯示文件除組外的詳細信息-r 對目錄反向排序
-e 輸出時間的全部信息,而不是簡要信息
10. LINUX中的管道指什么,重定向又指什么
管道是一種兩個進程間進行單向通信的機制。因為管道傳遞數據的單向性,管道又稱為半雙工管道。數據只能由一個進程流向另一個進程(其中一個讀管道,一個寫管道);如果要進行雙工通信,需要建 立兩個管道。管道只能用于父子進程或者兄弟進程間通信。,也就是說管道只能用于具有親緣關系的進程間通信。
11. 請寫出下列代碼的輸出內容 #include “stdio.h” main(){ int a,b,c,d;a=10;
第1頁/共3頁
北京航天泰睿科技有限公司
b=a++;c=++a;d=10*a++;printf(“b,c,d:%d,%d,%d”,b,c,d);return 0;
12. 編寫一個函數intcharnum(charfn[10]),該函數以只讀方式打開文件fn,,通過統(tǒng)計,返回文件中字符的個數,請使用while循環(huán)實現計數功能。請勿修改主函數main和其他函數中的任何內容,僅在函數charnum的花括號中填寫若干語句。
文件kt7_2.cpp的內容如下:
#include
#include
#include
intcharnum(charfn[10]);
voidmain(){ intnum;
num=charnum(“abc.txt”);} cout<<“num=”<
intcharnum(charfn[10]){
}
二、編程題
13. 如果有一個簡單的Test項目目錄如下:
# tree Test Test |--common.h |--main.cpp |--test.cpp `--test.h
1)使用wildcard、patsubst函數編寫一個C++項目的Makefile文件 2)使用automake、autoconfig編寫一個支持configure選項的configure.in腳本
14. 編寫一個hello world程序,要求以創(chuàng)建進程的方式打印Hello World!
15. 打開一個文件,并讀取從第100字節(jié)開始的50字節(jié)數據。
第2頁/共3頁
北京航天泰??萍加邢薰?/p>
16. 編寫一對socket程序,要求類似于network echo procotol。
Client每隔1秒把自己的IP地址輪流循環(huán)發(fā)送給一個Server.Server接到IP后,在屏幕上打印對方IP;然后把自己的IP發(fā)送回去。Client收到回復后,在屏幕上打印對方IP。
程序一直運行,直到用戶退出。各自分類統(tǒng)計接收到的各IP的數據包的個數。
注意:Client可以向多個Server發(fā)送請求,Server也可以接收多個Client請求。
17.請描述Linux下程序開發(fā)到執(zhí)行的工作流程(結合自己的項目經歷)。
18.結合自己的學習或工作感受簡述Linux與Windows編程的區(qū)別,嵌入式Linux與Windows的嵌入式OS(如XPE、WinCE)的區(qū)別。
第3頁/共3頁
第三篇:嵌入式考試總結
嵌入式系統(tǒng)定義:以應用為中心、以計算機技術為基礎、軟件硬件可裁剪、適應應用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統(tǒng)。
嵌入式系統(tǒng)應用:工業(yè)控制火控系統(tǒng)、飛行控制系統(tǒng)、測試儀器、醫(yī)療設備、游戲機 應用發(fā)展階段:無操作系統(tǒng)的嵌入算法階段、簡單監(jiān)控式的實時操作系統(tǒng)階段、通用的嵌入式網絡實時操作系統(tǒng)階段
嵌入式系統(tǒng)已經有了近30年的發(fā)展歷史,它是硬件和軟件交替發(fā)展的雙螺旋式發(fā)展
嵌入式系統(tǒng)特點:1 面向特定應用、2 可裁減、3.處理器體系結構和類型多樣化。4.大多都有實時操作系統(tǒng)。5 一般有實時性要求。6資源比較少。7 軟件固化在存儲器芯片中。8 通常要求功耗小。9 集成度高。10嵌入式系統(tǒng)本身不具備自舉開發(fā)能力 嵌入式系統(tǒng)的組成:硬件平臺、板級支持包(BSP)、操作系統(tǒng)、應用程序 嵌入式系統(tǒng)硬件平臺:嵌入式處理器、存儲器件、外設接口
嵌入式CPU的特點:1 對實時多任務操作系統(tǒng)具有很強的支持能力。2具有功能很強的存儲區(qū)保護功能。3 處理器結構可擴展。4 低功耗。嵌入式CPU的分類:嵌入式微控制器(EMCU)、嵌入式微處理器(EMPU)、嵌入式DSP處理器(EDSP)、嵌入式片上系統(tǒng)(ESoC)
MCU(MicroController Unit)MCU芯片內集成了ROM/EEPOM、RAM、總線、總線邏輯、I/O等必要功能和外設。已有20多年的歷史。如51,98/96。
與MPU比,單片化、體積小,功耗、成本低,可靠性高,能節(jié)省系統(tǒng)開支、降低出錯概率和減少高頻干擾適合控制系統(tǒng)。
發(fā)展:內核化(內核 +IP、內核 +FPGA、內核+外圍模塊)、專用化(接口單片機、網絡單片機、射頻單片機、數采單片機、電力線載波…)
DSP(Digital Signal Processor)專用于信號處理,采用哈佛體系結構,指令系統(tǒng)特殊,具有較高的編譯效率和指令執(zhí)行速度。如數字濾波、快速傅立葉變換和離散余弦變換等DSP算法。
MPU(MicroProcessor Unit)由CPU演變而來,32位以上。與通用CPU比,MPU只保留與應用相關的功能和硬件,除去冗余的功能部分,實現最少的功耗和資源,滿足嵌入式需求。與工業(yè)控制計算機比,MPU體積小,重量輕,成本低,可靠性高。常見的嵌入式處理器核:ARM、MIPS、PowerPC、68K、x86 SoC(System on Chip)是嵌入式系統(tǒng)多種形式的統(tǒng)一歸宿SOC最大的特點,成功實現軟硬件無縫結合,直接在處理器芯片內嵌入操作系統(tǒng)的代碼模塊。SOC具有極高的綜合性。由于絕大部分系統(tǒng)構件都是在系統(tǒng)內部,整個系統(tǒng)特別簡潔,不僅減少了功耗和體積,并且提高了可靠性,和設計效率。降低內部工作電壓,減少芯片功耗;減少芯片引腳數目,簡化制造過程;簡化外圍驅動單元,優(yōu)化處理速度; 優(yōu)化內部電路結構,降低系統(tǒng)噪聲
馮.諾伊曼結構,也稱普林斯頓結構、程序指令存儲器和數據存儲器合并在一起的存儲器結構。程序指令存儲地址和數據存儲地址指向同一個存儲器的不同物理位置,因此程序指令和數據的寬度相同,如英特爾公司的8086中央處理器的程序指令和數據都是16位寬。
哈佛結構:程序指令存儲和數據存儲分開的存儲器結構。程序指令存儲和數據存儲分開,可以使指令和數據有不同的數據寬度,如Microchip公司的PIC16芯片的程序指令是14位寬度,而數據是8位寬度。中央處理器首先到程序指令存儲器中讀取程序指令內容,解碼后得到數據地址,再到相應的數據存儲器中讀取數據,并進行下一步的操作(通常是執(zhí)行)。CISC:復雜指令集 特點是指令數量龐大臃腫,具有大量的指令和尋址方式每個指令不管執(zhí)行頻度高低都處于同一個優(yōu)先級,程序員的編程工作相對容易。但它的致命弊端是執(zhí)行效率低下,處理器的晶體管被大量低效的指令所占據,資源利用率頗為低下。
RISC:精簡指令集 8/2原則:80%的程序只使用20%的指令大多數程序只使用少量的指令就能夠運行。在通道中只包含最有用的指令 確保數據通道快速執(zhí)行每一條指令使CPU硬件結構設計變得更為簡單嵌入式處理器采用RISC 指令流水:執(zhí)行指令的過程:(1)取指令(Fetch)(2)譯碼(Decode)(3)取操作數(Fetch Operant)(4)執(zhí)行指令(Execute)(5)寫回(Write Back)采用指令流水線技術,提高處理器的執(zhí)行效率
嵌入式處理器的技術指標 :1.功能:集成的存儲器、外設、接口等的種類和數量;2.字長:字長指數據總線位數;3.處理速度:4.尋址能力:尋址能力取決于地址總線的寬度;5.功耗:工作功耗、待機功耗等,功耗與頻率,功耗與電壓;6.溫度:民用、工業(yè)用、軍用、航天等級別。民用范圍為0℃~70℃
嵌入式處理器的選擇:
1、技術指標原則:首要考慮功能,其次考慮對其他芯片的支持情況,再次考慮處理器的字長、尋址空間、主頻、功耗等;
2、熟悉原則: 降低開發(fā)風險和難度;
3、成本原則:處理器成本和額外成本;
4、支持工具原則:選擇合適的軟件開發(fā)工具;
5、整體原則:全盤考慮處理器和其他部件或軟件的兼容和約束
嵌入式處理器的發(fā)展方向:
1、多核結構:在一個處理器中集成兩個或多個完整的CPU核;提升處理器的并行性能??s短核間的互連和通信延遲。多核結構簡單,易于優(yōu)化設計。
2、更低的功耗:功耗更小,工作方式:等待、暫停、休眠、空閑、節(jié)電等;
3、更先進的工藝和更小的封裝;
4、更寬的工作電壓范圍:3.3~5.5 V 2.2~6 V。最低工作電壓1.8 V。ARM(Advanced RISC Machines)公司是全球領先的16/32位RISC微處理器知識產權設計供應商
ARM優(yōu)點:全新設計的RISC結構的32位處理器;因為是全新的設計,開始就是32位,沒有歷史遺留問題(比如x86)。所以,更便于對處理器結構進行優(yōu)化;價格低廉;ARM公司不生產芯片,專心研究處理器內核的解決方案;低功耗
ARM架構:32位ALU31個;32位通用寄存器及6位狀態(tài)寄存器;32X8位乘法器;32X32位桶型移位寄存器;指令譯碼及控制邏輯;指令流水線;數據地址寄存器 ARM的流水線結構:一條指令的執(zhí)行可分成若干階段:(1)取指,從存儲器中取出指令(FETCH)(2)譯碼,指令譯碼(DEC)(3)取操作數,如從寄存器讀?。≧EG)(4)執(zhí)行計算(ALU)(5)存儲器訪問,操作數與存儲器有關(Mem)(6)結果寫回寄存器(RES)
程序執(zhí)行時間:T(proc)=N(inst)*CPI/f(clk)T(proc):程序執(zhí)行時間N(inst):一個程序的指令CPI:執(zhí)行一條指令的平均周期f(clk):處理器的時鐘周期,減少程序執(zhí)行時間的關鍵是減少CPI 流水線除了加深流水線的深度和加快時鐘頻率來提高流水線的效率和吞吐率外,還要解決:結構相關:在流水線中重疊執(zhí)行的指令,產生資源沖突。ARM中采用I-Cache,D-Cache,ALU采用單獨加法器計算地址;數據相關:一條指令需要前面指令的執(zhí)行結果。定向技術(將ALU結果直接送到ALU輸入)、流水線互鎖(通過硬件檢測,暫停至定向技術可以解決)、編譯器優(yōu)化;控制相關:分支指令時。指令預測、計算分支轉移成功的PC值
ARM存儲結構:ARM架構處理器的存儲器尋址空間有4GB;有的帶有I-CACHE和D-CACHE;片內不帶RAM和ROM。系統(tǒng)需要的RAM、ROM(包括FLASH)都通過總線外接;由于存儲器尋址空間達4GB,有的片內帶有MMU;允許外接 PCMCIA 存儲器的分類:與CPU的聯(lián)系:主存:直接和CPU交換信息;輔存:不能直接和CPU交換信息。按存儲元件使用的材料:半導體存儲器(常作主存);磁存儲器(磁帶,磁盤);光存儲器(光盤)。(對半導體存儲器)按讀寫工作方式可分:RAM(隨機存儲器),ROM(只讀存儲器)存儲器技術指標:1.存儲容量,2.存取速度3.易失性4.只讀性5.功耗6.可靠性7.價格 存儲空間的組織:實際存儲器由多種類型和容量的存儲芯片組成。合理安排每個存儲芯片的地址范圍。存儲空間的組織問題實質是地址譯碼電路的設計問題。地址譯碼的過程包括兩個步驟:先選中某個存儲芯片(稱為片選),其次選中片內的某個單元(稱為片內尋址)。片選過程:由譯碼電路對高位地址進行譯碼后產生的片選信號;片內尋址:由地址譯碼電路對低位地址進行譯碼實現存儲單元尋址。常用的片選方法:線選法、全譯碼法、部分譯碼法和混合譯碼法等。
RAM是一種可讀可寫的內存,在上電的情況下才能保持在存儲器中。(1)存放當前正在執(zhí)行的程序和數據。(2)存放I/O緩沖數據(3)作為中斷服務程序中保護現場信息的堆棧 ROM分類:(1)掩膜型ROM:內容在芯片生產出來之前指定。(2)PROM:一次性編程的只讀存儲器,OTP(Once Time Program)。(3)EPROM:可以修改ROM中的數據,即重復燒錄。紫外線照射。4)E2PROM:斷電情況下保存數據,又能在應用系統(tǒng)中在線修改
Flash存儲器概述:Flash存儲器就是俗稱的閃存,它是一種非易失性存儲芯片,Flash存儲器具有高密度、低價格、非易失性、快速(讀取速度較快)及可用電擦除可編程等特點。Flash存儲器被廣泛應用于各類移動存儲器卡、U盤、數碼相機記憶卡、記憶棒等。
Flash存儲器分類:Flash存儲器主要有NOR Flash存儲器和NAND Flash存儲器兩類。NOR Flash:基于Intel公司所開發(fā)的架構,可以隨機讀取任意單元的內容,讀取速度較快。寫入和擦除的速度較低,以塊(Block)為單位進行數據的讀/寫。最大優(yōu)點是可以直接從Flash中運行程序,缺點是工藝復雜,價格也比較貴。
NAND Flash:基于東芝公司(Toshiba)所開發(fā)的結構通過I/O指令的方式進行讀取,因此需要通過驅動程序來讀取。存儲容量較大、成本較低,常用來制作記憶卡。存儲空間是按照塊和頁(Page)的概念來組織的。
接口的功能:外設識別和尋址,速度匹配和緩沖,時序匹配,信息格式匹配和信息類型轉換等。接口的結構:接口一般由數據存儲(緩沖)電路,控制命令邏輯電路,狀態(tài)設置和存儲電路構成 接口數據傳輸的方式:1.程序查詢方式。2.中斷方式。3.DMA。
接口設計的過程:接口設計首先在硬件上分析接口兩側情況.然后考慮CPU總線與I/O設備之間信號的轉換.合理選用I/O接口芯片.進行硬件連接.最后進行接口驅動程序分析與設計。總線:是各種信號線的集合,是嵌入式系統(tǒng)中各部件之間傳輸數據、地址和控制信息的公共通路.總線的主要參數:總線帶寬、總線位寬、總線工作頻率等幾個.常用的總線:USB總線.I2C總線.DMA總線.SPI總線.I2S總線.CAN總線.RS232C/485總線.IEEE1394總線等
電路:電路是由若干相互連接、相互作用的基本電子器件組成的具有特定功能的電子系統(tǒng) 電路原理圖:描述元器件或芯片引腳的邏輯連接的圖紙,由元器件、連接、標號等組成。印制電路板(Print Circuit Board,PCB)描述元器件或芯片引腳的物理連接的圖紙
采用嵌入式操作系統(tǒng)的必要性:1提高系統(tǒng)的可靠性2提高開發(fā)效率,縮短開發(fā)周期3能充分發(fā)揮32位CPU的多任務潛力
嵌入式操作系統(tǒng)的特點:具備一般操作系統(tǒng)的基本功能,如任務調度、同步機制、中斷處理和內存管理等外,還有以下特點:(1)可拆裝性(2)支持實時性(3)統(tǒng)一的接口(4)操作方便簡單(5)提供強大的網絡功能(6)強穩(wěn)定性、弱交互性(7)固化代碼(8)更好的硬件適應性
實時系統(tǒng)主要衡量指標:響應時間(Response Time)控制應用中最重要;生存時間(Survival Time)在此時間內數據有效;吞吐量(Throughout)一定時間內系統(tǒng)可以處理事件的總數 實時操作系統(tǒng)的分類:一.速度分,強實時系統(tǒng)、一般實時系統(tǒng)、弱實時系統(tǒng).二.確定性分,硬實時系統(tǒng)、軟實時系統(tǒng).三.軟件結構分,1、單線程程序(1)循環(huán)輪詢:特點:對簡單系統(tǒng)易于實現、沒有中斷,不會出現隨機性問題、應用領域有限、對大量I/O服務的應用實現困難、大的程序不便調試,適合慢速系統(tǒng)(2)有限狀態(tài)機:特點:小系統(tǒng)易于實現、可以執(zhí)行快速、只通過輸出功能改變機器的響應、應用領域有限、不能保證確定性、大系統(tǒng)難于調試。(3)事件驅動系統(tǒng),事件驅動系統(tǒng)是能對外部時間直接響應的系統(tǒng)。包括前后臺、實時多任務、多處理器。是RTOS的主要形式。四.開放性分
1、商用系統(tǒng):特點:充分滿足了模塊化設計的要求,可把程序按照模塊化的要求自然分解成若干獨立的任務。啟動監(jiān)控任務程序,提高了系統(tǒng)的可靠性。良好的開發(fā)工具,提高了開發(fā)效率。特殊設計,避免系統(tǒng)崩潰。產品不斷升級。
2、專用系統(tǒng),一些專業(yè)廠家為本公司產品特制的OS,不提供應用開發(fā)者使用。如CISCO的網絡產品的EPOC等。特點:操作系統(tǒng)功能較弱。針對性強、安全性高
3、開放系統(tǒng),如:各類嵌入式LINUX(RT LINU、μCLINUX)、μC/OS等。特點:源碼公開、功能簡單、技術支持差、系統(tǒng)穩(wěn)定性差、對開發(fā)者要求高。
典型的RTOS包括:
1、RTOS基本內核:RTOS基礎和核心。包括任務管理、中斷管理、基本的通信管理和內存管理。其中對外設的管理只提供中斷管理,不提供具體的操作。
2、擴展內核:方便用戶使用的擴展,建立在基本內核上。如GUI、TCP/IP、瀏覽器、電源管理、文件管理
3、設備驅動接口:在內核和IO間,定義軟硬件的界線,方便RTOS移植和升級。有的統(tǒng)一于RTOS基本內核。
4、API RTOS與通用操作系統(tǒng)的(GPOS)比較:基本設計原則 :GPOS盡量縮短系統(tǒng)的平均響應時間并提高系統(tǒng)的吞吐率,在單位時間內為盡可能多的用戶請求提供服務。RTOS:采用各種算法和策略,始終保證系統(tǒng)行為的可預測性(predictability),即在系統(tǒng)運行的任何時刻,在任何情況下,實時操作系統(tǒng)的資源調配策略都能為爭奪資源(包括CPU、內存、網絡帶寬等)的多個實時任務合理地分配資源,使每個實時任務的實時性要求都能得到滿足。與通用操作系統(tǒng)不同,實時操作系統(tǒng)注重的不是系統(tǒng)的平均表現,而是要求每個實時任務在最壞情況下都要滿足其實時性要求.任務調度策略:GPOS:基于優(yōu)先級的搶先式調度策略,對于優(yōu)先級相同的進程則采用時間片輪轉調度方式,用戶進程可以通過系統(tǒng)調用動態(tài)地調整自己的優(yōu)先級,操作系統(tǒng)也可根據情況調整某些進程的優(yōu)先級。RTOS :采用固定優(yōu)先級搶先式調度方式,進程的優(yōu)先級是固定不變的,并且該優(yōu)先級是在運行前通過某種優(yōu)先級分配策略來指定的。內存管理:GPOS:虛存管理機制 RTOS:在原有虛存管理機制的基礎上增加頁面鎖。得到 了虛存管理機制為軟件開發(fā)帶來的好處,又提高了系統(tǒng)的可預測性。缺點是由于TLB等機制的設計也是按照注重平均表現的原則進行的,因此系統(tǒng)的可預測性并不能完全得到保障,采用靜態(tài)內存劃分的方式,為每個實時任務劃分固定的內存區(qū)域。這種方式的優(yōu)點是系統(tǒng)具有較好的可預測性,缺點是靈活性不夠好。中斷處理 GPOS:中斷處理程序的優(yōu)先級被設定為高于任何用戶進程。RTOS:一種是除時鐘中斷外,屏蔽所有其它中斷,中斷處理程序變?yōu)橹芷谛缘妮喸儾僮鳎@些操作由核心態(tài)的設備驅動程序或由用戶態(tài)的設備支持庫來完成。優(yōu)點:充分保證了系統(tǒng)的可預測性。缺點:對環(huán)境變化的響應可能不如上述中斷處理方式快,另外輪詢操作在一定程度上降低了CPU的有效利用率。另一種是對于采用輪詢方式無法滿足需求的外部事件,采用中斷方式,其它時間仍然采用輪詢方式。此時中斷處理程序與所以其它任務一樣擁有優(yōu)先級,調度器根據優(yōu)先級對處于就緒態(tài)的任務和中斷處理程序統(tǒng)一進行處理器調度。這種方式使外部事件的響應速度加快,并避免了上述中斷方式帶來第二個問題,但第一個問題仍然存在。共享資源的互斥訪問 GPOS:采用信號量機制來解決共享資源的互斥訪問 RTOS:對傳統(tǒng)的信號量機制進行了一些擴展,引入了如優(yōu)先級繼承協(xié)議、優(yōu)先級頂置協(xié)議以及Stack Resource Policy等機制,較好地解決了優(yōu)先級倒置的問題。系統(tǒng)調用以及系統(tǒng)內部操作的時間開銷 進程通過系統(tǒng)調用得到操作系統(tǒng)提供的服務,操作系統(tǒng)通過內部操作(如上下文切換等)來完成一些內部管理工作。為保證系統(tǒng)的可預測性,實時操作系統(tǒng)中的所有系統(tǒng)調用以及系統(tǒng)內部操作的時間開銷都應是有界的,并且該界限是一個具體的量化數值。而在通用操作系統(tǒng)中對這些時間開銷則未做如此限制
系統(tǒng)的可重入性 在通用操作系統(tǒng)中,核心態(tài)系統(tǒng)調用往往是不可重入的,當一低優(yōu)先級任務調用核心態(tài)系統(tǒng)調用時,在該時間段內到達的高優(yōu)先級任務必須等到低優(yōu)先級的系統(tǒng)調用完成才能獲得CPU,這就降低了系統(tǒng)的可預測性。因此,實時操作系統(tǒng)中的核心態(tài)系統(tǒng)調用往往設計為可重入的。
輔助工具 實時操作系統(tǒng)額外提供了一些輔助工具,如實時任務在最壞情況下的執(zhí)行時間估算工具、系統(tǒng)的實時性驗證工具等,可幫助工程師進行系統(tǒng)的實時性驗證工作。
操作系統(tǒng)的移植:嵌入式操作系統(tǒng)還有一個特點是,針對不同的平臺,系統(tǒng)不是直接可用的,一般需要經過針對專門平臺的移植操作系統(tǒng)才能正常工作。嵌入式操作系統(tǒng)移植的目的是指使操作系統(tǒng)能在某個微處理器或微控制器上運行
操作系統(tǒng)的移植大體可以分為三個層次:結構層次的移植。如果待移植處理器的結構不同于任何已經支持的處理器結構。平臺層次的移植。如果待移植處理器是某種操作系統(tǒng)已支持體系的處理器。板級移植。如果所用處理器已被操作系統(tǒng)支持,就只需要板級移植了。包括驅動程序的編寫和環(huán)境變量設置等內容等
Windows CE系統(tǒng)架構:Windows CE屬于比較典型的微內核操作系統(tǒng)。在內核中僅僅實現進程、線程、調度及內存管理等最基本的模塊,而把圖形系統(tǒng)、文件系統(tǒng)及設備驅動程序等等都作為單獨的用戶進程來實現
WinCE系統(tǒng)包括四層結構:應用程序、WinCE內核映像、板級支持包(BSP)、硬件平臺。BSP(Board Support Packet——板級支持包)是介于底層硬件和上層軟件之間的底層軟件開發(fā)包,它主要的功能是給上層提供統(tǒng)一接口,同時屏蔽各種硬件底層的差異,以及提供操作系統(tǒng)的驅動及硬件驅動。簡單的說,就是BSP包含了所有與硬件有關的代碼,為操作系統(tǒng)提供了硬件平臺無關性
BSP組成:是一個包括啟動程序Bootloader、OEM適配層程序(OAL)、標準開發(fā)板(SDB)和相關硬件設備的驅動程序和配置文件的軟件包。
WinCE BSP組成:OEM改編層,Bootloader,設備驅動,配置文件
Windows CE開發(fā)環(huán)境搭建:1安裝ActiveSync4.5用于連接WindowsCE設備和安裝桌面Windows的PC機的工具2安裝Visual Studio 2005開發(fā)套件3安裝Visual Studio 2005 SP1 4安裝目標設備SDK:Windows Mobile 6 professional SDK,Windows Mobile 6 professional image(CHS)
嵌入式系統(tǒng)的開發(fā)模式:嵌入式的開發(fā)與通用計算機系統(tǒng)的開發(fā)的最大不同是嵌入式系統(tǒng)采用交叉開發(fā)的架構。首先,利用主機系統(tǒng)上豐富的資源及良好的開發(fā)環(huán)境開發(fā)和仿真調試目標系統(tǒng)上的軟件。然后通過接口將交叉編譯的目標代碼傳輸到目標系統(tǒng)上,并用交叉調試器在監(jiān)控程序或實時內核/操作系統(tǒng)的支持下進行實時分析和調度。最后,目標系統(tǒng)在特定的環(huán)境下運行
嵌入式系統(tǒng)交叉開發(fā)環(huán)境:指用于嵌入式軟件開發(fā)的所有工具軟件的集合,一般包括文本編輯器,交叉編譯器,交叉調試器,仿真器,下載器等,由宿主機和目標機組成,宿主機與目標機之間在物理連接的基礎上建立起邏輯連接。
嵌入式開發(fā)環(huán)境的建立:1根據目標系統(tǒng)的處理器體系結構選擇合適的工具和仿真器2根據目標系統(tǒng)上的接口資源,選擇合適的開發(fā)主機和目標系統(tǒng)的聯(lián)系方式3選擇合適的開發(fā)主機操作系統(tǒng)(WINDOWS,LINUX)4在目標機和主機系統(tǒng)安裝相應開發(fā)工具,建立開發(fā)環(huán)境5嵌入式軟件開發(fā)工具根據不同的階段分類:需求分析工具,軟件設計工具,編碼調試工具,測試工具,配置管理工具、維護工具等。
嵌入式軟件開發(fā)工具根據嵌入式軟件開發(fā)分類:與嵌入式QS相關的開發(fā)工具,用于開發(fā):基于嵌入式OS的應用,部分驅動程序等;與嵌入式QS無關的開發(fā)工具,用于開發(fā):基本的驅動程序,輔助硬件調試程序,系統(tǒng)軟件等
交叉調試器:調試程序和被調試程序運行在不同機器上的調試器。調試器通過某種方式能控制目標機上被調試程序的運行方式。通過調試器能查看和修改目標機上的內存、寄存器以及被調試程序中的變量等。典型的交叉調試器方法:Crash and Burn,ROM Moniter。ROM Emulator,In Circuit E mulator,On Chip Debugging ROM Moniter:ROM Monitor是被固化且運行在目標機上的一段程序,負責監(jiān)控目標機上被調試程序的運行,與宿主機端的調試器一起完成對應用程序的調試。調試器與ROM Monitor之間的通信遵循遠程調試協(xié)議。
ROM Monitor能配合調試器完成:程序映像下載;對目標機系統(tǒng)內存的讀寫;對寄存器的讀寫;設置和清除不同類型的斷點;單步執(zhí)行指令;復位系統(tǒng)等調試功能
調試過程(1)啟動目標機,監(jiān)控器掌握對目標機的控制,等待和調試器建立連接;(2)啟動調試器,并和監(jiān)控器建立起通信連接;(3)使用調試器將應用程序下載到目標機上的RAM空間中;(4)使用調試器進行調試,發(fā)出各種調試命令,監(jiān)控器解釋并執(zhí)行這些命令,通過目標機上的各種異常來獲取對目標機的控制,將命令執(zhí)行結果回傳給調試器;(5)如果程序有問題,在調試器的幫助下定位錯誤;修改之后再重新編譯鏈接并下載程序,開始新的調試,如此反復直至程序正確運行為止。
ROM Emulator:ROM Emulator是一種用于替代目標機上的ROM芯片的設備,即ROM仿真器。利用這種設備,目標機可以沒有ROM芯片,但目標機的CPU可以讀取ROM Emulator設備上ROM芯片的內容:ROM Emulator設備上的ROM芯片的地址可以實時地映射到目標機的ROM地址空間,從而仿真(Emulation)目標機的ROM。
ICE(In-Circuit Emulator)是一種用于替代目標機上CPU的設備,即在線仿真器。它比一般的CPU有更多的引出線,能夠將內部的信號輸出到被控制的目標機。ICE上的Memory也可以被映射到用戶的程序空間,這樣即使目標機不存在的情形下也可以進行代碼的調試。連接ICE和目標機時,一般是將目標機的CPU取下,而將ICE的CPU引出線接到目標機的CPU插槽。用ICE進行調試時,在Host端運行的調試器通過ICE來控制目標機上運行的程序。適用于:調試實時的應用系統(tǒng);調試設備驅動程序;對硬件進行功能和性能的測試;實時性能分析
OCD(On Chip Debugging)是CPU芯片提供的一種調試功能(片上調試),可以認為是一種廉價的ICE功能:OCD的價格只有ICE的20%,但提供了ICE 80%的功能。調試方法:1)將CPU的模式分為一般模式和調試模式2)一般模式下,CPU從內存讀取指令執(zhí)行3)調試模式下,CPU首先從調試端口讀取指令,通過調試端口可以控制CPU進入和退出調試模式;Host端的調試器可以直接向目標機發(fā)送要執(zhí)行的指令,讀寫目標機的內存和各種寄存器,控制目標程序的運行以及完成各種復雜的調試功能。
軟件仿真器調試的特點:優(yōu)點:最大好處就是可以不用真正的目標機,可以在目標機環(huán)境并不存在的條件下開發(fā)目標機上的應用系統(tǒng),并且在調試時可以利用Host資源提供更詳細的錯誤診斷信息。缺點:和實際的運行環(huán)境差別很大;設備模擬的局限性較大;實時特性較差;對Host的資源要求較高。適用范圍:對時間特性沒有嚴格要求、沒有特殊外設、只需要驗證邏輯正確的應用程序
嵌入式軟件測試工具:能夠用來輔助測試的工具,主要用來支持測試人員的工作。一般有內存分析工具,性能分析工具,覆蓋分析工具,缺陷跟蹤工具等。
軟硬件分開設計存在問題:缺少統(tǒng)一的軟硬件表示方法;劃分依靠先驗定義;不能夠驗證整個系統(tǒng);通過HW/SW邊界時很難發(fā)現不兼容問題;缺少成熟的設計流程;上市時間問題;描述更改變得困難
軟硬件協(xié)同設計定義:軟硬件共同設計目的是為硬件和軟件的協(xié)同描述,驗證和綜合提供一種集成環(huán)境
軟硬件協(xié)同設計的基本需求:統(tǒng)一的軟硬件描述方式;交互式軟硬件劃分技術 ;完整的軟硬件模型基礎;正確的驗證方法 軟件硬件協(xié)同設計的設計流程:用HDL語言和C語言進行系統(tǒng)描述并進行模擬仿真和系統(tǒng)功能驗證;對軟硬件實現進行功能劃分,分別用語言進行設計并將其綜合起來進行功能驗證和性能預測等仿真確認(協(xié)調模擬仿真);如無問題則進行軟件和硬件詳細設計;最后系統(tǒng)測試 軟件硬件協(xié)同設計的特點:縮短開發(fā)周期;取得更好的設計效果;滿足苛刻的設計限制 ; 這種平臺的推出將不僅包含芯片本身,還必須包含完整的開發(fā)系統(tǒng)和典型應用實例,而供應商提供的服務和技術支持也當然要成為產品不可分割的一部分 缺點:典型的手動劃分(manual Partition);固定應用領域(carefully very specialized);逐漸增長的評估需求支持很弱(no abstract models);主要強調性能;模型的連貫性在設計重用中不被支持;商業(yè)系統(tǒng)更強調協(xié)同驗證(co-verification)方面(more achievable goal)
嵌入式系統(tǒng)典型的接口(RS232RS484USB、同步串口及其他串口、I2C、I2S、AC97、LAN等的應用特點): RS232:采用RS232的三根線進行通信。接口為D型的9針陽性的插頭。低速紅外異步通信接口,支持使用紅外的雙向無線通信,提供發(fā)送編碼器和接收解碼器,支持IrDAV1.11的物理鏈路。不支持IR LED驅動器和接收放大器。支持半雙工,最高波特率115.2Kb/s。藍牙 I2C總線接口:由PHILIPS創(chuàng)建的雙線方式串行總線.雙向數據線用于輸入輸出,雙向時鐘線用于控制和采樣,每個設備有一個地址,采用主從方式通信。實現主機與外設間通信.允許多主機,此時采用裁決控制器。I2C單元是處理器內部總線上的設備。USB:Host控制器基于PCI,提高了系統(tǒng)性能,即插即用,無需手動設置地址、中斷……熱插撥,系統(tǒng)不需重啟便可工作.易于擴展,理論上可連接多達127個設備,但一般都只限于連接兩三個設備,真正組網后的系統(tǒng)穩(wěn)定因素需要探討.USB2.0以低成本實現高達480Mb/s的傳輸率(USB1.0的全速設備可達12Mb/s)接口標準統(tǒng)一、端口供電 AC97控制器:支持AC97 V2.實現話音數字化
內部集成電路聲音控制器(I2S)用于數字立體聲的規(guī)程 多媒體卡控制器(MMC)
Boot Loader技術:嵌入式系統(tǒng)中的 OS 啟動加載程序.引導加載程序(包括固化在固件(firmware)中的boot代碼,和Boot Loader兩大部分,是系統(tǒng)加電后運行的第一段軟件代碼).相對于操作系統(tǒng)內核來說,它是一個硬件抽象層,系統(tǒng)的加載啟動任務就完全由 Boot Loader 來完成,在操作系統(tǒng)內核運行之前運行一段小程序
功能:初始化硬件設備,建立內存空間的映射圖,調整系統(tǒng)軟硬件環(huán)境,以便操作系統(tǒng)內核啟動
不通用:依賴于硬件,依賴于具體的板級配置 不同的 CPU有不同的Boot Loader 多階段的 Boot Loader:提供更為復雜的功能,以及更好的可移植性,從固態(tài)存儲設備上啟動的 Boot Loader 大多都是 2 階段的啟動過程,啟動過程可以分為 stage 1和stage2兩部分 兩種不同的操作模式:一.啟動加載模式:自主(Autonomous)模式,從目標機上的某個固態(tài)存儲設備上將操作系統(tǒng)加載到 RAM 中運行,Boot Loader 的正常工作模式
二.下載模式:通過串口連接或網絡連接等通信手段從主機(Host)下載文件,如:下載內核映像和根文件系統(tǒng)映像等。從主機下載的文件通常首先被 Boot Loader 保存到目標機的 RAM 中,然后再被 BootLoader 寫到目標機上的FLASH 類固態(tài)存儲設備中。通常在第一次安裝內核與根文件系統(tǒng)時被使用系統(tǒng)更新也會使用 Boot Loader 的這種工作模式,通常都會向它的終端用戶提供一個簡單的命令行接口
第四篇:嵌入式程序員C語言筆試題目
華碩_嵌入式程序員C語言筆試題目
預處理器(Preprocessor).用預處理指令#define 聲明一個常數,用以表明1年中有多少秒(忽略閏年問題)
#define SECONDS_PER_YEAR(60 * 60 * 24 * 365)UL
我在這想看到幾件事情:
1)#define 語法的基本知識(例如:不能以分號結束,括號的使用,等等)
2)懂得預處理器將為你計算常數表達式的值,因此,直接寫出你是如何計算一年中有多少秒而不是計算出實際的值,是更清晰而沒有代價的。
3)意識到這個表達式將使一個16位機的整型數溢出-因此要用到長整型符號L,告訴編譯器這個常數是的長整型數。
4)如果你在你的表達式中用到UL(表示無符號長整型),那么你有了一個好的起點。記住,第一印象很重要。.寫一個“標準”宏MIN,這個宏輸入兩個參數并返回較小的一個。
#define MIN(A,B)((A)<=(B)?(A):(B))
這個測試是為下面的目的而設的:
1)標識#define在宏中應用的基本知識。這是很重要的。因為在 嵌入(inline)操作符 變?yōu)闃藴蔆的一部分之前,宏是方便產生嵌入代碼的唯一方法,對于嵌入式系統(tǒng)來說,為了能達到要求的性能,嵌入代碼經常是必須的方法。
2)三重條件操作符的知識。這個操作符存在C語言中的原因是它使得編譯器能產生比if-then-else更優(yōu)化的代碼,了解這個用法是很重要的。
3)懂得在宏中小心地把參數用括號括起來
4)我也用這個問題開始討論宏的副作用,例如:當你寫下面的代碼時會發(fā)生什么事?
least = MIN(*p++, b);
3.預處理器標識#error的目的是什么?
Error directives produce compiler-time error messages.死循環(huán)(Infinite loops)
4.嵌入式系統(tǒng)中經常要用到無限循環(huán),你怎么樣用C編寫死循環(huán)呢?
這個問題用幾個解決方案。我首選的方案是:
while(1){ }
一些程序員更喜歡如下方案:
for(;;){ }
這個實現方式讓我為難,因為這個語法沒有確切表達到底怎么回事。如果一個應試者給出這個作為方案,我將用這個作為一個機會去探究他們這樣做的基本原理。如果他們的基本答案是:“我被教著這樣做,但從沒有想到過為什么?!边@會給我留下一個壞印象。
第三個方案是用 goto Loop:...goto Loop;
應試者如給出上面的方案,這說明或者他是一個匯編語言程序員(這也許是好事)或者他是一個想進入新領域的BASIC/FORTRAN程序員。
數據聲明(Data declarations)
5.用變量a給出下面的定義
a)一個整型數(An integer)
b)一個指向整型數的指針(A pointer to an integer)c)一個指向指針的的指針,它指向的指針是指向一個整型數(A pointer to a pointer to an intege)r
d)一個有10個整型數的數組(An array of 10 integers)e)一個有10個指針的數組,該指針是指向一個整型數的。(An array of 10 pointers to integers)
f)一個指向有10個整型數數組的指針(A pointer to an array of 10 integers)
g)一個指向函數的指針,該函數有一個整型參數并返回一個整型數(A pointer to a function that takes an integer as an argument and returns an integer)
h)一個有10個指針的數組,該指針指向一個函數,該函數有一個整型參數并返回一個整型數(An array of ten pointers to functions that take an integer argument and return an integer)
答案是:
a)int a;// An integer
b)int *a;// A pointer to an integer
c)int **a;// A pointer to a pointer to an integer
d)int a[10];// An array of 10 integers
e)int *a[10];// An array of 10 pointers to integers
f)int(*a)[10];// A pointer to an array of 10 integers
g)int(*a)(int);// A pointer to a function a that takes an integer argument and returns an integer
h)int(*a[10])(int);// An array of 10 pointers to functions that take an integer argument and return an integer
人們經常聲稱這里有幾個問題是那種要翻一下書才能回答的問題,我同意這種說法。當我寫這篇文章時,為了確定語法的正確性,我的確查了一下書。但是當我被面試的時候,我期望被問到這個問題(或者相近的問題)。因為在被面試的這段時間里,我確定我知道這個問題的答案。應試者如果不知道所有的答案(或至少大部分答案),那么也就沒有為這次面試做準備,如果該面試者沒有為這次面試做準備,那么他又能為什么出準備呢? Static
6.關鍵字static的作用是什么?
這個簡單的問題很少有人能回答完全。在C語言中,關鍵字static有三個明顯的作用:
1)在函數體,一個被聲明為靜態(tài)的變量在這一函數被調用過程中維持其值不變。
2)在模塊內(但在函數體外),一個被聲明為靜態(tài)的變量可以被模塊內所用函數訪問,但不能被模塊外其它函數訪問。它是一個本地的全局變量。
3)在模塊內,一個被聲明為靜態(tài)的函數只可被這一模塊內的其它函數調用。那就是,這個函數被限制在聲明它的模塊的本地范圍內使用。
大多數應試者能正確回答第一部分,一部分能正確回答第二部分,同是很少的人能懂得第三部分。這是一個應試者的嚴重的缺點,因為他顯然不懂得本地化數據和代碼范圍的好處和重要性。
Const
7.關鍵字const有什么含意?
我只要一聽到被面試者說:“const意味著常數”,我就知道我正在和一個業(yè)余者打交道。去年Dan Saks已經在他的文章里完全概括了const的所有用法,因此ESP(譯者:Embedded Systems Programming)的每一位讀者應該非常熟悉const能做什么和不能做什么.如果你從沒有讀到那篇文章,只要能說出const意味著“只讀”就可以了。盡管這個答案不是完全的答案,但我接受它作為一個正確的答案。(如果你想知道更詳細的答案,仔細讀一下Saks的文章吧。)
如果應試者能正確回答這個問題,我將問他一個附加的問題:
下面的聲明都是什么意思?
const int a;
int const a;
const int *a;
int * const a;
int const * const a=new int(1);
/******/
前兩個的作用是一樣,a是一個常整型數。第三個意味著a是一個指向常整型數的指針(也就是,整型數是不可修改的,但指針可以)。第四個意識a是一個指向整型數的常指針(也就是說,指針指向的整型數是可以修改的,但指針是不可修改的)。最后一個意味著a是一個指向常整型數的常指針(也就是說,指針指向的整型數是不可修改的,同時指針也是不可修改的)。如果應試者能正確回答這些問題,那么他就給我留下了一個好印象。順帶提一句,也許你可能會問,即使不用關鍵字 const,也還是能很容易寫出功能正確的程序,那么我為什么還要如此看重關鍵字const呢?我也如下的幾下理由:
1)關鍵字const的作用是為給讀你代碼的人傳達非常有用的信息,實際上,聲明一個參數為常量是為了告訴了用戶這個參數的應用目的。如果你曾花很多時間清理其它人留下的垃圾,你就會很快學會感謝這點多余的信息。(當然,懂得用const的程序員很少會留下的垃圾讓別人來清理的。)
第五篇:嵌入式Linux筆試題庫和答案
嵌入式Linux筆試題庫
一.選擇題
1.Linux的創(chuàng)始人是誰()
A、Turbolinux B、AT&T Bell Laboratry C、University of Helsinki
D、Linus Torvalds 2.在Linux中,命令解釋器是哪個()
A、管道
B、分級文件系統(tǒng)
C、字符型處理器
D、shell 3.Linux安裝程序提供了兩個引導裝載程序()A、GROUP和LLTO
B、DIR和COID
C、GRUB和LILO
D、以上都不是
4.如果當前目錄是/home/sea/china,那么“china”的父目錄是哪個目錄()
A、/home/sea B、/home/
C、/
D、/sea 5.在Linux中,要刪除abc目錄及其全部內容的命令為:()A、rm abc B、rm-r abc C、rmdir abc
D、rmdir-r abc 6.假定kernel支持vfat分區(qū),下面哪一個操作是將/dev/hda1分區(qū)加載到/win目錄?()
A、mount-t windows /win
/dev/hda1 B、mount-fs=msdos
/dev/hda1
/win C、mount-s
win
/dev/hda1 /win D、mount –t vfat
/dev/hda1 /win 7.顯示用戶的主目錄的命令是什么()A、echo $HOME B、echo $USERDIR C、echo $ECHO D、echo $ENV
8.系統(tǒng)中有用戶user1和user2,同屬于users組。在user1用戶目錄下有一文件file1,它擁有644的權限,如果user2用戶想修改user1用戶目錄下的file1文件,應擁有()權限。
A、744
B、664
C、646
D、746 9.如何查看一個RPM軟件包是否安裝()A、rpm
-Vc
postfix
B、rpm-q
postfix
C、rpm
--changelog
postfix
D、rpm
-q—changelog
postfix
10*.在Linux中,提供TCP/IP包過濾功能的軟件叫什么(C)A、rarp
B、route
C、iptables
D、filter 11.nfs服務的配置文件是什么?()
/etc/mtab B、/etc/fastboot C、/etc/fstab D、/etc/exports 12.用命令ls-al顯示出文件ff的描述:-rwxr-xr--1 root root Cec 10 17:12 ff 由此可知文件ff的類型為:()A、普通文件
B、硬連接
C、目錄
D符號連接 13.Linux操作系統(tǒng)中的shell是()A、命令解釋器
B、程序設計語言
C、腳本編輯器
D、編譯器
14.能實現文件系統(tǒng)遠程掛載的是()。
599 A.SAMBA B.NFS
C.NIS
D.HTTPS 15.Linux系統(tǒng)下硬盤分區(qū),能直接使用的分區(qū)是()A、主分區(qū) B、擴展分區(qū) C、邏輯分區(qū)
D、擴展分區(qū)和邏輯分區(qū)
16.Linux系統(tǒng)的1.0版內核的發(fā)布是在(A)A.1992年
B.1993年
C.1994年
D.1995年
17.在vi編輯器的命令模式中,在光標所在位置的右側插入字符的命令是(A)A.a
B.A C.i D.I 18.要給文件file1加上其他人可執(zhí)行屬性的命令是()A.chmod a+x
B.chown a+x
C.chmod o+x
D.chown o+x 19下面哪個linux 命令可以一次顯示一頁內容?()A.pause
B.cat
C.more
D.grep 20、下面命令的作用是:set ps1=“[uwt]$”,export ps1()A.改變錯誤信息提示 B.改變命令提示符 C.改變一些終端參數 D.改變輔助命令提示符
21、如何從當前系統(tǒng)中卸載U盤()A.umount B.dismount C.mount-u D.從/etc/fstab 中刪除這個文件系統(tǒng)項
22、在linux 中,如何標識第一塊IDE硬盤 上的第2 個擴展分區(qū)?()A./dev/hdb2 B./dev/hd1b2 C./dev/hdb6 D./dev/hd1b6
23、下面哪條命令可以把f1.txt 復制為f2.txt?()A.cp f1.txt | f2.txt B.cat f1.txt | f2.txt C.cat f1.txt > f2.txt D.copy f1.txt | f2.txt
24、下面哪個命令可以壓縮部分文件:()A.tar-dzvf filename.tgz * B.tar-tzvf filename.tgz * C.tar-czvf filename.tgz * D.tar-xzvf filename.tgz *
25.與通用操作系統(tǒng)相比嵌入式操作系統(tǒng)還必須具有的特點是()
A強穩(wěn)定性,弱交互性
B 較強實時性
C 可伸縮性
D 功耗管理與節(jié)能
26.下列那種設備不屬于嵌入式系統(tǒng)產品()。A、PDA
B ATM取款機
C 個人計算機
D 機頂盒 27.下列是開源的嵌入式操作系統(tǒng)的是()A.嵌入式linux B uc/os D Palm OS
E WinCE 28.下列不屬于ARM處理器異常工作模式的是()A.快速中斷模式 B.未定義模式
C.數據訪問終止模式 D.用戶模式
29.嵌入式軟件開發(fā)與通用軟件開發(fā)增加了()環(huán)節(jié) A.代碼編寫
B.代碼調試
C.代碼固化
D.軟件測試 30.嵌入式系統(tǒng)調試方式中不占用系統(tǒng)資源的調試方式是()A模擬器方式
B 監(jiān)控器方式
C
ICE在線仿真器
D
IDE在線調試器方式
31.燒寫到FLASH里的是()格式的文件。
A..asm B..bin C..obj
D..cpp 32.匯編程序中的偽指令是在()階段起作用。
A.編輯 B.鏈接 C.編譯
D.執(zhí)行
33、目前嵌入式處理器的種類大約有()A.500多種 B.800多種
C.1000多種
D.2000多種
34.嵌入式系統(tǒng)中硬件層主要包括了嵌入式系統(tǒng)必要的硬件設備,(),存儲器,I/O等。
A 嵌入式微處理器
B 嵌入式控制器
C單片機
D.SOC 35.解壓文件linux.tar.gz使用的命令是()A.tar –jxvf linux.tar.gz
B.tar jcvf linux.tar.gz
C.tar –zxvf linux.tar.gz D.tar –czvf linux.tar.gz 36.在vi處于命令行模式時,如果需要對文本進行修改,欲在光標所在位置的下一個位置開始輸入字符,則()。
A按下字母i進入插入模式
B 按下字母a進入插入模式 C 按下字母O進入插入模式
D 按下字母n進入插入模式 37.當前vi處于插入模式時,現放棄對文本修改,既不保存退出vi,則()
A.使用“:q!”命令
B.使用“:wq!”命令退出
C. 先按“ESC”后,使用”:q!”命令退出。D先按“ESC”后,使用”:wq!”命令退出
38.經過匯編后,生成的目標文件的后綴名為()A..c
B.s C.o
D.exe 39.對代碼文件code.c編譯,生成可調式代碼的命令是()A #gcc –g code.c –o code B #gcc code.c –o code C #gcc –g code.c code
D #gcc –g code
40.NAND FLASH和NOR FLASH的區(qū)別正確的是()A.NOR的讀速度比NAND稍慢一些 B NAND 的擦除速度遠比NOR的慢 C.NAND的寫入速度比NOR慢很多 D.大多數寫入操作需要先進行擦除操作。
二、多項選擇題:
1.常見的Linux發(fā)行版本有:(ABCDE)
A、Redhat Linux
B、Turbo Linux
C、Debian GNU/Linux
D、SuSE Linux
E、Mandrake Linux 2.請選出所有能將文件a.dat的權限從'rwx------' 改為 'rwxr-x---'的命令:(CD)A、chown rwxr-x---a.dat
B、chmod rwxr-x---a.dat C、chmod g+rx a.dat
D、chmod 750 a.dat 3.對于所有用戶都能讀的文件權限是(ABC)A.777
B.444
C.644
D.640 三.填空題
1.Linux一般包括四個主要部分,()()()()。
2.目前,幾乎所有的linux發(fā)行版本都包括了()和()兩種。3.Linux內核主要由()()()()()5部分組成。4.vi編輯器的三種狀態(tài)()()()。
5.使用gcc編譯文件生成可執(zhí)行文件要經歷四個相互關聯(lián)的步驟:(預處理)(編譯)(匯編)和(鏈接)。
6.bootloader常見的兩種操作模式是()和(),僅僅對開發(fā)人員有用的模式是()。
四.問答題
1.makefile文件的作用是什么?
答案:一個工程中的源文件不計數,其按類型、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規(guī)則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進行更復雜的功能操作,因為 makefile就像一個Shell腳本一樣,其中也可以執(zhí)行操作系統(tǒng)的命令。makefile帶來的好處就是——“自動化編譯”,一旦寫好,只需要一個make命令,整個工程完全自動編譯,極大的提高了軟件開發(fā)的效率。make是一個命令工具,是一個解釋makefile中指令的命令工具,一般來說,大多數的IDE都有這個命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make??梢?,makefile都成為了一種在工程方面的編譯方法。2.Linux顯示文件夾中隱藏文件信息的命令是什么? 3.Linux文件屬性有哪些?(共十位)
-rw-r--r—1 第一個屬性代表這個文件是【目錄、文件或連結文件】,當為[ d ]則是目錄,為[-]則是文件,若是[ l ]則表示為連結檔(link file); 若是[ b ]則表示為裝置文件里面的可供儲存的接口設備;
若是[ c ]則表示為裝置文件里面的串行端口設備,例如鍵盤、鼠標。
接下來的屬性中,三個為一組,且均為【rwx】三個參數的組合,其中[r]代可讀、[w]代表可寫、[x]代表可執(zhí)行: 第一組為【擁有人的權限】,第二組為【同群組的權限】;
第三組為【其它非本群組的權限】。
4.說明下述Linux系統(tǒng)命令的主要功能是什么。顯示文件目錄命令ls 改變當前目錄命令cd 如cd / /home 建立子目錄mkdir mkdir xiong 刪除子目錄命令rmdir 如 rmdir /mnt/cdrom 刪除文件命令rm 如 rm /ucdos.bat 文件復制命令cp 如 cp /ucdos/* /fox 獲取幫助信息命令man 如 man ls 顯示文件的內容cat more less 5.簡述Linux在嵌入式系統(tǒng)市場上取得輝煌的成果的原因。6.簡述嵌入式Linux系統(tǒng)開發(fā)流程。
答:嵌入式系統(tǒng)平臺移植主要包括以下幾部分
1)交叉編譯器的制作和安裝 2)Bootloader開發(fā)和移植 3)嵌入式操作系統(tǒng)開發(fā)和移植 4)根文件系統(tǒng)制作和移植 5)應用程序開發(fā) 6)系統(tǒng)集成和測試
7*.嵌入式根文件系統(tǒng)的設計目標應該包括哪些方面? 8*.arm系列處理器arm7tdmi中的tdmi四個字母的含義。9.嵌入式系統(tǒng)發(fā)展經歷了那些階段,有什么特點?
10*.嵌入式系統(tǒng)的設計方法和過程與傳統(tǒng)的單片機開發(fā)有什么不同?
11.簡述哈佛體系結構和馮諾依曼體系結構的不同點。12.簡述NAND_FLASH和NOR_FLASH的異同點? 13.簡述S3C2410與ARM920T的關系.14.嵌入式系統(tǒng)常用調試方法有幾種,各有什么優(yōu)缺點?
15.什么是嵌入式操作系統(tǒng)?常見的嵌入式操作系統(tǒng)有哪些?(列舉五個以上),嵌入式操作系統(tǒng)有什么特點?
16.什么是交叉開發(fā)環(huán)境?簡述嵌入式linux系統(tǒng)交叉開發(fā)環(huán)境的構建過程?
17.什么是bootloader?常用的bootloader有那些?bootloader兩種工作模式有什么不同,分別應用在那種情況下? 18.簡述bootloader在嵌入式系統(tǒng)平臺上的移植過程?
19.說明linux平臺下用C語言軟件開發(fā)方法?(說明需要用到那些工具)20什么是SOC? 21.嵌入式系統(tǒng)有什么特點? 22.什么是交叉編譯工具鏈? 23.簡述嵌入式Linux系統(tǒng)根文件系統(tǒng)的作用。25.名詞解釋ARM
答:ARM(Advanced RISC Machine的縮寫),ARM可以認為是一個公司的名字,也可以認為是對一類微處理器的通稱,還可以認為是一種技術的名字,全名是Advanced RISC Machine。該公司1990年11月成立于英國劍橋,主要出售芯片設計技術的授權,是蘋果電腦,Acorn電腦集團和VLSI Technology的合資企業(yè)。Acorn曾推出世界上首個商用單芯片RISC處理器,而蘋果電腦當時希望將RISC技術應用于自身系統(tǒng),ARM微處理器新標準因此應運而生。26.CISC
答:復雜指令系統(tǒng)計算機 CISC(Complex Instruction Set Computer)依靠增強指令的功能,增加指令系統(tǒng)的復雜程度來提高計算機系統(tǒng)的性能。特點:
(1)指令系統(tǒng)復雜龐大,指令數目一般多達200~300條。(2)指令格式多,指令字長不固定,使用多種不同的尋址方式。(3)可訪存指令不受限制。
(4)各種指令的執(zhí)行時間和使用頻率相差很大。(5)大多數采用微程序控制器。
27.RISC:(Reduced Instruction Set Computer)精簡指令系統(tǒng),簡化指令功能及優(yōu)化的編譯程序來提高計算機系統(tǒng)的性能。特點:
(1)選取使用頻率高的簡單指令以及很有用但又不復雜的指令組成指令系統(tǒng)。
(2)指令數少,指令長度一致,指令格式少,尋址方式少,指令總數大都不超過100條。
(3)以寄存器 — 寄存器方式工作,只有取數/存數(LOAD/STORE)指令訪問存儲器,其余指令的操作都在寄存器之間進行。
(4)采用指令流水線調度,使大部分指令在一個機器周期內完成。(5)使用較多的通用寄存器以減少訪存。
(6)以組合電路控制為主,不用或少用微程序控制。采用優(yōu)化編譯技術,力求高效率支持高級語言的實現。28.JTAG
答:JTAG(Joint Test Action Group;聯(lián)合測試行動小組)是一種國際標準測試協(xié)議(IEEE 1149.1兼容),主要用于芯片內部測試?,F在多數的高級器件都支持JTAG協(xié)議,如DSP、FPGA器件等。標準的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為模式選擇、時鐘、數據輸入和數據輸出線。JTAG最初是用來對芯片進行測試的,基本原理是在器件內部定義一個TAP(Test Access Port;測試訪問口)通過專用的JTAG測試工具對進行內部節(jié)點進行測試。JTAG測試允許多個器件通過JTAG接口串聯(lián)在一起,形成一個JTAG鏈,能實現對各個器件分別測試?,F在,JTAG接口還常用于實現ISP(In-System Programmable在線編程),對FLASH等器件進行編程。JTAG編程方式是在線編程,傳統(tǒng)生產流程中先對芯片進行預編程現再裝到板上因此而改變,簡化的流程為先固定器件到電路板上,再用JTAG編程,從而大大加快工程進度。JTAG接口可對PSD芯片內部的所有部件進行編程 29.Bootloader 答:簡單地說,Boot Loader 就是在操作系統(tǒng)內核運行之前運行的一段小程序,程序的主要功能是初始化系統(tǒng)基本硬件設備、建立內存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調用操作系統(tǒng)內核準備好正確的環(huán)境。30.U-boot 答:U-Boot,全稱Universal Boot Loader,是遵循GPL條款的開放源碼項目。從FADSROM、8xxROM、PPCBOOT逐步發(fā)展演化而來。其源碼目錄、編譯形式與Linux內核很相似,事實上,不少U-Boot源碼就是相應的Linux內核源程序的簡化,尤其是一些設備的驅動程序,這從U-Boot源碼的注釋中能體現這一點。但是U-Boot不僅僅支持嵌入式Linux系統(tǒng)的引導,當前,它還支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系統(tǒng)。U-boot支持眾多的硬件平臺,是應用非常廣泛的bootloader 31.make 答:make是Linux下的工具軟件,make工具與makefile文件配合使用,實現Linux系統(tǒng)下工程管理,實現程序編譯的自動化。32.makefile 答:Linux系統(tǒng)下一種文件,該文件與Linux下的工具make配合使用,實現Linux下工程項目管理,實現程序編譯的自動化。