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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM中斷異常及其處理器模式

          ARM中斷異常及其處理器模式

          作者: 時間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
          ARM 處理器核有七種異常中斷:

          1.復(fù)位(包括上電)

          本文引用地址:http://www.ex-cimer.com/article/201611/316918.htm

          2.FIQ(快速中斷)

          3.IRQ(一般中斷)

          4.SWI(軟件中斷)

          5.預(yù)取址中止

          6.數(shù)據(jù)中止

          7.未定義指令異常

          ARM核發(fā)生以上異常時,便會進(jìn)入相應(yīng)的處理器模式進(jìn)行相應(yīng)的異常處理。

          其中ARM的處理器模式有以下7種:

          1.管理模式(SVC):Supervisor也是處理器上電默認(rèn)的運(yùn)行模式,可由復(fù)位(包括上電)和SWI(軟件中斷)觸發(fā)進(jìn)入

          2.快速中斷模式(FIQ):由快速中斷異常異常觸發(fā)進(jìn)入進(jìn)行相應(yīng)的中斷處理子程序

          3.一般中斷模式(IRQ):由一般中斷異常觸發(fā)進(jìn)入進(jìn)行相應(yīng)的中斷處理

          4.中止模式(abort):由預(yù)取址中止異常和數(shù)據(jù)中止異常觸發(fā)進(jìn)入的

          5.未定義模式:由未定義指令異常觸發(fā)進(jìn)入

          6.用戶模式(user):用戶軟件修改CPSR進(jìn)入

          7.系統(tǒng)模式(system):用戶軟件修改CPSR進(jìn)入

          由此可見,處理器模式是相應(yīng)的處理器異常的處理模式,但是用戶模式和系統(tǒng)模式并不能由異常觸發(fā)進(jìn)入,而必須是由軟件修改CPSR的值進(jìn)入的。此外系統(tǒng)模式和用戶模式共用15個寄存器和CPSR??偨Y(jié)處理器異常和處理器模式的關(guān)系為:7 TO 5。

          當(dāng)一個異常觸發(fā)觸發(fā)模式的改變時,CPU內(nèi)核自動(硬件)做如下動作:

          1.把CPSR保存到相應(yīng)的異常模式下的SPSR(除了系統(tǒng)模式和用戶模式?jīng)]有自己的SPSR)

          2.把PC保存到相應(yīng)的異常模式下的LR(各個模式都有自己的LR寄存器,系統(tǒng)模式和用戶模式共用)

          3.設(shè)置CPSR為相應(yīng)的異常模式。

          4.設(shè)置PC為相應(yīng)的異常處理程序的入口地址。

          值得注意的是所有的處理器模式都可以通過修改CPSR來進(jìn)入(即使沒有發(fā)生處理器異常),但是僅僅是進(jìn)入模式而已,并沒有發(fā)生上面的三個步驟即:把CPSR保存到SPSR中,把PC保存到LR中,設(shè)置PC為相應(yīng)的異常處理向量,這些都沒有發(fā)生,而僅僅是處于該模式而已。這可以用來在系統(tǒng)初始化時給各個模式的堆棧指針(R13)進(jìn)行初始化.



          關(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); })();