版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
更多電子資料請(qǐng)登錄賽微電子網(wǎng).com嵌入式工程師考試題目作者嵌入式玩耍者一、引言自《嵌入式系統(tǒng)設(shè)計(jì)師考試復(fù)習(xí)筆記之存儲(chǔ)管理篇》在嵌入式在線的博客出現(xiàn)后,意外的得到很多朋友的關(guān)注和評(píng)論,收到不少朋友的郵件,問(wèn)一些有關(guān)考試的問(wèn)題,希望得到我的復(fù)習(xí)筆記的其他部分。我非常感謝他們,他們的熱切關(guān)注,使我有了繼續(xù)往下寫(xiě)的無(wú)限動(dòng)力,使我萌生了將我以前的復(fù)習(xí)筆記、考試經(jīng)驗(yàn)結(jié)合大綱教程并重新按《教程》的章節(jié)順序整理一份適合考生復(fù)習(xí)的筆記手冊(cè),筆記后面再分析歷年的真題,按章節(jié)考點(diǎn)找出相關(guān)的考題進(jìn)行分析,希望能和有愛(ài)好的人們一起討論討論。嵌入式系統(tǒng)設(shè)計(jì)師的一天考試分為上午和下午部分,兩部分的考試方式、試題難度、考點(diǎn)分布和復(fù)習(xí)方法都是不同的。這次我們討論的是嵌入式系統(tǒng)基礎(chǔ)知識(shí),我本人覺(jué)得,這部分出下午大題的也許性不大,重要是分布在上午的75道選擇題之中。從歷年的真題和考試大綱來(lái)看,上午的選擇題重要考察一些基本概念,重要原理的理解,一些關(guān)鍵技術(shù)和一些重要的原理引申出來(lái)的簡(jiǎn)樸計(jì)算。根據(jù)這些考試特點(diǎn),復(fù)習(xí)的時(shí)候可以采用適當(dāng)?shù)牟呗?,?dāng)然每個(gè)人的方法都是不同樣的,適合自己的辦法才是最佳的辦法。方法大家可以自己慢慢去體會(huì),我的也不多說(shuō)了,通過(guò)筆記和真題分析就可以體現(xiàn)解決。對(duì)于很多關(guān)鍵的知識(shí)點(diǎn)和基本概念,除了記住之外還要徹底理解,否則出題的時(shí)候會(huì)進(jìn)行一些變換,或者引申一些計(jì)算,那么就算你知道考那個(gè)考點(diǎn),也許你也做不好。在復(fù)習(xí)的過(guò)程中,你要記住:你不是要考一個(gè)很高的分?jǐn)?shù),而是要考一個(gè)通過(guò)的分?jǐn)?shù),在復(fù)習(xí)過(guò)程中可以放棄一些內(nèi)容,只要保證在大部分基本概念,關(guān)鍵技術(shù),重要原理和歷年考點(diǎn)上都把握住,可以拿到需要的分?jǐn)?shù)就可以了。二、復(fù)習(xí)筆記1、嵌入式系統(tǒng)的定義(1)定義:以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格規(guī)定的專(zhuān)用計(jì)算機(jī)系統(tǒng)。(2)嵌入式系統(tǒng)發(fā)展的4個(gè)階段:無(wú)操作系統(tǒng)階段、簡(jiǎn)樸操作系統(tǒng)階段、實(shí)時(shí)操作系統(tǒng)階段、面向Internet階段。(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ì),相應(yīng)描述功能行為的不同可以分為三類(lèi):軟核、固核、硬核。2、嵌入式系統(tǒng)的組成:硬件層、中間層、系統(tǒng)軟件層和應(yīng)用軟件層(1)硬件層:嵌入式微解決器、存儲(chǔ)器、通用設(shè)備接口和I/O接口。嵌入式核心模塊=微解決器+電源電路+時(shí)鐘電路+存儲(chǔ)器Cache:位于主存和嵌入式微解決器內(nèi)核之間,存放的是最近一段時(shí)間微解決器使用最多的程序代碼和數(shù)據(jù)。它的重要目的是減小存儲(chǔ)器給微解決器內(nèi)核導(dǎo)致的存儲(chǔ)器訪問(wèn)瓶頸,使解決速度更快。(2)中間層(也稱(chēng)為硬件抽象層HAL或者板級(jí)支持包BSP):它將系統(tǒng)上層軟件和底層硬件分離開(kāi)來(lái),使系統(tǒng)上層軟件開(kāi)發(fā)人員無(wú)需關(guān)系底層硬件的具體情況,根據(jù)BSP層提供的接口開(kāi)發(fā)即可。BSP有兩個(gè)特點(diǎn):硬件相關(guān)性和操作系統(tǒng)相關(guān)性。設(shè)計(jì)一個(gè)完整的BSP需要完畢兩部分工作:A、嵌入式系統(tǒng)的硬件初始化和BSP功能。片級(jí)初始化:純硬件的初始化過(guò)程,把嵌入式微解決器從上電的默認(rèn)狀態(tài)逐步設(shè)立成系統(tǒng)所規(guī)定的工作狀態(tài)。板級(jí)初始化:包含軟硬件兩部分在內(nèi)的初始化過(guò)程,為隨后的系統(tǒng)初始化和應(yīng)用程序建立硬件和軟件的運(yùn)營(yíng)環(huán)境。系統(tǒng)級(jí)初始化:以軟件為主的初始化過(guò)程,進(jìn)行操作系統(tǒng)的初始化。B、設(shè)計(jì)硬件相關(guān)的設(shè)備驅(qū)動(dòng)。(3)系統(tǒng)軟件層:由RTOS、文獻(xiàn)系統(tǒng)、GUI、網(wǎng)絡(luò)系統(tǒng)及通用組件模塊組成。RTOS是嵌入式應(yīng)用軟件的基礎(chǔ)和開(kāi)發(fā)平臺(tái)。(4)應(yīng)用軟件:由基于實(shí)時(shí)系統(tǒng)開(kāi)發(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í)間和用戶(hù)的使用方便;而實(shí)時(shí)系統(tǒng)重要考慮的是在最壞情況下的系統(tǒng)行為。(3)特點(diǎn):時(shí)間約束性、可預(yù)測(cè)性、可靠性、與外部環(huán)境的交互性。(4)硬實(shí)時(shí)(強(qiáng)實(shí)時(shí)):指應(yīng)用的時(shí)間需求應(yīng)可以得到完全滿足,否則就導(dǎo)致重大安全事故,甚至導(dǎo)致重大的生命財(cái)產(chǎn)損失和生態(tài)破壞,如:航天、軍事。(5)軟實(shí)時(shí)(弱實(shí)時(shí)):指某些應(yīng)用雖然提出了時(shí)間的規(guī)定,但實(shí)時(shí)任務(wù)偶爾違反這種需求對(duì)系統(tǒng)運(yùn)營(yíng)及環(huán)境不會(huì)導(dǎo)致嚴(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è)過(guò)程。(2)搶占式調(diào)度:通常是優(yōu)先級(jí)驅(qū)動(dòng)的調(diào)度,如uCOS。優(yōu)點(diǎn)是實(shí)時(shí)性好、反映快,調(diào)度算法相對(duì)簡(jiǎn)樸,可以保證高優(yōu)先級(jí)任務(wù)的時(shí)間約束;缺陷是上下文切換多。(3)非搶占式調(diào)度:通常是準(zhǔn)時(shí)間片分派的調(diào)度,不允許任務(wù)在執(zhí)行期間被中斷,任務(wù)一旦占用解決器就必須執(zhí)行完畢或自愿放棄,如WinCE。優(yōu)點(diǎn)是上下文切換少;缺陷是解決器有效資源運(yùn)用率低,可調(diào)度性不好。(4)靜態(tài)表驅(qū)動(dòng)策略:系統(tǒng)在運(yùn)營(yíng)前根據(jù)各任務(wù)的時(shí)間約束及關(guān)聯(lián)關(guān)系,采用某種搜索策略生成一張運(yùn)營(yíng)時(shí)刻表,指明各任務(wù)的起始運(yùn)營(yíng)時(shí)刻及運(yùn)營(yíng)時(shí)間。(5)優(yōu)先級(jí)驅(qū)動(dòng)策略:按照任務(wù)優(yōu)先級(jí)的高低擬定任務(wù)的執(zhí)行順序。(6)實(shí)時(shí)任務(wù)分類(lèi):周期任務(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ú)立訪問(wèn),是一種將程序存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開(kāi)的存儲(chǔ)器結(jié)構(gòu)。例如:AVR、ARM9、ARM10…(3)CISC與RISC的特點(diǎn)比較(參照教程22頁(yè))。計(jì)算機(jī)執(zhí)行程序所需要的時(shí)間P可以用下面公式計(jì)算:P=I×CPI×TI:高級(jí)語(yǔ)言程序編譯后在機(jī)器上運(yùn)營(yíng)的指令數(shù)。CPI:為執(zhí)行每條指令所需要的平均周期數(shù)。T:每個(gè)機(jī)器周期的時(shí)間。(4)流水線的思想:在CPU中把一條指令的串行執(zhí)行過(guò)程變?yōu)槿舾芍噶畹淖舆^(guò)程在CPU中重疊執(zhí)行。(5)流水線的指標(biāo):吞吐率:?jiǎn)挝粫r(shí)間里流水線解決機(jī)流出的結(jié)果數(shù)。假如流水線的子過(guò)程所用時(shí)間不同樣長(zhǎng),則吞吐率應(yīng)為最長(zhǎng)子過(guò)程的倒數(shù)。建立時(shí)間:流水線開(kāi)始工作到達(dá)最大吞吐率的時(shí)間。若m個(gè)子過(guò)程所用時(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ǔ)順序問(wèn)題取決于OSI模型底層中的數(shù)據(jù)鏈路層。6、邏輯電路基礎(chǔ)(1)根據(jù)電路是否具有存儲(chǔ)功能,將邏輯電路劃分為:組合邏輯電路和時(shí)序邏輯電路。(2)組合邏輯電路:電路在任一時(shí)刻的輸出,僅取決于該時(shí)刻的輸入信號(hào),而與輸入信號(hào)作用前電路的狀態(tài)無(wú)關(guān)。常用的邏輯電路有譯碼器和多路選擇器等。(3)時(shí)序邏輯電路:電路任一時(shí)刻的輸出不僅與該時(shí)刻的輸入有關(guān),并且還與該時(shí)刻電路的狀態(tài)有關(guān)。因此,時(shí)序電路中必須包含記憶元件。觸發(fā)器是構(gòu)成時(shí)序邏輯電路的基礎(chǔ)。常用的時(shí)序邏輯電路有寄存器和計(jì)數(shù)器等。(4)真值表、布爾代數(shù)、摩根定律、門(mén)電路的概念。(教程28、29頁(yè))(5)NOR(或非)和NAND(與非)的門(mén)電路稱(chēng)為全能門(mén)電路,可以實(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ì)比較大,采用集成門(mén)電路直接驅(qū)動(dòng)LED時(shí),較多采用低電平驅(qū)動(dòng)方式。液晶七段字符顯示器LCD運(yùn)用液晶有外加電場(chǎng)和無(wú)外加電場(chǎng)時(shí)不同的光學(xué)特性來(lái)顯示字符。(8)時(shí)鐘信號(hào)是時(shí)序邏輯的基礎(chǔ),它用于決定邏輯單元中的狀態(tài)合適更新。同步是時(shí)鐘控制系統(tǒng)中的重要制約條件。(9)在選用觸發(fā)器的時(shí)候,觸發(fā)方式是必須考慮的因素。觸發(fā)方式有兩種:電平觸發(fā)方式:具有結(jié)構(gòu)簡(jiǎn)樸的有點(diǎn),常用來(lái)組成暫存器。邊沿觸發(fā)方式:具有很強(qiáng)的抗數(shù)據(jù)端干擾能力,常用來(lái)組成寄存器、計(jì)數(shù)器等。7、總線電路及信號(hào)驅(qū)動(dòng)(1)總線是各種信號(hào)線的集合,是嵌入式系統(tǒng)中各部件之間傳送數(shù)據(jù)、地址和控制信息的公共通路。在同一時(shí)刻,每條通路線路上可以傳輸一位二進(jìn)制信號(hào)。按照總線所傳送的信息類(lèi)型,可以分為:數(shù)據(jù)總線(DB)、地址總線(AB)和控制總線(CB)。(2)總線的重要參數(shù):總線帶寬:一定期間內(nèi)總線上可以傳送的數(shù)據(jù)量,一般用MByte/s表達(dá)。總線寬度:總線能同時(shí)傳送的數(shù)據(jù)位數(shù)(bit),即人們常說(shuō)的32位、64位等總線寬度的概念,也叫總線位寬??偩€的位寬越寬,總線每秒數(shù)據(jù)傳輸率越大,也就是總線帶寬越寬??偩€頻率:工作時(shí)鐘頻率以MHz為單位,工作頻率越高,則總線工作速度越快,也即總線帶寬越寬。總線帶寬=總線位寬×總線頻率/8,單位是MBps。常用總線:ISA總線、PCI總線、IIC總線、SPI總線、PC104總線和CAN總線等。(3)只有具有三態(tài)輸出的設(shè)備才可以連接到數(shù)據(jù)總線上,常用的三態(tài)門(mén)為輸出緩沖器。(4)當(dāng)總線上所接的負(fù)載超過(guò)總線的負(fù)載能力時(shí),必須在總線和負(fù)載之間加接緩沖器或驅(qū)動(dòng)器,最常用的是三態(tài)緩沖器,其作用是驅(qū)動(dòng)和隔離。(5)采用總線復(fù)用技術(shù)可以實(shí)現(xiàn)數(shù)據(jù)總線和地址總線的共用。但會(huì)帶來(lái)兩個(gè)問(wèn)題:A、需要增長(zhǎng)外部電路對(duì)總線信號(hào)進(jìn)行復(fù)用解耦,例如:地址鎖存器。B、總線速度相對(duì)非復(fù)用總線系統(tǒng)低。(6)兩類(lèi)總線通信協(xié)議:同步方式、異步方式。(7)對(duì)總線仲裁問(wèn)題的解決是以?xún)?yōu)先級(jí)(優(yōu)先權(quán))的概念為基礎(chǔ)。8、電平轉(zhuǎn)換電路(1)數(shù)字集成電路可以分為兩大類(lèi):雙極型集成電路(TTL)、金屬氧化物半導(dǎo)體(MOS)。(2)CMOS電路由于其靜態(tài)功耗極低,工作速度較高,抗干擾能力較強(qiáng),被廣泛使用。(3)解決TTL與CMOS電路接口困難的辦法是在TTL電路輸出端與電源之間接一上拉電阻R,上拉電阻R的取值由TTL的高電平輸出漏電流IOH來(lái)決定,不同系列的TTL應(yīng)選用不同的R值。9、可編程邏輯器件基礎(chǔ)(具體參見(jiàn)教程51到61頁(yè))這方面的內(nèi)容,從總體上有個(gè)概念性的結(jié)識(shí)應(yīng)當(dāng)就可以了。10、嵌入式系統(tǒng)中信息表達(dá)與運(yùn)算基礎(chǔ)(1)進(jìn)位計(jì)數(shù)制與轉(zhuǎn)換:這樣比較簡(jiǎn)樸,也應(yīng)當(dāng)掌握怎么樣進(jìn)行換算,有出題的也許。(2)計(jì)算機(jī)中數(shù)的表達(dá):源碼、反碼與補(bǔ)碼。正數(shù)的反碼與源碼相同,負(fù)數(shù)的反碼為該數(shù)的源碼除符號(hào)位外按位取反。正數(shù)的補(bǔ)碼與源碼相同,負(fù)數(shù)的補(bǔ)碼為該數(shù)的反碼加一。例如-98的源碼:11100010B反碼:10011101B補(bǔ)碼:10011110B(3)定點(diǎn)表達(dá)法:數(shù)的小數(shù)點(diǎn)的位置人為約定固定不變。浮點(diǎn)表達(dá)法:數(shù)的小數(shù)點(diǎn)位置是浮動(dòng)的,它由尾數(shù)部分和階數(shù)部分組成。任意一個(gè)二進(jìn)制N總可以寫(xiě)成:N=2P×S。S為尾數(shù),P為階數(shù)。(4)漢字表達(dá)法(教程67、68頁(yè)),搞清楚GB2318-80中國(guó)標(biāo)碼和機(jī)內(nèi)碼的變換。(5)語(yǔ)音編碼中波形量化參數(shù)(也許會(huì)出簡(jiǎn)樸的計(jì)算題目哦)采樣頻率:一秒內(nèi)采樣的次數(shù),反映了采樣點(diǎn)之間的間隔大小。人耳的聽(tīng)覺(jué)上限是20kHz,因此40kHz以上的采樣頻率足以使人滿意。CD唱片采用的采樣頻率是44.1kHz。測(cè)量精度:樣本的量化等級(jí),目前標(biāo)準(zhǔn)采樣量級(jí)有8位和16位兩種。聲道數(shù):?jiǎn)温暤篮土Ⅲw聲雙道。立體聲需要兩倍的存儲(chǔ)空間。11、差錯(cuò)控制編碼(1)根據(jù)碼組的功能,可以分為檢錯(cuò)碼和糾錯(cuò)碼兩類(lèi)。檢錯(cuò)碼是指能自動(dòng)發(fā)現(xiàn)差錯(cuò)的碼,例如奇偶檢查碼;糾錯(cuò)碼是指不僅能發(fā)現(xiàn)差錯(cuò)并且能自動(dòng)糾正差錯(cuò)的碼,例如循環(huán)冗余校驗(yàn)碼。(2)奇偶檢查碼、海明碼、循環(huán)冗余校驗(yàn)碼(CRC)。(教程70到77頁(yè))12、嵌入式系統(tǒng)的度量項(xiàng)目(1)性能指標(biāo):分為部件性能指標(biāo)和綜合性能指標(biāo),重要涉及:吞吐率、實(shí)時(shí)性和各種運(yùn)用率。(2)可靠性與安全性可靠性是嵌入式系統(tǒng)最重要、最突出的基本規(guī)定,是一個(gè)嵌入式系統(tǒng)能正常工作的保證,一般用平均故障間隔時(shí)間MTBF來(lái)度量。(3)可維護(hù)性:一般用平均修復(fù)時(shí)間MTTR表達(dá)。(4)可用性(5)功耗(6)環(huán)境適應(yīng)性(7)通用性(8)安全性(9)保密性(10)可擴(kuò)展性性?xún)r(jià)比中的價(jià)格,除了直接購(gòu)買(mǎi)嵌入式系統(tǒng)的價(jià)格外,還應(yīng)包含安裝費(fèi)用、若干年的運(yùn)營(yíng)維修費(fèi)用和軟件租用費(fèi)。13、嵌入式系統(tǒng)的評(píng)價(jià)方法:測(cè)量法和模型法(1)測(cè)量法是最直接最基本的方法,需要解決兩個(gè)問(wèn)題:A、根據(jù)研究的目的,擬定要測(cè)量的系統(tǒng)參數(shù)。B、選擇測(cè)量的工具和方式。(2)測(cè)量的方式有兩種:采樣方式和事件跟蹤方式。(3)模型法分為分析模型法和模擬模型法。分析模型法是用一些數(shù)學(xué)方程去刻畫(huà)系統(tǒng)的模型,而模擬模型法是用模擬程序的運(yùn)營(yíng)去動(dòng)態(tài)表達(dá)嵌入式系統(tǒng)的狀態(tài),而進(jìn)行系統(tǒng)記錄分析,得出性能指標(biāo)。(4)分析模型法中使用最多的是排隊(duì)模型,它涉及三個(gè)部分:輸入流、排隊(duì)規(guī)則和服務(wù)機(jī)構(gòu)。(5)使用模型對(duì)系統(tǒng)進(jìn)行評(píng)價(jià)需要解決3個(gè)問(wèn)題:設(shè)計(jì)模型、解模型、校準(zhǔn)和證實(shí)模型。三、真題解析1、2023年4、5題若每一條指令都可以分解為取指、分析和執(zhí)行三步。已知取指時(shí)間t取指=4△t,分析時(shí)間t分析=3△t,執(zhí)行時(shí)間t執(zhí)行=5△t。假如按串行方式執(zhí)行完100條指令需要(4)△t。假如按照流水線方式執(zhí)行,執(zhí)行完100條指令需要(5)△t。(4)A.1190B.1195C.1200D.1205(5)A.504B.507C.508D.510<答案>:C、B考察流水線技術(shù)知識(shí)點(diǎn)。按照串行的方式,執(zhí)行完一條指令才干執(zhí)行下一條指令,那么執(zhí)行完100條指令的時(shí)間為:(4+3+5)×100=1200按照流水線的方式,可以同時(shí)執(zhí)行多條指令。在第一條指令進(jìn)行分析的時(shí)候,第二條指令已經(jīng)開(kāi)始取指;當(dāng)?shù)谝粭l指令進(jìn)行執(zhí)行的時(shí)候,第二條指令進(jìn)行分析,第三條指令取指;當(dāng)?shù)诙l指令進(jìn)行執(zhí)行完的時(shí)候,第三條指令已經(jīng)分析完畢。依此類(lèi)推,當(dāng)?shù)谝粭l指令完畢之后,每一個(gè)執(zhí)行的周期就可以完畢一條指令。需要注意的是,假如流水線的子過(guò)程所用時(shí)間不同樣長(zhǎng),則吞吐率應(yīng)以最長(zhǎng)子過(guò)程來(lái)計(jì)算。因此,我們可以計(jì)算得100條指令的執(zhí)行時(shí)間為:(4+3+5)+(100-1)×5=507。2、2023年24題某總線有104根信號(hào)線,其中數(shù)據(jù)總線(DB)32根,若總線工作頻率為33MHz,則其理論最大傳輸率為(24)。(注:本題答案中的B表達(dá)Byte)(24)A.33MB/sB.64MB/sC.132MB/sD.164MB/s<答案>:C考察總線這個(gè)知識(shí)點(diǎn)。根據(jù)上面的筆記,總線帶寬=總線位寬×總線頻率/8=32×33/8=132MB/s。3、2023年26題某存儲(chǔ)器數(shù)據(jù)總線寬度為32bit,存取周期為250ns,則該存儲(chǔ)器帶寬為(26)。(注:本題答案中的B表達(dá)Byte)(26)A.8×106B/sB.16×106B/sC.16×108B/sD.32×106B/s<答案>:B考察總線這個(gè)知識(shí)點(diǎn)。存儲(chǔ)器帶寬即總線帶寬,總線頻率為:1/250ns=4×106存儲(chǔ)器帶寬為:32×4×106/8=16×106B/s4、2023年27題解決機(jī)重要由解決器、存儲(chǔ)器和總線組成,總線涉及(27)。(27)A.數(shù)據(jù)總線、串行總線、邏輯總線、物理總線B.并行總線、地址總線、邏輯總線、物理總線C.并行總線、串行總線、全雙工總線D.數(shù)據(jù)總線、地址總線、控制總線<答案>:D考察總線這個(gè)知識(shí)點(diǎn),基本概念的考察。5、2023年35題三極管是可控的開(kāi)關(guān)器件,其飽和與截止?fàn)顟B(tài)分別相應(yīng)開(kāi)關(guān)的接通和斷開(kāi)狀態(tài)。UBE為基極輸入電壓,VTH為基極域值電壓,假如UBETH,開(kāi)關(guān)應(yīng)處在(35)狀態(tài)。(35)A.接通B.三態(tài)C.斷開(kāi)D.高阻<答案>:C考察電路中最基本的基礎(chǔ)知識(shí)點(diǎn),我覺(jué)得做不對(duì)的主線不能算嵌入式系統(tǒng)開(kāi)發(fā)入門(mén)。6、2023年36題如下圖所示,若低位地址(A0-A11)接在內(nèi)存芯片地址引腳上,高位地址(A12-A19)進(jìn)行片選譯碼(其中,A14和A16沒(méi)有參與譯碼),且片選信號(hào)低電平有效,則對(duì)下圖所示的譯碼器,不屬于此譯碼空間的地址為(36)。(36)A.AB000H~ABFFFHB.BB000H~BBFFFHC.EF000H~EFFFFHD.FE000H~FEFFFH<答案>:D考察數(shù)字電路中譯碼知識(shí)和存儲(chǔ)系統(tǒng)中統(tǒng)一編址的問(wèn)題,相對(duì)來(lái)說(shuō),這個(gè)題目有點(diǎn)難度,但是對(duì)于學(xué)習(xí)過(guò)和親身做過(guò)單片機(jī)的兄弟來(lái)說(shuō),最基本但是了。7、2023年46題(46)完全把系統(tǒng)軟件和硬件部分隔離開(kāi)來(lái),從而大大提高了系統(tǒng)的可移植性。(46)A.硬件抽象層B.驅(qū)動(dòng)映射層C.硬件交互層D.中間層<答案>:A考察嵌入式系統(tǒng)組成中的概念。8、2023年3題設(shè)指令由取指、分析、執(zhí)行3個(gè)子部件完畢,每個(gè)子部件的工作周期為△t,采用常規(guī)標(biāo)量單流水線解決機(jī)。若連續(xù)執(zhí)行10條指令,則共需要時(shí)間(3)△t。(3)A.8B.10C.12D.14<答案>:C考察流水線技術(shù)知識(shí)點(diǎn)。3+(10-1)×1=129、2023年4、5題某計(jì)算機(jī)的時(shí)鐘頻率為400MHz,測(cè)試計(jì)算機(jī)的程序使用4種類(lèi)型的指令。每種指令的數(shù)量及所需要的指令時(shí)鐘數(shù)(CPI)如下表所示,則該計(jì)算機(jī)的指令平均時(shí)鐘數(shù)為(4);該計(jì)算機(jī)的運(yùn)算速度為(5)MIPS。指令類(lèi)型指令數(shù)目(條)每條指令需要的時(shí)鐘數(shù)11600001230000232400044160008(4)A.1.85B.1.93C(5)A.106.7B.169.5C.207.3D.216.2<答案>:B、C考察指令運(yùn)營(yíng)方面的簡(jiǎn)樸計(jì)算。平均時(shí)鐘數(shù)=(160000+2×30000+4×24000+8×16000)/(160000+30000+24000+16000)=1.93MIPS是指每秒種執(zhí)行多少百萬(wàn)條指令,即106。計(jì)算機(jī)的運(yùn)營(yíng)數(shù)度為:400/1.93=207.25=207.3MIPS9、2023年12題計(jì)算機(jī)要對(duì)聲音信號(hào)進(jìn)行解決時(shí),必須將它轉(zhuǎn)換為數(shù)字聲音信號(hào)。最基本的聲音信號(hào)數(shù)字化方法時(shí)取樣-量化法。若量化后的每個(gè)聲音樣本用2個(gè)字節(jié)表達(dá),則量化分辨率是(12)(12)A.1/2B.1/1024C.1/65536D.1/131072<答案>:C考察聲音編碼種量化計(jì)算的知識(shí)點(diǎn)。2個(gè)字節(jié)是16位,其量化分辨率位1/1016=1/65536。10、2023年13題某幅圖像具有640×460個(gè)象素點(diǎn),若每個(gè)象素具有8位的顏色深度,則可表達(dá)(13)種不同的顏色,通過(guò)5:1壓縮后,其圖像數(shù)據(jù)需要占用(14)(Byte)的存儲(chǔ)空間。(13)A.8B.256C.512D.1024(14)A.61440B.307200C.384000D.3072023<答案>:B、A考察圖像數(shù)據(jù)存儲(chǔ)計(jì)算的知識(shí)點(diǎn)。8位顏色深度可以表達(dá)28=256種顏色深度。通過(guò)5:1壓縮后的數(shù)據(jù)大小為:640×480×8/8/5=61440。11、2023年23題若某邏輯門(mén)輸入A、B和輸出F的波形如下圖所示,則F(A,B)的表達(dá)式為(23)(23)A.F=ABB.F=A+BC.F=A異或BD.F=A(B的非)_____A_____(dá)__||____(dá)||_____(dá)___(dá)______B__(dá)___(dá)__||______(dá)__(dá)_____(dá)____(dá)F__(dá)________(dá)_||___(dá)____<答案>:C考察數(shù)字電路的最基本知識(shí)點(diǎn),我覺(jué)得這個(gè)都搞不清楚很難通過(guò)這個(gè)考試。12、2023年24題一個(gè)4位的二進(jìn)制計(jì)數(shù)器,由0000狀態(tài)開(kāi)始,通過(guò)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ù)電書(shū)籍。4位的計(jì)數(shù)器,其計(jì)數(shù)范圍是24=16,0000開(kāi)始通過(guò)16個(gè)時(shí)鐘脈沖之后又回到了開(kāi)始的狀態(tài)0000。25-16=9,所以說(shuō)通過(guò)25個(gè)時(shí)鐘之后,其計(jì)數(shù)器的數(shù)值應(yīng)當(dāng)是9=1001。13、2023年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)樸,不知道從那里開(kāi)始分析了。14、2023年26題以下敘述中,不符合RISC指令系統(tǒng)特點(diǎn)的是(26)(26)A.指令長(zhǎng)度固定,指令種類(lèi)少。B.尋址方式種類(lèi)豐富,指令功能盡量增強(qiáng)。C.設(shè)立大量通用寄存器,訪問(wèn)存儲(chǔ)器指令簡(jiǎn)樸。D.選取使用頻率較高的一些簡(jiǎn)樸指令。<答案>:B考察RISC與CICS的區(qū)別,考生應(yīng)當(dāng)清楚他們的區(qū)別,參與教程22頁(yè)。15、2023年27題通常所說(shuō)的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、2023年28題在32位總線系統(tǒng)中,若時(shí)鐘頻率為500MHz,傳送一個(gè)32位字需要5個(gè)時(shí)鐘周期,則該總線系統(tǒng)的數(shù)據(jù)傳送速率為(28)MB/s。(28)A.200B.400C.600D.800<答案>:B考察總線和數(shù)據(jù)傳輸方面的知識(shí)點(diǎn)。5個(gè)時(shí)鐘周期可以傳送4個(gè)Byte。每秒中可以傳送:4×(500/5)=400MB/s。17、2023年30題評(píng)價(jià)一個(gè)計(jì)算機(jī)系統(tǒng)時(shí),通常重要使用(30)來(lái)衡量系統(tǒng)的可靠性。(30)A.評(píng)價(jià)響應(yīng)時(shí)間B.平均無(wú)端障時(shí)間(MTBF)C.平均修復(fù)時(shí)間D.?dāng)?shù)據(jù)解決速率<答案>:B考察嵌入式系統(tǒng)性能評(píng)價(jià)中重要知識(shí)點(diǎn)??催^(guò)了就會(huì)做,每什么分析的,參見(jiàn)教程77頁(yè)。四、小結(jié)就我個(gè)人的意見(jiàn),從內(nèi)容來(lái)看,嵌入式系統(tǒng)基礎(chǔ)知識(shí)的范圍很廣,知識(shí)點(diǎn)很多,并且沒(méi)有很強(qiáng)的邏輯性,顯得比較凌亂,很難將他們有序的組織在一起。但是也不要膽怯,內(nèi)容雖然多而亂,但是考試的題目都比較簡(jiǎn)樸,有些題目幾乎是所見(jiàn)即所得。只要你做過(guò)嵌入式或者單片機(jī)方面的工作,你都能做出來(lái)。一些計(jì)算的題目也是一些基本概念的延伸。通過(guò)度析歷年的真題,一方面可以把握考試的出題方式和考試難度,同時(shí)可以把握這部分內(nèi)容的出題方向和復(fù)習(xí)的方法。從兩年的考試題目數(shù)量分布來(lái)看,202310道,20237道,數(shù)量有所較少,但是我覺(jué)得這不是一個(gè)趨勢(shì),2023應(yīng)當(dāng)不會(huì)少于7道題目的。這部分在嵌入式系統(tǒng)設(shè)計(jì)里面是相稱(chēng)重要的,有一個(gè)良好的基礎(chǔ)才干做好下面的事情。假如復(fù)習(xí)得好,將這7、8分題目拿到手,那么你離45分左右的及格線又邁進(jìn)了一大步了。預(yù)解決器(Preprocessor)1.用預(yù)解決指令#define聲明一個(gè)常數(shù),用以表白1年中有多少秒(忽略閏年問(wèn)題)#defineSECONDS_PER_YEAR(60*60*24*365)UL我在這想看到幾件事情:1)#define語(yǔ)法的基本知識(shí)(例如:不能以分號(hào)結(jié)束,括號(hào)的使用,等等)2)懂得預(yù)解決器將為你計(jì)算常數(shù)表達(dá)式的值,因此直接寫(xiě)出你如何計(jì)算一年中有多少秒而不是計(jì)算出實(shí)際的值,是更清楚而沒(méi)有代價(jià)的。3)意識(shí)到這個(gè)表達(dá)式將使一個(gè)16位機(jī)的整型數(shù)溢出-因此要用到長(zhǎng)整型符號(hào)L,告訴編譯器這個(gè)常數(shù)是的長(zhǎng)整型數(shù)。4)假如你在你的表達(dá)式中用到UL(表達(dá)無(wú)符號(hào)長(zhǎng)整型),那么你有了一個(gè)好的起點(diǎn)。記住,第一印象很重要。2.寫(xiě)一個(gè)"標(biāo)準(zhǔn)"宏MIN,這個(gè)宏輸入兩個(gè)參數(shù)并返回較小的一個(gè)。#defineMIN(A,B)((A)<=(B)?(A):(B))這個(gè)測(cè)試是為下面的目的而設(shè)的:1)標(biāo)記#define在宏中應(yīng)用的基本知識(shí)。這是很重要的。由于在嵌入(inline)操作符變?yōu)闃?biāo)準(zhǔn)C的一部分之前,宏是方便產(chǎn)生嵌入代碼的唯一方法,對(duì)于嵌入式系統(tǒng)來(lái)說(shuō),為了能達(dá)成規(guī)定的性能,嵌入代碼經(jīng)常是必須的方法。2)三重條件操作符的知識(shí)。這個(gè)操作符存在C語(yǔ)言中的因素是它使得編譯器能產(chǎn)生比if-then-else更優(yōu)的代碼,了解這個(gè)用法是很重要的。3)懂得在宏中小心地把參數(shù)用括號(hào)括起來(lái)4)我也用這個(gè)問(wèn)題開(kāi)始討論宏的副作用,例如:當(dāng)你寫(xiě)下面的代碼時(shí)會(huì)發(fā)生什么事?least=MIN(*p++,b);3.預(yù)解決器標(biāo)記#error的目的是什么?假如你不知道答案,請(qǐng)看參考文獻(xiàn)1。這問(wèn)題對(duì)區(qū)分一個(gè)正常的伙計(jì)和一個(gè)書(shū)呆子是很有用的。只有書(shū)呆子才會(huì)讀C語(yǔ)言課本的附錄去找出象這種問(wèn)題的答案。當(dāng)然假如你不是在找一個(gè)書(shū)呆子,那么應(yīng)試者最佳希望自己不要知道答案。死循環(huán)(Infiniteloops)4.嵌入式系統(tǒng)中經(jīng)常要用到無(wú)限循環(huán),你怎么樣用C編寫(xiě)死循環(huán)呢?這個(gè)問(wèn)題用幾個(gè)解決方案。我首選的方案是:while(1){}一些程序員更喜歡如下方案:for(;;){}這個(gè)實(shí)現(xiàn)方式讓我為難,由于這個(gè)語(yǔ)法沒(méi)有確切表達(dá)成底怎么回事。假如一個(gè)應(yīng)試者給出這個(gè)作為方案,我將用這個(gè)作為一個(gè)機(jī)會(huì)去探究他們這樣做的基本原理。假如他們的基本答案是:"我被教著這樣做,但從沒(méi)有想到過(guò)為什么。"這會(huì)給我留下一個(gè)壞印象。第三個(gè)方案是用gotoLoop:...gotoLoop;應(yīng)試者如給出上面的方案,這說(shuō)明或者他是一個(gè)匯編語(yǔ)言程序員(這也許是好事)或者他是一個(gè)想進(jìn)入新領(lǐng)域的BASIC/FORTRAN程序員。數(shù)據(jù)聲明(Datadeclarations)5.用變量a給出下面的定義a)一個(gè)整型數(shù)(Aninteger)b)一個(gè)指向整型數(shù)的指針(Apointertoaninteger)c)一個(gè)指向指針的的指針,它指向的指針是指向一個(gè)整型數(shù)(Apointertoapointertoanintege)rd)一個(gè)有10個(gè)整型數(shù)的數(shù)組(Anarrayof10integers)e)一個(gè)有10個(gè)指針的數(shù)組,該指針是指向一個(gè)整型數(shù)的。(Anarrayof10pointerstointegers)f)一個(gè)指向有10個(gè)整型數(shù)數(shù)組的指針(Apointertoanarrayof10integers)g)一個(gè)指向函數(shù)的指針,該函數(shù)有一個(gè)整型參數(shù)并返回一個(gè)整型數(shù)(Apointertoathattakesanintegerasanargumentandreturnsaninteger)h)一個(gè)有10個(gè)指針的數(shù)組,該指針指向一個(gè)函數(shù),該函數(shù)有一個(gè)整型參數(shù)并返回一個(gè)整型數(shù)(Anarrayoftenpointerstosthattakeanintegerargumentandreturnaninteger)答案是:a)inta;//Anintegerb)int*a;//Apointertoanintegerc)int**a;//Apointertoapointertoanintegerd)inta[10];//Anarrayof10integerse)int*a[10];//Anarrayof10pointerstointegersf)int(*a)[10];//Apointertoanarrayof10integersg)int(*a)(int);//Apointertoaathat(yī)takesanintegerargumentandreturnsanintegerh)int(*a[10])(int);//Anarrayof10pointerstosthattakeanintegerargumentandreturnaninteger人們經(jīng)常聲稱(chēng)這里有幾個(gè)問(wèn)題是那種要翻一下書(shū)才干回答的問(wèn)題,我批準(zhǔn)這種說(shuō)法。當(dāng)我寫(xiě)這篇文章時(shí),為了擬定語(yǔ)法的對(duì)的性,我的確查了一下書(shū)。但是當(dāng)我被面試的時(shí)候,我盼望被問(wèn)到這個(gè)問(wèn)題(或者相近的問(wèn)題)。由于在被面試的這段時(shí)間里,我擬定我知道這個(gè)問(wèn)題的答案。應(yīng)試者假如不知道所有的答案(或至少大部分答案),那么也就沒(méi)有為這次面試做準(zhǔn)備,假如該面試者沒(méi)有為這次面試做準(zhǔn)備,那么他又能為什么出準(zhǔn)備呢?Stat(yī)ic6.關(guān)鍵字static的作用是什么?這個(gè)簡(jiǎn)樸的問(wèn)題很少有人能回答完全。在C語(yǔ)言中,關(guān)鍵字stat(yī)ic有三個(gè)明顯的作用:1)在函數(shù)體,一個(gè)被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過(guò)程中維持其值不變。2)在模塊內(nèi)(但在函數(shù)體外),一個(gè)被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪問(wèn),但不能被模塊外其它函數(shù)訪問(wèn)。它是一個(gè)本地的全局變量。3)在模塊內(nèi),一個(gè)被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個(gè)函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用。大多數(shù)應(yīng)試者能對(duì)的回答第一部分,一部分能對(duì)的回答第二部分,同是很少的人能懂得第三部分。這是一個(gè)應(yīng)試者的嚴(yán)重的缺陷,由于他顯然不懂得本地化數(shù)據(jù)和代碼范圍的好處和重要性。Const7.關(guān)鍵字const有什么含意?我只要一聽(tīng)到被面試者說(shuō):"const意味著常數(shù)",我就知道我正在和一個(gè)業(yè)余者打交道。去年DanSaks已經(jīng)在他的文章里完全概括了const的所有用法,因此ESP(譯者:EmbeddedSystemsProgramming)的每一位讀者應(yīng)當(dāng)非常熟悉const能做什么和不能做什么.假如你從沒(méi)有讀到那篇文章,只要能說(shuō)出const意味著"只讀"就可以了。盡管這個(gè)答案不是完全的答案,但我接受它作為一個(gè)對(duì)的的答案。(假如你想知道更具體的答案,仔細(xì)讀一下Saks的文章吧。)假如應(yīng)試者能對(duì)的回答這個(gè)問(wèn)題,我將問(wèn)他一個(gè)附加的問(wèn)題:下面的聲明都是什么意思?constinta;intconsta;constint*a;int*consta;intconst*aconst;/******/前兩個(gè)的作用是同樣,a是一個(gè)常整型數(shù)。第三個(gè)意味著a是一個(gè)指向常整型數(shù)的指針(也就是,整型數(shù)是不可修改的,但指針可以)。第四個(gè)意思a是一個(gè)指向整型數(shù)的常指針(也就是說(shuō),指針指向的整型數(shù)是可以修改的,但指針是不可修改的)。最后一個(gè)意味著a是一個(gè)指向常整型數(shù)的常指針(也就是說(shuō),指針指向的整型數(shù)是不可修改的,同時(shí)指針也是不可修改的)。假如應(yīng)試者能對(duì)的回答這些問(wèn)題,那么他就給我留下了一個(gè)好印象。順帶提一句,也許你也許會(huì)問(wèn),即使不用關(guān)鍵字const,也還是能很容易寫(xiě)出功能對(duì)的的程序,那么我為什么還要如此看重關(guān)鍵字const呢?我也如下的幾下理由:1)關(guān)鍵字const的作用是為給讀你代碼的人傳達(dá)非常有用的信息,事實(shí)上,聲明一個(gè)參數(shù)為常量是為了告訴了用戶(hù)這個(gè)參數(shù)的應(yīng)用目的。假如你曾花很多時(shí)間清理其它人留下的垃圾,你就會(huì)不久學(xué)會(huì)感謝這點(diǎn)多余的信息。(當(dāng)然,懂得用const的程序員很少會(huì)留下的垃圾讓別人來(lái)清理的。)2)通過(guò)給優(yōu)化器一些附加的信息,使用關(guān)鍵字const也許能產(chǎn)生更緊湊的代碼。3)合理地使用關(guān)鍵字const可以使編譯器很自然地保護(hù)那些不希望被改變的參數(shù),防止其被無(wú)意的代碼修改。簡(jiǎn)而言之,這樣可以減少bug的出現(xiàn)。Volat(yī)ile8.關(guān)鍵字volatile有什么含意?并給出三個(gè)不同的例子。一個(gè)定義為volat(yī)ile的變量是說(shuō)這變量也許會(huì)被意想不到地改變,這樣,編譯器就不會(huì)去假設(shè)這個(gè)變量的值了。精確地說(shuō)就是,優(yōu)化器在用到這個(gè)變量時(shí)必須每次都小心地重新讀取這個(gè)變量的值,而不是使用保存在寄存器里的備份。下面是volat(yī)ile變量的幾個(gè)例子:1)并行設(shè)備的硬件寄存器(如:狀態(tài)寄存器)2)一個(gè)中斷服務(wù)子程序中會(huì)訪問(wèn)到的非自動(dòng)變量(Non-automaticvariables)3)多線程應(yīng)用中被幾個(gè)任務(wù)共享的變量回答不出這個(gè)問(wèn)題的人是不會(huì)被雇傭的。我認(rèn)為這是區(qū)分C程序員和嵌入式系統(tǒng)程序員的最基本的問(wèn)題。搞嵌入式的家伙們經(jīng)常同硬件、中斷、RTO(shè)S等等打交道,所有這些都規(guī)定用到volatile變量。不懂得volatile的內(nèi)容將會(huì)帶來(lái)劫難。假設(shè)被面試者對(duì)的地回答了這是問(wèn)題(嗯,懷疑是否會(huì)是這樣),我將稍微深究一下,看一下這家伙是不是直正懂得volatile完全的重要性。1)一個(gè)參數(shù)既可以是const還可以是volatile嗎?解釋為什么。2)一個(gè)指針可以是volatile嗎?解釋為什么。3)下面的函數(shù)有什么錯(cuò)誤:intsquare(volatileint*ptr){return*ptr**ptr;}下面是答案:1)是的。一個(gè)例子是只讀的狀態(tài)寄存器。它是volatile由于它也許被意想不到地改變。它是const由于程序不應(yīng)當(dāng)試圖去修改它。2)是的。盡管這并不很常見(jiàn)。一個(gè)例子是當(dāng)一個(gè)中服務(wù)子程序修該一個(gè)指向一個(gè)buffer的指針時(shí)。3)這段代碼有點(diǎn)變態(tài)。這段代碼的目的是用來(lái)返指針*ptr指向值的平方,但是,由于*ptr指向一個(gè)volatile型參數(shù),編譯器將產(chǎn)生類(lèi)似下面的代碼:intsquare(volatileint*ptr){inta,b;a=*ptr;b=*ptr;returna*b;}由于*ptr的值也許被意想不到地該變,因此a和b也許是不同的。結(jié)果,這段代碼也許返不是你所盼望的平方值!對(duì)的的代碼如下:longsquare(volatileint*ptr){inta;a=*ptr;returna*a;}位操作(Bitmanipulation)9.嵌入式系統(tǒng)總是要用戶(hù)對(duì)變量或寄存器進(jìn)行位操作。給定一個(gè)整型變量a,寫(xiě)兩段代碼,第一個(gè)設(shè)立a的bit3,第二個(gè)清除a的bit3。在以上兩個(gè)操作中,要保持其它位不變。對(duì)這個(gè)問(wèn)題有三種基本的反映1)不知道如何下手。該被面者從沒(méi)做過(guò)任何嵌入式系統(tǒng)的工作。2)用bitfields。Bitfields是被扔到C語(yǔ)言死角的東西,它保證你的代碼在不同編譯器之間是不可移植的,同時(shí)也保證了的你的代碼是不可重用的。我最近不幸看到Infineon為其較復(fù)雜的通信芯片寫(xiě)的驅(qū)動(dòng)程序,它用到了bitfields因此完全對(duì)我無(wú)用,由于我的編譯器用其它的方式來(lái)實(shí)現(xiàn)bitfields的。從道德講:永遠(yuǎn)不要讓一個(gè)非嵌入式的家伙粘實(shí)際硬件的邊。3)用#defines和bitmasks操作。這是一個(gè)有極高可移植性的方法,是應(yīng)當(dāng)被用到的方法。最佳的解決方案如下:#defineBIT3(0x1<<3)staticinta;voidset_bit3(void){a|=BIT3;}voidclear_bit3(void){a&=~BIT3;}一些人喜歡為設(shè)立和清除值而定義一個(gè)掩碼同時(shí)定義一些說(shuō)明常數(shù),這也是可以接受的。我希望看到幾個(gè)要點(diǎn):說(shuō)明常數(shù)、|=和&=~操作。訪問(wèn)固定的內(nèi)存位置(Accessingfixedmemorylocations)10.嵌入式系統(tǒng)經(jīng)常具有規(guī)定程序員去訪問(wèn)某特定的內(nèi)存位置的特點(diǎn)。在某工程中,規(guī)定設(shè)立一絕對(duì)地址為0x67a9的整型變量的值為0xaa66。編譯器是一個(gè)純粹的ANSI編譯器。寫(xiě)代碼去完畢這一任務(wù)。這一問(wèn)題測(cè)試你是否知道為了訪問(wèn)一絕對(duì)地址把一個(gè)整型數(shù)強(qiáng)制轉(zhuǎn)換(typecast)為一指針是合法的。這一問(wèn)題的實(shí)現(xiàn)方式隨著個(gè)人風(fēng)格不同而不同。典型的類(lèi)似代碼如下:int*ptr;ptr=(int*)0x67a9;*ptr=0xaa55;Amoreobscureapproachis:一個(gè)較晦澀的方法是:*(int*const)(0x67a9)=0xaa55;即使你的品味更接近第二種方案,但我建議你在面試時(shí)使用第一種方案。中斷(Interrupts)11.中斷是嵌入式系統(tǒng)中重要的組成部分,這導(dǎo)致了很多編譯開(kāi)發(fā)商提供一種擴(kuò)展—讓標(biāo)準(zhǔn)C支持中斷。具代表事實(shí)是,產(chǎn)生了一個(gè)新的關(guān)鍵字__interrupt。下面的代碼就使用了__(dá)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ò)誤了,以至讓人不知從何說(shuō)起了:1)ISR不能返回一個(gè)值。假如你不懂這個(gè),那么你不會(huì)被雇用的。2)ISR不能傳遞參數(shù)。假如你沒(méi)有看到這一點(diǎn),你被雇用的機(jī)會(huì)等同第一項(xiàng)。3)在許多的解決器/編譯器中,浮點(diǎn)一般都是不可重入的。有些解決器/編譯器需要讓額處的寄存器入棧,有些解決器/編譯器就是不允許在ISR中做浮點(diǎn)運(yùn)算。此外,ISR應(yīng)當(dāng)是短而有效率的,在ISR中做浮點(diǎn)運(yùn)算是不明智的。4)與第三點(diǎn)一脈相承,printf()經(jīng)常有重入和性能上的問(wèn)題。假如你丟掉了第三和第四點(diǎn),我不會(huì)太為難你的。不用說(shuō),假如你能得到后兩點(diǎn),那么你的被雇用前景越來(lái)越光明了。代碼例子(Codeexamples)12.下面的代碼輸出是什么,為什么?voidfoo(void){unsignedinta=6;intb=-20;(a+b>6)?puts(">6"):puts("<=6");}這個(gè)問(wèn)題測(cè)試你是否懂得C語(yǔ)言中的整數(shù)自動(dòng)轉(zhuǎn)換原則,我發(fā)現(xiàn)有些開(kāi)發(fā)者懂得很少這些東西。不管如何,這無(wú)符號(hào)整型問(wèn)題的答案是輸出是">6"。因素是當(dāng)表達(dá)式中存在有符號(hào)類(lèi)型和無(wú)符號(hào)類(lèi)型時(shí)所有的操作
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園工作總結(jié)感恩每一天
- 2024年設(shè)備監(jiān)理師考試題庫(kù)含答案(綜合卷)
- 演藝經(jīng)紀(jì)人的工作總結(jié)
- 服裝行業(yè)的搭配顧問(wèn)工作總結(jié)
- 建材行業(yè)行政后勤工作總結(jié)
- 2025年高考?xì)v史一輪復(fù)習(xí)之文化傳承與文化創(chuàng)新
- 花藝裝飾行業(yè)美工工作技能總結(jié)
- 2024年設(shè)備監(jiān)理師考試題庫(kù)及答案【真題匯編】
- 2024消防安全知識(shí)教育總結(jié)范文(35篇)
- 農(nóng)村蓋房傷亡合同(2篇)
- 校車(chē)安全逃生技能培訓(xùn)學(xué)習(xí)
- (新版)電網(wǎng)規(guī)劃專(zhuān)業(yè)知識(shí)考試題庫(kù)(含答案)
- 學(xué)校心理危機(jī)干預(yù)流程圖
- 杏醬生產(chǎn)工藝
- 融資擔(dān)保業(yè)務(wù)風(fēng)險(xiǎn)分類(lèi)管理辦法
- 年會(huì)抽獎(jiǎng)券可編輯模板
- 靜電場(chǎng)知識(shí)點(diǎn)例題結(jié)合
- 道德寶章·白玉蟾
- GB∕T 41170.2-2021 造口輔助器具的皮膚保護(hù)用品 試驗(yàn)方法 第2部分:耐濕完整性和黏合強(qiáng)度
- 防雷裝置檢測(cè)質(zhì)量管理手冊(cè)
- 水上拋石護(hù)坡施工方案
評(píng)論
0/150
提交評(píng)論