<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM處理器中斷處理的編程實(shí)現

基于A(yíng)RM處理器中斷處理的編程實(shí)現

作者: 時(shí)間:2012-11-30 來(lái)源:網(wǎng)絡(luò ) 收藏
  ARM編程特別是代碼的編寫(xiě)中通常需要實(shí)現中斷的響應、解析跳轉和返回等操作,以便支持上層應用程序的開(kāi)發(fā),而這往往是困擾初學(xué)者的一個(gè)難題。的編程實(shí)現需要深入了解ARM內核和處理器本身的中斷特征,從而設計一種快速簡(jiǎn)便的機制。需要說(shuō)明的是,具體的上層高級語(yǔ)言編寫(xiě)的中斷服務(wù)函數不在本文的討論范圍之內。

  異常概述

  當異常中斷發(fā)生時(shí),系統執行完當前指令后,將跳轉到相應的異常中斷處理程序處執行。當異常中斷處理程序執行完成后,程序返回到發(fā)生中斷的指令的下一條指令處執行。在進(jìn)入異常中斷處理程序時(shí),要保存被中斷的程序的執行現場(chǎng)。從異常中斷處理程序退出時(shí),要恢復被中斷的程序的執行現場(chǎng)。ARM體系中通常在存儲地址的低端固化了一個(gè)32字節的硬件中斷向量表,用來(lái)指定各異常中斷及其處理程序的對應關(guān)系。當一個(gè)異常出現以后,ARM微處理器會(huì )執行以下幾步操作:

  1)保存處理器當前狀態(tài)、中斷屏蔽位以及各條件標志位;

  2)設置當前程序狀態(tài)寄存器CPSR中相應的位;

  3)將寄存器lr_mode設置成返回地址;

  4)將程序計數器(PC)值設置成該異常中斷的中斷向量地址,從而跳轉到相應的異常中斷處理程序處執行。

  在接收到中斷請求以后, 內核會(huì )自動(dòng)執行以上四步,程序計數器PC總是跳轉到相應的固定地址。從異常中斷處理程序中返回包括下面兩個(gè)基本操作:

  1)恢復被屏蔽的程序的處理器狀態(tài);

  2)返回到發(fā)生異常中斷的指令的下一條指令處繼續執行。

  當異常中斷發(fā)生時(shí),程序計數器PC所指的位置對于各種不同的異常中斷是不同的,同樣,返回地址對于各種不同的異常中斷也是不同的。例外的是,復位異常中斷處理程序不需要返回,因為整個(gè)應用系統是從復位異常中斷處理程序開(kāi)始執行的。

  支持中斷跳轉的解析程序

  解析程序的概念和作用

  如前所述,響應中斷的時(shí)候,總是從固定的地址開(kāi)始的,而在高級語(yǔ)言環(huán)境下開(kāi)發(fā)中斷服務(wù)程序時(shí),無(wú)法控制固定地址開(kāi)始的跳轉流程。為了使得上層應用程序與硬件中斷跳轉聯(lián)系起來(lái),需要編寫(xiě)一段中間的服務(wù)程序來(lái)進(jìn)行連接。這樣的服務(wù)程序常被稱(chēng)作中斷解析程序。

  每個(gè)異常中斷對應一個(gè)4字節的空間,正好放置一條跳轉指令或者向PC寄存器賦值的數據訪(fǎng)問(wèn)指令。理論上可以通過(guò)這兩種指令直接使得程序跳轉到對應的中斷處理程序中去。但實(shí)際上由于函數地址值為未知和其它一些問(wèn)題,并不這么做。這里給出一種常用的中斷跳轉流程:


上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>