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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM微處理器的編程模型之:異常中斷處理

          ARM微處理器的編程模型之:異常中斷處理

          作者: 時(shí)間:2013-09-13 來(lái)源:網(wǎng)絡(luò) 收藏

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

          當(dāng)數(shù)據(jù)訪問中止異常發(fā)生時(shí),寄存器的值將根據(jù)以下規(guī)則進(jìn)行修改。

          ① 返回地址寄存器r14的值只與發(fā)生的指令地址有關(guān),與PC值無(wú)關(guān)。

          ② 如果指令中沒有指定基址寄存器回寫,則基址寄存器的值不變。

          ③ 如果指令中指定了基址寄存器回寫,則寄存器的值和具體芯片的Abort Models有關(guān),由芯片的生產(chǎn)商指定。

          ④ 如果指令只加載一個(gè)通用寄存器的值,則通用寄存器的值不變。

          ⑤ 如果是批量加載指令,則寄存器中的值是不可預(yù)知的值。

          ⑥ 如果指令加載協(xié)處理器寄存器的值,則被加載寄存器的值不可預(yù)知。

          6.外部中斷IRQ

          當(dāng)處理器的外部中斷請(qǐng)求引腳有效,而且CPSR寄存器的I控制位被清除時(shí),處理器產(chǎn)生外部中斷IRQ異常。系統(tǒng)中各外部設(shè)備通常通過(guò)該異常中斷請(qǐng)求處理器服務(wù)。

          當(dāng)外部中斷IRQ發(fā)生時(shí),處理器執(zhí)行下列偽操作。

          r14_irq = address of next instruction to be executed + 4

          SPSR_irq = CPSR

          CPSR[4∶0] = 0b10010 /*進(jìn)入特權(quán)模式*/

          CPSR[5] = 0 /*處理器進(jìn)入狀態(tài)*/

          /*CPSR[6]保持不變*/

          CPSR[7] = 1 /*禁止外設(shè)中斷*/

          If high vectors configured then

          PC = 0xffff0018

          Else

          PC = 0x00000018

          7.快速中斷FIQ

          當(dāng)處理器的快速中斷請(qǐng)求引腳有效且CPSR寄存器的F控制位被清除時(shí),處理器產(chǎn)生快速中斷請(qǐng)求FIQ異常。

          當(dāng)快速中斷異常發(fā)生時(shí),處理器執(zhí)行下列偽操作。

          r14_fiq = address of next instruction to be executed + 4

          SPSR_fiq = CPSR

          CPSR[4∶0] = 0b10001 /*進(jìn)入FIQ模式*/

          CPSR[5] = 0

          CPSR[6] = 1

          CPSR[7] = 1

          If high vectors configured then

          PC= 0xffff001c

          Else

          PC = 0x0000001c

          3.4.2 異常優(yōu)先級(jí)

          每一種異常按表3.5中設(shè)置的優(yōu)先級(jí)得到處理。

          表3.5 異常優(yōu)先級(jí)

          優(yōu) 先 級(jí)

          異 常

          最高 1

          2

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

          3

          快速中斷請(qǐng)求

          4

          中斷請(qǐng)求

          5

          預(yù)取指令異常

          6

          軟件中斷

          最低 7

          未定義指令

          異??梢酝瑫r(shí)發(fā)生,處理器按表3.5的優(yōu)先級(jí)順序處理異常。例如,的優(yōu)先級(jí)最高,處理器上電時(shí)發(fā)生。所以當(dāng)產(chǎn)生復(fù)位時(shí),它將優(yōu)先于其他異常得到處理。同樣,當(dāng)一個(gè)數(shù)據(jù)訪問中止異常發(fā)生時(shí),它將優(yōu)先于除復(fù)位異常外的其他所有異常。

          優(yōu)先級(jí)最低的2種異常是軟件中斷和未定義指令異常。因?yàn)檎趫?zhí)行的指令不可能既是一條SWI指令,又是一條未定義指令,所以軟件中斷異常SWI和未定義指令異享有相同的優(yōu)先級(jí)。

          3.4.3 處理器模式和異常

          每一種異常都會(huì)導(dǎo)致內(nèi)核進(jìn)入一種特定的模式。表3.6顯示了處理器異常及其對(duì)應(yīng)的模式。此外,也可以通過(guò)編程改變CPSR,進(jìn)入任何一種處理器模式。

          注意

          用戶和系統(tǒng)模式是僅有的不可通過(guò)異常進(jìn)入的兩種模式,也就是說(shuō),要進(jìn)入這兩種模式,必須通過(guò)編程改變CPSR。

          表3.6 ARM處理器異常及其對(duì)應(yīng)模式

          異 常

          模 式

          用 途

          快速中斷請(qǐng)求

          FIQ

          進(jìn)行快速中斷請(qǐng)求處理

          外部中斷請(qǐng)求

          IRQ

          進(jìn)行外部中斷請(qǐng)求處理

          SWI

          SVC

          進(jìn)行操作系統(tǒng)的高級(jí)處理

          復(fù)位

          SVC

          進(jìn)行操作系統(tǒng)的高級(jí)處理

          預(yù)取指令中止異常

          ABORT

          虛存和存儲(chǔ)器保護(hù)

          數(shù)據(jù)中止異常

          ABORT

          虛存和存儲(chǔ)器保護(hù)

          未定義指令

          Undefined

          軟件模擬硬件協(xié)處理器



          評(píng)論


          相關(guān)推薦

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