考一考!嵌入式開(kāi)發(fā)面試題3道 題一: 中斷與異常有何區(qū)別? 思考過(guò)后,再到下方尋找答案 題二: 當(dāng)一個(gè)異常出現(xiàn)以后,ARM微處理器會(huì)執(zhí)行哪幾步操作? 思考過(guò)后,再到下方尋找答案 題三: ARM協(xié)處理器指令包括哪3類(lèi),請(qǐng)描述它們的功能。 思考過(guò)后,再到下方尋找答案 題一答案: 異常在處理的時(shí)候必須考慮與處理器的時(shí)鐘同步,實(shí)際上異常也稱(chēng)為同步中斷,在處理器執(zhí)行到因編譯錯(cuò)誤而導(dǎo)致的錯(cuò)誤指令時(shí),或者在執(zhí)行期間出現(xiàn)特殊錯(cuò)誤,必須靠?jī)?nèi)核處理的時(shí)候,處理器就會(huì)產(chǎn)生一個(gè)異常;所謂中斷是指外部硬件產(chǎn)生的一個(gè)電信號(hào)從CPU的中斷引腳進(jìn)入,打斷CPU的運(yùn)行。所謂異常是指軟件運(yùn)行過(guò)程中發(fā)生了一些必須作出處理的事件,CPU自動(dòng)產(chǎn)生一個(gè)陷入來(lái)打斷CPU的運(yùn)行。 題二答案: 當(dāng)一個(gè)異常出現(xiàn)以后,ARM微處理器會(huì)執(zhí)行以下幾步操作。 A、將下一條指令的地址存入相應(yīng)連接寄存器LR,以便程序在處理異常返回時(shí)能從正確的位置重新開(kāi)始執(zhí)行。若異常是從ARM狀態(tài)進(jìn)入,則LR寄存器中保存 的是下一條指令的地址(當(dāng)前PC+4或PC+8,與異常的類(lèi)型有關(guān));若異常是從Thumb狀態(tài)進(jìn)入,則在LR寄存器中保存當(dāng)前PC的偏移量,這樣,異常 處理程序就不需要確定異常是從何種狀態(tài)進(jìn)入的。例如:在軟件中斷異常SWI,指令 MOV PC,R14_svc總是返回到下一條指令,不管SWI是在ARM狀態(tài)執(zhí)行,還是在Thumb狀態(tài)執(zhí)行。 B、將CPSR復(fù)制到相應(yīng)的SPSR中。 C、根據(jù)異常類(lèi)型,強(qiáng)制設(shè)置CPSR的運(yùn)行模式位。 D、強(qiáng)制PC從相關(guān)的異常向量地址取下一條指令執(zhí)行,從而跳轉(zhuǎn)到相應(yīng)的異常處理程序處。 題三答案: ARM協(xié)處理器指令包括以下3類(lèi): 用于ARM處理器初始化ARM協(xié)處理器的數(shù)據(jù)處理操作。 用于ARM處理器的寄存器和ARM協(xié)處理器的寄存器間的數(shù)據(jù)傳送操作。 用于在ARM協(xié)處理器的寄存器和內(nèi)存單元之間傳送數(shù)據(jù)。 |