




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
嵌入式工程師考試題目
嵌入式系統(tǒng)設(shè)計(jì)師考試筆記之嵌入式系統(tǒng)基礎(chǔ)知識(shí)
一、引言
自《嵌入式系統(tǒng)設(shè)計(jì)師考試復(fù)習(xí)筆記之儲(chǔ)備治理篇》在嵌入式在線的
博客顯現(xiàn)后,意外的得到專門多朋友的關(guān)注和評(píng)論,收到許多朋友的郵件,
咨詢一些有關(guān)考試的咨詢題,期望得到我的復(fù)習(xí)筆記的其他部分。我專門
感謝他們,他們的熱切關(guān)注,使我有了連續(xù)往下寫的無限動(dòng)力,使我萌生
了將我往常的復(fù)習(xí)筆記、考試體會(huì)結(jié)合大綱教程并重新按《教程》的章節(jié)
順序整理一份適合考生復(fù)習(xí)的筆記手冊(cè),筆記后面再分析歷年的真題,按
章節(jié)考點(diǎn)找出有關(guān)的考題進(jìn)行分析,期望能和有愛好的人們一起討論討論。
嵌入式系統(tǒng)設(shè)計(jì)師的一天考試分為上午和下午部分,兩部分的考試方
式、試題難度、考點(diǎn)分布和復(fù)習(xí)方法差不多上不同的。這次我們討論的是
嵌入式系統(tǒng)基礎(chǔ)知識(shí),我本人覺得,這部分出下午大題的可能性不大,要
緊是分布在上午的75道選擇題之中。
從歷年的真題和考試大綱來看,上午的選擇題要緊考查一些差不多概
念,重要原理的懂得,一些關(guān)鍵技術(shù)和一些重要的原理引申出來的簡(jiǎn)單運(yùn)
算。按照這些考試特點(diǎn),復(fù)習(xí)的時(shí)候能夠采納適當(dāng)?shù)牟呗?,所以每個(gè)人的
方法差不多上不一樣的,適合自己的方法才是最好的方法。方法大伙兒能
夠自己慢慢去體會(huì),我的也不多講了,通過筆記和真題分析就能夠體現(xiàn)處
理。關(guān)于專門多關(guān)鍵的知識(shí)點(diǎn)和差不多概念,除了記住之外還要完全懂得,
否則出題的時(shí)候會(huì)進(jìn)行一些變換,或者引申一些運(yùn)算,那么就算你明白考
那個(gè)考點(diǎn),可能你也做不行。
在復(fù)習(xí)的過程中,你要記住:你不是要考一個(gè)專門高的分?jǐn)?shù),而是要
考一個(gè)通過的分?jǐn)?shù),在復(fù)習(xí)過程中能夠舍棄一些內(nèi)容,只要保證在大部分
差不多概念,關(guān)鍵技術(shù),重要原理和歷年考點(diǎn)上都把握住,能夠拿到需要
的分?jǐn)?shù)就能夠了。
二、復(fù)習(xí)筆記
1、嵌入式系統(tǒng)的定義
(1)定義:以應(yīng)用為中心,以運(yùn)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,習(xí)
慣應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用運(yùn)算機(jī)系
統(tǒng)。
(2)嵌入式系統(tǒng)進(jìn)展的4個(gè)時(shí)期:無操作系統(tǒng)時(shí)期、簡(jiǎn)單操作系統(tǒng)時(shí)
期、實(shí)時(shí)操作系統(tǒng)時(shí)期、面向Internet時(shí)期。
(3)知識(shí)產(chǎn)權(quán)核(IP核):具有知識(shí)產(chǎn)權(quán)的、功能具體、接口規(guī)范、
可在多個(gè)集成電路設(shè)計(jì)中重復(fù)使用的功能模塊,是實(shí)現(xiàn)系統(tǒng)芯片(SOC)
的差不多構(gòu)件。
(4)IP核模塊有行為、結(jié)構(gòu)和物理3級(jí)不同程度的設(shè)計(jì),對(duì)應(yīng)描述功
能行為的不同能夠分為三類:軟核、固核、硬核。
2、嵌入式系統(tǒng)的組成:硬件層、中間層、系統(tǒng)軟件層和應(yīng)用軟件層
(1)硬件層:嵌入式微處理器、儲(chǔ)備器、通用設(shè)備接口和I/O接口。
嵌入式核心模塊=微處理器+電源電路+時(shí)鐘電路+儲(chǔ)備器
Cache:位于主存和嵌入式微處理器內(nèi)核之間,存放的是最近一段時(shí)刻
微處理器使用最多的程序代碼和數(shù)據(jù)。它的要緊目標(biāo)是減小儲(chǔ)備器給微處
理器內(nèi)核造成的儲(chǔ)備器訪咨詢瓶頸,使處理速度更快。
(2)中間層(也稱為硬件抽象層HAL或者板級(jí)支持包BSP):它將系
統(tǒng)上層軟件和底層硬件分離開來,使系統(tǒng)上層軟件開發(fā)人員無需關(guān)系底層
硬件的具體情形,按照BSP層提供的接口開發(fā)即可。
BSP有兩個(gè)特點(diǎn):硬件有關(guān)性和操作系統(tǒng)有關(guān)性。
設(shè)計(jì)一個(gè)完整的BSP需要完成兩部分工作:
A、嵌入式系統(tǒng)的硬件初始化和BSP功能。
片級(jí)初始化:純硬件的初始化過程,把嵌入式微處理器從上電的默認(rèn)
狀態(tài)逐步設(shè)置成系統(tǒng)所要求的工作狀態(tài)。
板級(jí)初始化:包含軟硬件兩部分在內(nèi)的初始化過程,為隨后的系統(tǒng)初
始化和應(yīng)用程序建立硬件和軟件的運(yùn)行環(huán)境。
系統(tǒng)級(jí)初始化:以軟件為主的初始化過程,進(jìn)行操作系統(tǒng)的初始化。
B、設(shè)計(jì)硬件有關(guān)的設(shè)備驅(qū)動(dòng)。
(3)系統(tǒng)軟件層:由RTOS、文件系統(tǒng)、GUI、網(wǎng)絡(luò)系統(tǒng)及通用組件
模塊組成。
RTOS是嵌入式應(yīng)用軟件的基礎(chǔ)和開發(fā)平臺(tái)。
(4)應(yīng)用軟件:由基于實(shí)時(shí)系統(tǒng)開發(fā)的應(yīng)用程序組成。
3、實(shí)時(shí)系統(tǒng)
(1)定義:能在指定或確定的時(shí)刻內(nèi)完成系統(tǒng)功能和對(duì)外部或內(nèi)部、
同步或異步時(shí)刻做出響應(yīng)的系統(tǒng)。
(2)區(qū)別:通用系統(tǒng)一樣追求的是系統(tǒng)的平均響應(yīng)時(shí)刻和用戶的使用
方便;而實(shí)時(shí)系統(tǒng)要緊考慮的是在最壞情形下的系統(tǒng)行為。
(3)特點(diǎn):時(shí)刻約束性、可推測(cè)性、可靠性、與外部環(huán)境的交互性。
(4)硬實(shí)時(shí)(強(qiáng)實(shí)時(shí)):指應(yīng)用的時(shí)刻需求應(yīng)能夠得到完全滿足,否
則就造成重大安全事故,甚至造成重大的生命財(cái)產(chǎn)缺失和生態(tài)破壞,如:
航天、軍事。
(5)軟實(shí)時(shí)(弱實(shí)時(shí)):指某些應(yīng)用盡管提出了時(shí)刻的要求,但實(shí)時(shí)
任務(wù)偶然違反這種需求對(duì)系統(tǒng)運(yùn)行及環(huán)境可不能造成嚴(yán)峻阻礙,如:監(jiān)控
系統(tǒng)、實(shí)時(shí)信息采集系統(tǒng)。
(6)任務(wù)的約束包括:時(shí)刻約束、資源約束、執(zhí)行順序約束和性能約
束。
4、實(shí)時(shí)系統(tǒng)的調(diào)度
(1)調(diào)度:給定一組實(shí)時(shí)任務(wù)和系統(tǒng)資源,確定每個(gè)任務(wù)何時(shí)何地執(zhí)
行的整個(gè)過程。
(2)搶占式調(diào)度:通常是優(yōu)先級(jí)驅(qū)動(dòng)的調(diào)度,如uCOS。優(yōu)點(diǎn)是實(shí)時(shí)
性好、反應(yīng)快,調(diào)度算法相對(duì)簡(jiǎn)單,能夠保證高優(yōu)先級(jí)任務(wù)的時(shí)刻約束;
缺點(diǎn)是上下文切換多。
(3)非搶占式調(diào)度:通常是按時(shí)刻片分配的調(diào)度,不承諾任務(wù)在執(zhí)行
期間被中斷,任務(wù)一旦占用處理器就必須執(zhí)行完畢或自愿舍棄,如WinCE。
優(yōu)點(diǎn)是上下文切換少;缺點(diǎn)是處理器有效資源利用率低,可調(diào)度性不行。
(4)靜態(tài)表驅(qū)動(dòng)策略:系統(tǒng)在運(yùn)行前按照各任務(wù)的時(shí)刻約束及關(guān)聯(lián)關(guān)
系,采納某種搜索策略生成一張運(yùn)行時(shí)刻表,指明各任務(wù)的起始運(yùn)行時(shí)刻
及運(yùn)行時(shí)刻。
(5)優(yōu)先級(jí)驅(qū)動(dòng)策略:按照任務(wù)優(yōu)先級(jí)的高低確定任務(wù)的執(zhí)行順序。
(6)實(shí)時(shí)任務(wù)分類:周期任務(wù)、偶發(fā)任務(wù)、非周期任務(wù)。
(7)實(shí)時(shí)系統(tǒng)的通用結(jié)構(gòu)模型:數(shù)據(jù)采集任務(wù)實(shí)現(xiàn)傳感器數(shù)據(jù)的采集,
數(shù)據(jù)處理任務(wù)處理采集的數(shù)據(jù)、并將加工后的數(shù)據(jù)送到執(zhí)行機(jī)構(gòu)治理任務(wù)
操縱機(jī)構(gòu)執(zhí)行。
5、嵌入式微處理器體系結(jié)構(gòu)
(1)馮諾依曼結(jié)構(gòu):程序和數(shù)據(jù)共用一個(gè)儲(chǔ)備空間,程序指令儲(chǔ)備地
址和數(shù)據(jù)儲(chǔ)備地址指向同一個(gè)儲(chǔ)備器的不同物理位置,采納單一的地址及
數(shù)據(jù)總線,程序和數(shù)據(jù)的寬度相同。例如:8086、ARM7、MIPS-
(2)哈佛結(jié)構(gòu):程序和數(shù)據(jù)是兩個(gè)相互獨(dú)立的儲(chǔ)備器,每個(gè)儲(chǔ)備器獨(dú)
立編址、獨(dú)立訪咨詢,是一種將程序儲(chǔ)備和數(shù)據(jù)儲(chǔ)備分開的儲(chǔ)備器結(jié)構(gòu)。
例如:AVR、ARM9、ARMIO-
CS)CISC與RISC的特點(diǎn)比較(參照教程22頁(yè))。
運(yùn)算機(jī)執(zhí)行程序所需要的時(shí)刻P能夠用下面公式運(yùn)算:
P=IXCPIXT
I:高級(jí)語言程序編譯后在機(jī)器上運(yùn)行的指令數(shù)。
CPI:為執(zhí)行每條指令所需要的平均周期數(shù)。
T:每個(gè)機(jī)器周期的時(shí)刻。
(4)流水線的思想:在CPU中把一條指令的串行執(zhí)行過程變?yōu)槿舾?/p>
指令的子過程在CPU中重疊執(zhí)行。
(5)流水線的指標(biāo):
吞吐率:?jiǎn)挝粫r(shí)刻里流水線處理機(jī)流出的結(jié)果數(shù)。如果流水線的子過
程所用時(shí)刻不一樣長(zhǎng),則吞吐率應(yīng)為最長(zhǎng)子過程的倒數(shù)。
建立時(shí)刻:流水線開始工作到達(dá)最大吞吐率的時(shí)刻。若m個(gè)子過程所
用時(shí)刻一樣,均為t,則建立時(shí)刻T=mt。
(6)信息儲(chǔ)備的字節(jié)順序
A、儲(chǔ)備器單位:字節(jié)(8位)
B、字長(zhǎng)決定了微處理器的尋址能力,即虛擬地址空間的大小。
C、32位微處理器的虛擬地址空間位232,即4GB。
D、小端字節(jié)順序:低字節(jié)在內(nèi)存低地址處,高字節(jié)在內(nèi)存高地址處。
E、大端字節(jié)順序:高字節(jié)在內(nèi)存低地址處,低字節(jié)在內(nèi)存高地址處。
F、網(wǎng)絡(luò)設(shè)備的儲(chǔ)備順序咨詢題取決于OSI模型底層中的數(shù)據(jù)鏈路層。
6、邏輯電路基礎(chǔ)
(1)按照電路是否具有儲(chǔ)備功能,將邏輯電路劃分為:組合邏輯電路
和時(shí)序邏輯電路。
(2)組合邏輯電路:電路在任一時(shí)刻的輸出,僅取決于該時(shí)刻的輸入
信號(hào),而與輸入信號(hào)作用前電路的狀態(tài)無關(guān)。常用的邏輯電路有譯碼器和
多路選擇器等。
(3)時(shí)序邏輯電路:電路任一時(shí)刻的輸出不僅與該時(shí)刻的輸入有關(guān),
而且還與該時(shí)刻電路的狀態(tài)有關(guān)。因此,時(shí)序電路中必須包含經(jīng)歷元件。
觸發(fā)器是構(gòu)成時(shí)序邏輯電路的基礎(chǔ)。常用的時(shí)序邏輯電路有寄存器和計(jì)數(shù)
器等。
(4)真值表、布爾代數(shù)、摩根定律、門電路的概念。(教程28、29頁(yè))
(5)NOR(或非)和NAND(與非)的門電路稱為全能門電路,能夠
實(shí)現(xiàn)任何一種邏輯函數(shù)。
(6)譯碼器:多輸入多輸出的組合邏輯網(wǎng)絡(luò)。
每輸入一個(gè)n位的二進(jìn)制代碼,在m個(gè)輸出端中最多有一個(gè)有效。
當(dāng)m=2n是,為全譯碼;當(dāng)m<2n時(shí),為部分譯碼。
(7)由于集成電路的高電平輸出電流小,而低電平輸出電流相對(duì)比較
大,采納集成門電路直截了當(dāng)驅(qū)動(dòng)LED時(shí),較多采納低電平驅(qū)動(dòng)方式。液
晶七段字符顯示器LCD利用液晶有外加電場(chǎng)和無外加電場(chǎng)時(shí)不同的光學(xué)特
性來顯示字符。
(8)時(shí)鐘信號(hào)是時(shí)序邏輯的基礎(chǔ),它用于決定邏輯單元中的狀態(tài)合適
更新。同步是時(shí)鐘操縱系統(tǒng)中的要緊制約條件。
(9)在選用觸發(fā)器的時(shí)候,觸發(fā)方式是必須考慮的因素。觸發(fā)方式有
兩種:
電平觸發(fā)方式:具有結(jié)構(gòu)簡(jiǎn)單的有點(diǎn),常用來組成暫存器。
邊沿觸發(fā)方式:具有專門強(qiáng)的抗數(shù)據(jù)端干擾能力,常用來組成寄存器、
計(jì)數(shù)器等。
7、總線電路及信號(hào)驅(qū)動(dòng)
(1)總線是各種信號(hào)線的集合,是嵌入式系統(tǒng)中各部件之間傳送數(shù)據(jù)、
地址和操縱信息的公共通路。在同一時(shí)刻,每條通路線路上能夠傳輸一位
二進(jìn)制信號(hào)。按照總線所傳送的信息類型,能夠分為:數(shù)據(jù)總線(DB)、地
址總線(AB)和操縱總線(CB)o
(2)總線的要緊參數(shù):
總線帶寬:一定時(shí)刻內(nèi)總線上能夠傳送的數(shù)據(jù)量,一樣用MByte/s表
不O
總線寬度:總線能同時(shí)傳送的數(shù)據(jù)位數(shù)(bit),即人們常講的32位、6
4位等總線寬度的概念,也叫總線位寬??偩€的位寬越寬,總線每秒數(shù)據(jù)傳
輸率越大,也確實(shí)是總線帶寬越寬。
總線頻率:工作時(shí)鐘頻率以MHz為單位,工作頻率越高,則總線工作
速度越快,也即總線帶寬越寬。
總線帶寬=總線位寬X總線頻率/8,單位是MBps。
常用總線:ISA總線、PCI總線、HC總線、SPI總線、PC104總線和C
AN總線等。
(3)只有具有三態(tài)輸出的設(shè)備才能夠連接到數(shù)據(jù)總線上,常用的三態(tài)
門為輸出緩沖器。
(4)當(dāng)總線上所接的負(fù)載超過總線的負(fù)載能力時(shí),必須在總線和負(fù)載
之間加接緩沖器或驅(qū)動(dòng)器,最常用的是三態(tài)緩沖器,其作用是驅(qū)動(dòng)和隔離。
(5)采納總線復(fù)用技術(shù)能夠?qū)崿F(xiàn)數(shù)據(jù)總線和地址總線的共用。但會(huì)帶
來兩個(gè)咨詢題:
A、需要增加外部電路對(duì)總線信號(hào)進(jìn)行復(fù)用解耦,例如:地址鎖存器。
B、總線速度相對(duì)非復(fù)用總線系統(tǒng)低。
(6)兩類總線通信協(xié)議:同步方式、異步方式。
(7)對(duì)總線仲裁咨詢題的解決是以優(yōu)先級(jí)(優(yōu)先權(quán))的概念為基礎(chǔ)。
8、電平轉(zhuǎn)換電路
(1)數(shù)字集成電路能夠分為兩大類:雙極型集成電路(TTL)、金屬氧
化物半導(dǎo)體(MOS)。
(2)CMOS電路由于其靜態(tài)功耗極低,工作速度較高,抗干擾能力較
強(qiáng),被廣泛使用。
(3)解決TTL與CMOS電路接口困難的方法是在TTL電路輸出端與
電源之間接一上拉電阻R,上拉電阻R的取值由TTL的高電平輸出漏電流
IOH來決定,不同系列的TTL應(yīng)選用不同的R值。
9、可編程邏輯器件基礎(chǔ)(具體參見教程51到61頁(yè))
這方面的內(nèi)容,從總體上有個(gè)概念性的認(rèn)識(shí)應(yīng)該就能夠了。
10、嵌入式系統(tǒng)中信息表示與運(yùn)算基礎(chǔ)
(1)進(jìn)位計(jì)數(shù)制與轉(zhuǎn)換:如此比較簡(jiǎn)單,也應(yīng)該把握如何樣進(jìn)行換算,
有出題的可能。
(2)運(yùn)算機(jī)中數(shù)的表示:源碼、反碼與補(bǔ)碼。
正數(shù)的反碼與源碼相同,負(fù)數(shù)的反碼為該數(shù)的源碼除符號(hào)位外按位取
反。
正數(shù)的補(bǔ)碼與源碼相同,負(fù)數(shù)的補(bǔ)碼為該數(shù)的反碼加一。
例如一98的源碼:11100010B
反碼:10011101B
補(bǔ)碼:10011110B
(3)定點(diǎn)表示法:數(shù)的小數(shù)點(diǎn)的位置人為約定固定不變。
浮點(diǎn)表示法:數(shù)的小數(shù)點(diǎn)位置是浮動(dòng)的,它由尾數(shù)部分和階數(shù)部分組
成。
任意一個(gè)二進(jìn)制N總能夠?qū)懗桑篘=2PXS。S為尾數(shù),P為階數(shù)。
(4)漢字表示法(教程67、68頁(yè)),搞清晰GB2318-80中國(guó)標(biāo)碼和機(jī)
內(nèi)碼的變換。
(5)語音編碼中波形量化參數(shù)(可能會(huì)出簡(jiǎn)單的運(yùn)算題目哦)
采樣頻率:一秒內(nèi)采樣的次數(shù),反映了采樣點(diǎn)之間的間隔大小。
人耳的聽覺上限是20kHz,因此40kHz以上的采樣頻率足以使人中意。
CD唱片采納的采樣頻率是44.1kHz。
測(cè)量精度:樣本的量化等級(jí),目前標(biāo)準(zhǔn)采樣量級(jí)有8位和16位兩種。
聲道數(shù):?jiǎn)温暤篮土Ⅲw聲雙道。立體聲需要兩倍的儲(chǔ)備空間。
11、差錯(cuò)操縱編碼
(1)按照碼組的功能,能夠分為檢錯(cuò)碼和糾錯(cuò)碼兩類。檢錯(cuò)碼是指能
自動(dòng)發(fā)覺差錯(cuò)的碼,例如奇偶檢驗(yàn)碼;糾錯(cuò)碼是指不僅能發(fā)覺差錯(cuò)而且能
自動(dòng)糾正差錯(cuò)的碼,例如循環(huán)冗余校驗(yàn)碼。
(2)奇偶檢驗(yàn)碼、海明碼、循環(huán)冗余校驗(yàn)碼(CRC)。(教程70到77
頁(yè))
12、嵌入式系統(tǒng)的度量項(xiàng)目
(1)性能指標(biāo):分為部件性能指標(biāo)和綜合性能指標(biāo),要緊包括:吞吐
率、實(shí)時(shí)性和各種利用率。
(2)可靠性與安全性
可靠性是嵌入式系統(tǒng)最重要、最突出的差不多要求,是一個(gè)嵌入式系
統(tǒng)能正常工作的保證,一樣用平均故障間隔時(shí)刻MTBF來度量。
(3)可愛護(hù)性:一樣用平均修復(fù)時(shí)刻MTTR表示。
(4)可用性
(5)功耗
(6)環(huán)境習(xí)慣性
(7)通用性
(8)安全性
(9)保密性
(10)可擴(kuò)展性
性價(jià)比中的價(jià)格,除了直截了當(dāng)購(gòu)買嵌入式系統(tǒng)的價(jià)格外,還應(yīng)包含
安裝費(fèi)用、若干年的運(yùn)行修理費(fèi)用和軟件租用費(fèi)。
13、嵌入式系統(tǒng)的評(píng)判方法:測(cè)量法和模型法
(1)測(cè)量法是最直截了當(dāng)最差不多的方法,需要解決兩個(gè)咨詢題:
A、按照研究的目的,確定要測(cè)量的系統(tǒng)參數(shù)。
B、選擇測(cè)量的工具和方式。
(2)測(cè)量的方式有兩種:采樣方式和事件跟蹤方式。
(3)模型法分為分析模型法和模擬模型法。分析模型法是用一些數(shù)學(xué)
方程去刻畫系統(tǒng)的模型,而模擬模型法是用模擬程序的運(yùn)行去動(dòng)態(tài)表達(dá)嵌
入式系統(tǒng)的狀態(tài),而進(jìn)行系統(tǒng)統(tǒng)計(jì)分析,得出性能指標(biāo)。
(4)分析模型法中使用最多的是排隊(duì)模型,它包括三個(gè)部分:輸入流、
排隊(duì)規(guī)則和服務(wù)機(jī)構(gòu)。
(5)使用模型對(duì)系統(tǒng)進(jìn)行評(píng)判需要解決3個(gè)咨詢題:設(shè)計(jì)模型、解模
型、校準(zhǔn)和證實(shí)模型。
三、真題解析
1、2007年4、5題
若每一條指令都能夠分解為取指、分析和執(zhí)行三步。已知取指時(shí)刻t
取指=44t,分析時(shí)刻t分析=34t,執(zhí)行時(shí)刻t執(zhí)行=5Z\t。如果按串行方
式執(zhí)行完100條指令需要(4)△t。如果按照流水線方式執(zhí)行,執(zhí)行完1
00條指令需要(5)Ato
(4)A.1190B.1195C.1200D.1205
(5)A.504B.507C.508D.510
〈答案〉:C、B
考查流水線技術(shù)知識(shí)點(diǎn)。
按照串行的方式,執(zhí)行完一條指令才能執(zhí)行下一條指令,那么執(zhí)行完1
00條指令的時(shí)刻為:(4+3+5)X100=1200
按照流水線的方式,能夠同時(shí)執(zhí)行多條指令。在第一條指令進(jìn)行分析
的時(shí)候,第二條指令差不多開始取指;當(dāng)?shù)谝粭l指令進(jìn)行執(zhí)行的時(shí)候,第
二條指令進(jìn)行分析,第三條指令取指;當(dāng)?shù)诙l指令進(jìn)行執(zhí)行完的時(shí)候,
第三條指令差不多分析完成。依此類推,當(dāng)?shù)谝粭l指令完成之后,每一個(gè)
執(zhí)行的周期就能夠完成一條指令。需要注意的是,如果流水線的子過程所
用時(shí)刻不一樣長(zhǎng),則吞吐率應(yīng)以最長(zhǎng)子過程來運(yùn)算。因此,我們能夠運(yùn)算
得100條指令的執(zhí)行時(shí)刻為:(4+3+5)+(100-1)X5=507o
2、2007年24題
某總線有104根信號(hào)線,其中數(shù)據(jù)總線(DB)32根,若總線工作頻率
為33MHz,則其理論最大傳輸率為(24)o(注:本題答案中的B表示B
yte)
(24)A.33MB/sB.64MB/sC.132MB/sD.164MB/s
〈答案〉:C
考查總線那個(gè)知識(shí)點(diǎn)。
按照上面的筆記,總線帶寬=總線位寬義總線頻率/8=32X33/8=132
MB/So
3、2007年26題
某儲(chǔ)備器數(shù)據(jù)總線寬度為32bit,存取周期為250ns,則該儲(chǔ)備器帶寬
為(26)o(注:本題答案中的B表示Byte)
(26)A.8X106B/sB.16X106B/sC.16X108B/sD.32X106B/s
〈答案〉:B
考查總線那個(gè)知識(shí)點(diǎn)。
儲(chǔ)備器帶寬即總線帶寬,總線頻率為:l/250ns=4X106
儲(chǔ)備器帶寬為:32X4X106/8=16X106B/s
4、2007年27題
處理機(jī)要緊由處理器、儲(chǔ)備器和總線組成,總線包括(27)o
(27)A.數(shù)據(jù)總線、串行總線、邏輯總線、物理總線
B.并行總線、地址總線、邏輯總線、物理總線
C.并行總線、串行總線、全雙工總線
D.數(shù)據(jù)總線、地址總線、操縱總線
〈答案〉:D
考查總線那個(gè)知識(shí)點(diǎn),差不多概念的考查。
5、2007年35題
三極管是可控的開關(guān)器件,其飽和與截止?fàn)顟B(tài)分別對(duì)應(yīng)開關(guān)的接通和
斷開狀態(tài)。UBE為基極輸入電壓,VTH為基極域值電壓,如果UBETH,
開關(guān)應(yīng)處于(35)狀態(tài)。
(35)A.接通B.三態(tài)C.斷開D.高阻
〈答案〉:C
考查電路中最差不多的基礎(chǔ)知識(shí)點(diǎn),我覺得做不對(duì)的全然不能算嵌入
式系統(tǒng)開發(fā)入門。
6、2007年36題
如下圖所示,若低位地址(A0-A11)接在內(nèi)存芯片地址引腳上,高位
地址(A12-A19)進(jìn)行片選譯碼(其中,A14和A16沒有參加譯碼),且片
選信號(hào)低電平有效,則對(duì)下圖所示的譯碼器,不屬于此譯碼空間的地址為
(36)o
(36)A.ABOOOH-ABFFFHB.BBOOOH-BBFFFH
C.EFOOOH-EFFFFHD.FEOOOH-FEFFFH
〈答案〉:D
考查數(shù)字電路中譯碼知識(shí)和儲(chǔ)備系統(tǒng)中統(tǒng)一編址的咨詢題,相對(duì)來講,
那個(gè)題目有點(diǎn)難度,然而關(guān)于學(xué)習(xí)過和親身做過單片機(jī)的兄弟來講,最差
不多只是了。
7、2007年46題
(46)完全把系統(tǒng)軟件和硬件部分隔離開來,從而大大提升了系統(tǒng)的
可移植性。
(46)A.硬件抽象層B.驅(qū)動(dòng)映射層C.硬件交互層D.中間層
〈答案〉:A
考查嵌入式系統(tǒng)組成中的概念。
8、2006年3題
設(shè)指令由取指、分析、執(zhí)行3個(gè)子部件完成,每個(gè)子部件的工作周期
為采納常規(guī)標(biāo)量單流水線處理機(jī)。若連續(xù)執(zhí)行10條指令,則共需要時(shí)
刻(3)Ato
(3)A.8B.10C.12D.14
〈答案〉:C
考查流水線技術(shù)知識(shí)點(diǎn)。
3+(10-1)Xl=12
9、2006年4、5題
某運(yùn)算機(jī)的時(shí)鐘頻率為400MHz,測(cè)試運(yùn)算機(jī)的程序使用4種類型的指
令。每種指令的數(shù)量及所需要的指令時(shí)鐘數(shù)(CPI)如下表所示,則該運(yùn)算
機(jī)的指令平均時(shí)鐘數(shù)為(4);該運(yùn)算機(jī)的運(yùn)算速度為(5)MIPSo
指令類型指令數(shù)目(條)每條指令需要的時(shí)鐘數(shù)
11600001
2300002
3240004
4160008
(4)A.1.85B.1.93C.2.36D.3.75
(5)A.106.7B.169.5C.207.3D.216.2
〈答案〉:B、C
考查指令運(yùn)行方面的簡(jiǎn)單運(yùn)算。
平均時(shí)鐘數(shù)=(160000+2X30000+4X24000+8X16000)/(160000
+30000+24000+16000)=1.93
MIPS是指每秒種執(zhí)行多少百萬條指令,即106。
運(yùn)算機(jī)的運(yùn)行數(shù)度為:400/1.93=207.25=207.3MIPS
9、2006年12題
運(yùn)算機(jī)要對(duì)聲音信號(hào)進(jìn)行處理時(shí),必須將它轉(zhuǎn)換為數(shù)字聲音信號(hào)。最
差不多的聲音信號(hào)數(shù)字化方法時(shí)取樣一量化法。若量化后的每個(gè)聲音樣本
用2個(gè)字節(jié)表示,則量化辨論率是(12)
(12)A.l/2B.1/1024C.1/65536D.1/131072
〈答案〉:C
考查聲音編碼種量化運(yùn)算的知識(shí)點(diǎn)。
2個(gè)字節(jié)是16位,其量化辨論率位1/1016=l/65536o
10、2006年13題
某幅圖像具有640X460個(gè)象素點(diǎn),若每個(gè)象素具有8位的顏色深度,
則可表示(13)種不同的顏色,通過5:1壓縮后,其圖像數(shù)據(jù)需要占用(1
4)(Byte)的儲(chǔ)備空間。
(13)A.8B.256C.512D.1024
(14)A.61440B.307200C.384000D.3072000
〈答案〉:B、A
考查圖像數(shù)據(jù)儲(chǔ)備運(yùn)算的知識(shí)點(diǎn)。
8位顏色深度能夠表示28=256種顏色深度。
通過5:1壓縮后的數(shù)據(jù)大小為:640X480X8/8/5=61440o
11、2006年23題
若某邏輯門輸入A、B和輸出F的波形如下圖所示,則F(A,B)的表達(dá)
式為(23)
(23)A.F=ABB.F=A+B
C.F=A異或BD.F=A(B的非)
AII_II
BI
FII
〈答案〉:C
考查數(shù)字電路的最差不多知識(shí)點(diǎn),我覺得那個(gè)都搞不清晰專門難通過
那個(gè)考試。
12、2006年24題
一個(gè)4位的二進(jìn)制計(jì)數(shù)器,由0000狀態(tài)開始,通過25個(gè)時(shí)鐘脈沖后,
該計(jì)數(shù)器的狀態(tài)為24
(24)A.1100B.1000C.1001D.1010
〈答案〉:C
考查數(shù)字電路的最差不多知識(shí)點(diǎn),相對(duì)上面一題有點(diǎn)難,需要對(duì)計(jì)數(shù)
器的工作原理有比較清晰的懂得。那個(gè)也是搞嵌入式系統(tǒng)的基礎(chǔ)中的基礎(chǔ),
參考教程38頁(yè)或有關(guān)的數(shù)電書籍。
4位的計(jì)數(shù)器,其計(jì)數(shù)范疇是24=16,0000開始通過16個(gè)時(shí)鐘脈沖之
后又回到了開始的狀態(tài)0000。25-16=9,因此講通過25個(gè)時(shí)鐘之后,其
計(jì)數(shù)器的數(shù)值應(yīng)該是9=1001。
13、2006年25題
穩(wěn)壓二極管構(gòu)成的穩(wěn)壓電路的接法是(25)
(25)A.穩(wěn)壓管與負(fù)載電阻串聯(lián)。
B.穩(wěn)壓管與限流電阻并聯(lián)。
C.限流電阻與穩(wěn)壓管串聯(lián)后,在與負(fù)載電阻串聯(lián)。
D.限流電阻與穩(wěn)壓管串聯(lián)后,在與負(fù)載電阻并聯(lián)。
〈答案〉:D
考查模擬電路的最差不多知識(shí)點(diǎn),實(shí)在太簡(jiǎn)單,不明白從那兒開始分
析了。
14、2006年26題
以下敘述中,不符合RISC指令系統(tǒng)特點(diǎn)的是(26)
(26)A.指令長(zhǎng)度固定,指令種類少。
B.尋址方式種類豐富,指令功能盡量增強(qiáng)。
C.設(shè)置大量通用寄存器,訪咨詢儲(chǔ)備器指令簡(jiǎn)單。
D.選取使用頻率較高的一些簡(jiǎn)單指令。
〈答案>:B
考查RISC與CICS的區(qū)別,考生應(yīng)該清晰他們的區(qū)別,參加教程22
頁(yè)。
15、2006年27題
通常所講的32位微處理器是指(27)
(27)A.地址總線的寬度為32位B.處理器數(shù)據(jù)長(zhǎng)度只能為32位
C.CPU字長(zhǎng)為32位D.通用寄存器數(shù)目為32位
〈答案〉:C
考查字長(zhǎng)的概念和總線寬度的懂得,參加教程25頁(yè)。
16、2006年28題
在32位總線系統(tǒng)中,若時(shí)鐘頻率為500MHz,傳送一個(gè)32位字需要5
個(gè)時(shí)鐘周期,則該總線系統(tǒng)的數(shù)據(jù)傳送速率為(28)MB/So
(28)A.200B.400C.600D.800
〈答案>:B
考查總線和數(shù)據(jù)傳輸方面的知識(shí)點(diǎn)。
5個(gè)時(shí)鐘周期能夠傳送4個(gè)Byte。
每秒中能夠傳送:4X(500/5)=400MB/So
17、2006年30題
評(píng)判一個(gè)運(yùn)算機(jī)系統(tǒng)時(shí),通常要緊使用(30)來衡量系統(tǒng)的可靠性。
(30)A.評(píng)判響應(yīng)時(shí)刻
B.平均無故障時(shí)刻(MTBF)
C.平均修復(fù)時(shí)刻
D.數(shù)據(jù)處理速率
〈答案〉:B
考查嵌入式系統(tǒng)性能評(píng)判中重要知識(shí)點(diǎn)??催^了就會(huì)做,每什么分析
的,參見教程77頁(yè)。
四、小結(jié)
就我個(gè)人的意見,從內(nèi)容來看,嵌入式系統(tǒng)基礎(chǔ)知識(shí)的范疇專門廣,
知識(shí)點(diǎn)專門多,而且沒有專門強(qiáng)的邏輯性,顯得比較凌亂,專門難將他們
有序的組織在一起。然而也不要可怕,內(nèi)容盡管多而亂,然而考試的題目
都比較簡(jiǎn)單,有些題目幾乎是所見即所得。只要你做過嵌入式或者單片機(jī)
方面的工作,你都能做出來。一些運(yùn)算的題目也是一些差不多概念的延伸。
通過分析歷年的真題,一方面能夠把握考試的出題方式和考試難度,同時(shí)
能夠把握這部分內(nèi)容的出題方向和復(fù)習(xí)的方法。從兩年的考試題目數(shù)量分
布來看,06年10道,07年7道,數(shù)量有所較少,然而我覺得這不是一個(gè)
趨勢(shì),08年應(yīng)該可不能少于7道題目的。這部分在嵌入式系統(tǒng)設(shè)計(jì)里面是
相當(dāng)重要的,有一個(gè)良好的基礎(chǔ)才能做好下面的情況。如果復(fù)習(xí)得好,將
這7、8分題目拿到手,那么你離45分左右的及格線又邁進(jìn)了一大步了。
預(yù)處理器(Preprocessor)
1.用預(yù)處理指令#define聲明一個(gè)常數(shù),用以表明1年中有多少秒(忽
略閏年咨詢題)
#defineSECONDS_PER_YEAR(60*60*24*365)UL
我在這想看到幾件情況:
1)#define語法的差不多知識(shí)(例如:不能以分號(hào)終止,括號(hào)的使用,等等)
2)懂得預(yù)處理器將為你運(yùn)算常數(shù)表達(dá)式的值,因此直截了當(dāng)寫出你如何運(yùn)
算一年中有多少秒而不是運(yùn)算出實(shí)際的值,是更清晰而沒有代價(jià)的。
3)意識(shí)到那個(gè)表達(dá)式將使一個(gè)16位機(jī)的整型數(shù)溢出-因此要用到長(zhǎng)整型符
號(hào)L,告訴編譯器那個(gè)常數(shù)是的長(zhǎng)整型數(shù)。
4)如果你在你的表達(dá)式中用到UL(表示無符號(hào)長(zhǎng)整型),那么你有了一個(gè)
好的起點(diǎn)。記住,第一印象專門重要。
2.寫一個(gè)"標(biāo)準(zhǔn)"宏MIN,那個(gè)宏輸入兩個(gè)參數(shù)并返回較小的一個(gè)。
#defineMIN(A,B)((A)<=(B)?(A):(B))
那個(gè)測(cè)試是為下面的目的而設(shè)的:
1)標(biāo)識(shí)#define在宏中應(yīng)用的差不多知識(shí)。這是專門重要的。因?yàn)樵谇?/p>
人(inline)操作符變?yōu)闃?biāo)準(zhǔn)C的一部分之前,宏是方便產(chǎn)生嵌入代碼的唯獨(dú)
方法,關(guān)于嵌入式系統(tǒng)來講,為了能達(dá)到要求的性能,嵌入代碼經(jīng)常是必
須的方法。
2)三重條件操作符的知識(shí)。那個(gè)操作符存在C語言中的緣故是它使得編譯
器能產(chǎn)生比if-then-else更優(yōu)的代碼,了解那個(gè)用法是專門重要的。
3)懂得在宏中小心地把參數(shù)用括號(hào)括起來
4)我也用那個(gè)咨詢題開始討論宏的副作用,例如:當(dāng)你寫下面的代碼時(shí)會(huì)
發(fā)生什么事?
least=MIN(*p++,b);
3.預(yù)處理器標(biāo)識(shí)#error的目的是什么?
如果你不明白答案,請(qǐng)看參考文獻(xiàn)1。這咨詢題對(duì)區(qū)分一個(gè)正
常的伙計(jì)和一個(gè)書呆子是專門有用的。只有書呆子才會(huì)讀C語言課本的附
錄去找出象這種咨詢題的答案。所以如果你不是在找一個(gè)書呆子,那么應(yīng)
試者最好期望自己不要明白答案。
死循環(huán)(Infiniteloops)
4.嵌入式系統(tǒng)中經(jīng)常要用到無限循環(huán),你如何樣用C編寫死循環(huán)呢?
那個(gè)咨詢題用幾個(gè)解決方案。我首選的方案是:
while(l)
(
}
一些程序員更喜愛如下方案:
for(;;)
(
}
那個(gè)實(shí)現(xiàn)方式讓我為難,因?yàn)槟莻€(gè)語法沒有確切表達(dá)到底
如何回事。如果一個(gè)應(yīng)試者給出那個(gè)作為方案,我將用那個(gè)作為一個(gè)機(jī)會(huì)
去探究他們?nèi)绱俗龅牟畈欢嘣怼H绻麄兊牟畈欢啻鸢甘牵骸拔冶唤讨?/p>
此做,但從沒有想到過什么原因。"這會(huì)給我留下一個(gè)壞印象。
第三個(gè)方案是用goto
Loop:
gotoLoop;
應(yīng)試者如給出上面的方案,這講明或者他是一個(gè)匯編語言程序員(這也許
是好事)或者他是一個(gè)想進(jìn)入新領(lǐng)域的BASIC/FORTRAN程序員。
數(shù)據(jù)聲明(Datadeclarations)
5.用變量a給出下面的定義
a)一個(gè)整型數(shù)(Aninteger)
b)一個(gè)指向整型數(shù)的指針(Apointertoaninteger)
c)一個(gè)指向指針的的指針,它指向的指針是指向一個(gè)整型數(shù)(Apointert
oapointertoanintege)r
d)一個(gè)有10個(gè)整型數(shù)的數(shù)組(Anarrayof10integers)
e)一個(gè)有10個(gè)指針的數(shù)組,該指針是指向一個(gè)整型數(shù)的。(Anarrayof1
0pointerstointegers)
f)一個(gè)指向有10個(gè)整型數(shù)數(shù)組的指針(Apointertoanarrayof10inte
gers)
g)一個(gè)指向函數(shù)的指針,該函數(shù)有一個(gè)整型參數(shù)并返回一個(gè)整型數(shù)(Apo
intertoathattakesanintegerasanargumentandreturnsaninteger)
h)一個(gè)有10個(gè)指針的數(shù)組,該指針指向一個(gè)函數(shù),該函數(shù)有一個(gè)整型參數(shù)
并返回一個(gè)整型數(shù)(Anarrayoftenpointerstosthattakeanintegerar
gumentandreturnaninteger)
答案是:
a)inta;//Aninteger
b)int*a;//Apointertoaninteger
c)int**a;//Apointertoapointertoaninteger
d)inta[10];//Anarrayof10integers
e)int*a[10];//Anarrayof10pointerstointegers
f)int(*a)[10];//Apointertoanarrayof10integers
g)int(*a)(int);//Apointertoaathattakesanintegerargumentandret
urnsaninteger
h)int(*a[10])(int);//Anarrayof10pointerstosthattakeanintegerar
gumentandreturnaninteger
人們經(jīng)常聲稱那個(gè)地點(diǎn)有幾個(gè)咨詢題是那種要翻一下書
才能回答的咨詢題,我同意這種講法。當(dāng)我寫這篇文章時(shí),為了確定語法
的正確性,我的確查了一下書。然而當(dāng)我被面試的時(shí)候,我期望被咨詢到
那個(gè)咨詢題(或者相近的咨詢題)。因?yàn)樵诒幻嬖嚨倪@段時(shí)刻里,我確定我
明白那個(gè)咨詢題的答案。應(yīng)試者如果不明白所有的答案(或至少大部分答
案),那么也就沒有為這次面試做預(yù)備,如果該面試者沒有為這次面試做預(yù)
備,那么他又能什么原因出預(yù)備呢?
Static
6.關(guān)鍵字static的作用是什么?
那個(gè)簡(jiǎn)單的咨詢題專門少有人能回答完全。在C語言中,關(guān)鍵
字static有三個(gè)明顯的作用:
1)在函數(shù)體,一個(gè)被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過程中堅(jiān)持其值
不變。
2)在模塊內(nèi)(但在函數(shù)體外),一個(gè)被聲明為靜態(tài)的變量能夠被模塊內(nèi)所用
函數(shù)訪咨詢,但不能被模塊外其它函數(shù)訪咨詢。它是一個(gè)本地的全局變量。
3)在模塊內(nèi),一個(gè)被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。
那確實(shí)是,那個(gè)函數(shù)被限制在聲明它的模塊的本地范疇內(nèi)使用。
大多數(shù)應(yīng)試者能正確回答第一部分,一部分能正確回答第
二部分,同是專門少的人能懂得第三部分。這是一個(gè)應(yīng)試者的嚴(yán)峻的缺點(diǎn),
因?yàn)樗黠@不懂得本地化數(shù)據(jù)和代碼范疇的好處和重要性。
Const
constinta;
intconsta;
constint*a;
int*consta;
intconst*aconst;
/******/
前兩個(gè)的作用是一樣,a是一個(gè)常整型數(shù)。第三個(gè)意味著a是
一個(gè)指向常整型數(shù)的指針(也確實(shí)是,整型數(shù)是不可修改的,但指針能夠)。
第四個(gè)意思a是一個(gè)指向整型數(shù)的常指針(也確實(shí)是講,指針指向的整型
數(shù)是能夠修改的,但指針是不可修改的)。最后一個(gè)意味著a是一個(gè)指向常
整型數(shù)的常指針(也確實(shí)是講,指針指向的整型數(shù)是不可修改的,同時(shí)指
針也是不可修改的)。如果應(yīng)試者能正確回答這些咨詢題,那么他就給我留
下了一個(gè)好印象。順帶提一句,也許你可能會(huì)咨詢,即使不用關(guān)鍵字cons
t,也依舊能專門容易寫出功能正確的程序,那么我什么原因還要如此看重
關(guān)鍵字const呢?我也如下的幾下理由:
1)關(guān)鍵字const的作用是為給讀你代碼的人傳達(dá)專門有用的信息,實(shí)際上,
聲明一個(gè)參數(shù)為常量是為了告訴了用戶那個(gè)參數(shù)的應(yīng)用目的。如果你曾花
專門多時(shí)刻清理其它人留下的垃圾,你就會(huì)專門快學(xué)會(huì)感謝這點(diǎn)余外的信
息。(所以,懂得用const的程序員專門少會(huì)留下的垃圾讓別人來清理的。)
2)通過給優(yōu)化器一些附加的信息,使用關(guān)鍵字const也許能產(chǎn)生更緊湊的
代碼。
3)合理地使用關(guān)鍵字const能夠使編譯器專門自然地愛護(hù)那些不期望被改
變的參數(shù),防止其被無意的代碼修改。簡(jiǎn)而言之,如此能夠減少bug的顯
現(xiàn)。
Volatile
8.關(guān)鍵字volatile有什么含意?并給出三個(gè)不同的例子。
一個(gè)定義為volatile的變量是講這變量可能會(huì)被意想不到地改
變,如此,編譯器就可不能去假設(shè)那個(gè)變量的值了。精確地講確實(shí)是,優(yōu)
化器在用到那個(gè)變量時(shí)必須每次都小心地重新讀取那個(gè)變量的值,而不是
使用儲(chǔ)存在寄存器里的備份。下面是volatile變量的幾個(gè)例子:
1)并行設(shè)備的硬件寄存器(如:狀態(tài)寄存器)
2)一個(gè)中斷服務(wù)子程序中會(huì)訪咨詢到的非自動(dòng)變量(Non-automaticvariable
s)
3)多線程應(yīng)用中被幾個(gè)任務(wù)共享的變量
回答不出那個(gè)咨詢題的人是可不能被雇傭的。我認(rèn)為這是
區(qū)分C程序員和嵌入式系統(tǒng)程序員的最差不多的咨詢題。搞嵌入式的家伙
們經(jīng)常同硬件、中斷、RTOS等等打交道,所有這些都要求用到volatile變
量。不懂得volatile的內(nèi)容將會(huì)帶來災(zāi)難。
假設(shè)被面試者正確地回答了這是咨詢題(嗯,懷疑是否會(huì)是如
此),我將略微深究一下,看一下這家伙是不是直正懂得volatile完全的重
要性。
1)一個(gè)參數(shù)既能夠是const還能夠是volatile嗎?講明什么原因。
2)一個(gè)指針能夠是volatile嗎?講明什么原因。
3)下面的函數(shù)有什么錯(cuò)誤:
intsquare(volatileint*ptr)
(
return*ptr**ptr;
)
下面是答案:
1)是的。一個(gè)例子是只讀的狀態(tài)寄存器。它是volatile因?yàn)樗赡鼙灰庀氩?/p>
到地改變。它是const因?yàn)槌绦虿粦?yīng)該試圖去修改它。
2)是的。盡管這并不專門常見。一個(gè)例子是當(dāng)一個(gè)中服務(wù)子程序修該一個(gè)
指向一個(gè)buffer的指針時(shí)。
3)這段代碼有點(diǎn)變態(tài)。這段代碼的目的是用來返指針*ptr指向值的平方,
然而,由于*ptr指向一個(gè)volatile型參數(shù),編譯器將產(chǎn)生類似下面的代碼:
intsquare(volatileint*ptr)
(
inta,b;
a-*ptr;
b=*ptr;
returna*b;
)
由于*ptr的值可能被意想不到地該變,因此a和b可能是不同的。結(jié)果,
這段代碼可能返不是你所期望的平方值!正確的代碼如下:
longsquare(volatileint*ptr)
(
inta;
a-*ptr;
returna*a;
位操作(Bitmanipulation)
9.嵌入式系統(tǒng)總是要用戶對(duì)變量或寄存器進(jìn)行位操作。給定一個(gè)整型
變量a,寫兩段代碼,第一個(gè)設(shè)置a的bit3,第二個(gè)清除a的bit3。在以
上兩個(gè)操作中,要保持其它位不變。
對(duì)那個(gè)咨詢題有三種差不多的反應(yīng)
1)不明白如何下手。該被面者從沒做過任何嵌入式系統(tǒng)的工作。
2)用bitfieldsoBitfields是被扔到C語言死角的東西,它保證你的代碼在
不同編譯器之間是不可移植的,同時(shí)也保證了的你的代碼是不可重用的。
我最近不幸看到Infineon為其較復(fù)雜的通信芯片寫的驅(qū)動(dòng)程序,它用到了b
itfields因此完全對(duì)我無用,因?yàn)槲业木幾g器用其它的方式來實(shí)現(xiàn)bitfields
的。從道德講:永久不要讓一個(gè)非嵌入式的家伙粘實(shí)際硬件的邊。
3)用#defines和bitmasks操作。這是一個(gè)有極高可移植性的方法,是應(yīng)
該被用到的方法。最佳的解決方案如下:
#defineBIT3(0x1?3)
staticinta;
voidset_bit3(void)
(
a|=BIT3;
)
voidclear_bit3(void)
(
a&=-BIT3;
)
一些人喜愛為設(shè)置和清除值而定義一個(gè)掩碼同時(shí)定義一
些講明常數(shù),這也是能夠同意的。我期望看到幾個(gè)要點(diǎn):講明常數(shù)、|=和&
=~操作。
訪咨詢固定的內(nèi)存位置(Accessingfixedmemorylocations)
10.嵌入式系統(tǒng)經(jīng)常具有要求程序員去訪咨詢某特定的內(nèi)存位置的特
點(diǎn)。在某工程中,要求設(shè)置一絕對(duì)地址為0x67a9的整型變量的值為0xaa66。
編譯器是一個(gè)純粹的ANSI編譯器。寫代碼去完成這一任務(wù)。
這一咨詢題測(cè)試你是否明白為了訪咨詢一絕對(duì)地址把一個(gè)整
型數(shù)強(qiáng)制轉(zhuǎn)換(typecast)為一指針是合法的。這一咨詢題的實(shí)現(xiàn)方式隨著
個(gè)人風(fēng)格不同而不同。典型的類似代碼如下:
int*ptr;
ptr=(int*)0x67a9;
*ptr=Oxaa55;
Amoreobscureapproachis:
一個(gè)較晦澀的方法是:
*(int*const)(0x67a9)=0xaa55;
即使你的品味更接近第二種方案,但我建議你在面試時(shí)使用第一種方
案。
中斷(Interrupts)
11.中斷是嵌入式系統(tǒng)中重要的組成部分,這導(dǎo)致了專門多編譯開發(fā)商
提供一種擴(kuò)展一讓標(biāo)準(zhǔn)C支持中斷。具代表事實(shí)是,產(chǎn)生了一個(gè)新的關(guān)鍵
字—interrupto下面的代碼就使用了—interrupt關(guān)鍵字去定義了一個(gè)中斷服
務(wù)子程序(ISR),請(qǐng)?jiān)u論一下這段代碼的。
—interruptdoublecompute_area(doubleradius)
(
doublearea=PI*radius*radius;
printf("\nArea=%f,area);
returnarea;
)
那個(gè)函數(shù)有太多的錯(cuò)誤了,以至讓人不知從何講起了:
1)ISR不能返回一個(gè)值。如果你不懂那個(gè),那么你可不能被雇用的。
2)ISR不能傳遞參數(shù)。如果你沒有看到這一點(diǎn),你被雇用的機(jī)會(huì)等同第一
項(xiàng)。
3)在許多的處理器/編譯器中,浮點(diǎn)一樣差不多上不可重入的。有些處理器
/編譯器需要讓額處的寄存器入棧,有些處理器/編譯器確實(shí)是不承諾在ISR
中做浮點(diǎn)運(yùn)算。此外,ISR應(yīng)該是短而有效率的,在ISR中做浮點(diǎn)運(yùn)確實(shí)是
不明智的。
4)與第三點(diǎn)一脈相承,printf()經(jīng)常有重入和性能上的咨詢題。如果你丟掉
了第三和第四點(diǎn),我可不能太為難你的。不用講,如果你能得到后兩點(diǎn),
那么你的被雇用前景越來越光明了。
代碼例子(Codeexamples)
12.下面的代碼輸出是什么,什么原因?
voidfoo(void)
(
unsignedinta=6;
intb=-20;
(a+b>6)?puts(">6"):puts("<=6");
)
那個(gè)咨詢題測(cè)試你是否懂得C語言中的整數(shù)自動(dòng)轉(zhuǎn)換原則,我
發(fā)覺有些開發(fā)者懂得極少這些東西。不管如何
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)殖買賣合同范例
- 企業(yè)購(gòu)買二手房合同范例
- 供貨框架協(xié)議合同范例
- loft公寓合同范例
- 便利店進(jìn)貨合同范本
- 臨時(shí)供貨款合同范例
- 基于顯微特征與集成深度學(xué)習(xí)的古陶瓷窯口分類研究
- 研發(fā)投入對(duì)比亞迪創(chuàng)新績(jī)效的影響
- DNA存儲(chǔ)糾錯(cuò)、安全與文件系統(tǒng)研究
- 基于全面預(yù)算管理的H公司成本管控問題研究
- 基于人工智能的供應(yīng)鏈協(xié)同優(yōu)化平臺(tái)建設(shè)方案
- 《大學(xué)語文》普通高等院校語文課程完整全套教學(xué)課件
- 預(yù)防校園欺凌主題班會(huì)課件(共36張課件)
- 伸縮臂式22m高空作業(yè)車安全操作規(guī)程
- 全國(guó)國(guó)家版圖知識(shí)競(jìng)賽題庫(kù)及答案(中小學(xué)組)
- 顧客滿意度調(diào)查分析報(bào)告表
- 《托育服務(wù)政策法規(guī)與職業(yè)倫理》全套教學(xué)課件
- 湖北省武漢市實(shí)驗(yàn)外國(guó)語學(xué)校小學(xué)部小學(xué)六年級(jí)小升初期末語文試題(含答案)
- 山東省專升本綜合一(機(jī)械設(shè)計(jì)制造及其自動(dòng)化)模擬試卷1(共264題)
- 高職生職業(yè)生涯規(guī)劃與就業(yè)指導(dǎo) 課件全套 崔麗娜 第1-8章 揭開生涯規(guī)劃面紗 走進(jìn)生涯規(guī)劃- 助力職業(yè)發(fā)展 職場(chǎng)適應(yīng)
- 2024營(yíng)運(yùn)純電動(dòng)汽車換電服務(wù)技術(shù)要求
評(píng)論
0/150
提交評(píng)論