<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          ARM 中斷處理過程

          作者: 時間:2016-11-09 來源:網(wǎng)絡(luò) 收藏
          1.寄存器R16用作CPSR(Current Program Status Register,當(dāng)前程序狀態(tài)寄存器),CPSR可在任何運(yùn)行模式下被訪問,它包括條件標(biāo)志位、中斷禁止位、當(dāng)前處理器模式標(biāo)志位,以及其他一些相關(guān)的控制和狀態(tài)位。
          每一種運(yùn)行模式下又都有一個專用的物理狀態(tài)寄存器,稱為SPSR(Saved Program Status Register,備份的程序狀態(tài)寄存器),當(dāng)異常發(fā)生時,SPSR用于保存CPSR的當(dāng)前值,從異常退出時則可由SPSR來恢復(fù)CPSR。
          由于用戶模式和系統(tǒng)模式不屬于異常模式,他們沒有SPSR,當(dāng)在這兩種模式下訪問SPSR,結(jié)果是未知的
          當(dāng)中斷產(chǎn)生的時候,把CPSR保存在SPSR是自動完成的。

          對異常的響應(yīng)

          當(dāng)一個異常出現(xiàn)以后,ARM微處理器會執(zhí)行以下幾步操作:(自動處理的)
          1、將下一條指令的地址存入相應(yīng)連接寄存器LR,以便程序在處理異常返回時能從正確的位置重新開始執(zhí)行。若異常是從ARM狀態(tài)進(jìn)入,LR寄存器中保存的是下一條指令的地址(當(dāng)前PC+4或PC+8,與異常的類型有關(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í)行。
          2、將CPSR復(fù)制到相應(yīng)的SPSR中。
          3、根據(jù)異常類型,強(qiáng)制設(shè)置CPSR的運(yùn)行模式位。
          4、強(qiáng)制PC從相關(guān)的異常向量地址取下一條指令執(zhí)行,從而跳轉(zhuǎn)到相應(yīng)的異常處理程序處。
          還可以設(shè)置中斷禁止位,以禁止中斷發(fā)生。
          如果異常發(fā)生時,處理器處于Thumb狀態(tài),則當(dāng)異常向量地址加載入PC時,處理器自動切換到ARM狀態(tài)

          從異常返回(手動處理的)

          異常處理完畢之后,ARM微處理器會執(zhí)行以下幾步操作從異常返回:
          1、將連接寄存器LR的值減去相應(yīng)的偏移量后送到PC中。
          2、將SPSR復(fù)制回CPSR中。
          3、若在進(jìn)入異常處理時設(shè)置了中斷禁止位,要在此清除。
          可以認(rèn)為應(yīng)用程序總是從復(fù)位異常處理程序開始執(zhí)行的,因此復(fù)位異常處理程序不需要返回。



          幾種CPU工作模式


          用戶模式(User,usr)正常程序執(zhí)行的模式
          快速中斷模式(FIQ,fiq)用于高速數(shù)據(jù)傳輸和通道處理
          外部中斷模式(IRQ,irq)用戶通常的中斷使用
          特權(quán)模式(Supervisor,sve)供操作系統(tǒng)使用的一種保護(hù)模式
          數(shù)據(jù)訪問中止模式(Abort,abt)用于虛擬存儲及存儲保護(hù)
          未定義指令中止模式(Undefin- ed,und)用于支持通過軟件仿真硬件的協(xié)處理器
          系統(tǒng)模式(System,sys)用于運(yùn)行特權(quán)級的操作系統(tǒng)任務(wù)


          除用戶模式外都是特權(quán)模式(任意地進(jìn)行處理器模式的切換)。。
          除用戶模式和系統(tǒng)模式外都是異常模式。

          對不同的中斷模式都有獨(dú)立的堆棧和獨(dú)立的堆棧指針(SP)和(LR)


          從SWI和Undef異常返回時使用
          movs pc,LR

          從FIQ,IRQ和預(yù)取終止返回時使用
          SUBS PC, LR, #4

          從數(shù)據(jù)異常返回時使用
          SUBS PC, LR, #8

          在使用上述指令異常返回時,如果LR之前被壓棧的話使用LDM
          LDMFD SP! {PC}^


          關(guān)鍵詞: ARM中斷處

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();