<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

          3.4

          異常或中斷是用戶程序中最基本的一種執(zhí)行流程和形態(tài)。這部分主要對(duì)架構(gòu)下的異常中斷做詳細(xì)說(shuō)明。

          有7種類型的異常,按優(yōu)先級(jí)從高到低的排列如下:(Reset)、(Data Abort)、快速中斷異常(FIQ)、外部中斷異常(IRQ)、預(yù)取異常(Prefetch Abort)、軟件中斷(SWI)和未定義指令異常(Undefined instruction)。

          注意

          文檔中,使用術(shù)語(yǔ)Exception來(lái)描述異常。Exception主要是從處理器被動(dòng)接受異常的角度出發(fā),而Interrupt帶有向處理器主動(dòng)申請(qǐng)的色彩。在本書中,對(duì)“異常”和“中斷”不做嚴(yán)格區(qū)分,兩者都是指請(qǐng)求處理器打斷正常的程序執(zhí)行流程,進(jìn)入特定程序循環(huán)的一種機(jī)制。

          3.4.1 異常種類

          ARM體系結(jié)構(gòu)中,存在7種異常處理。當(dāng)異常發(fā)生時(shí),處理器會(huì)把PC設(shè)置為一個(gè)特定的存儲(chǔ)器地址。這一地址放在被稱為向量表(vector table)的特定地址范圍內(nèi)。向量表的入口是一些跳轉(zhuǎn)指令,跳轉(zhuǎn)到專門處理某個(gè)異常或中斷的子程序。

          存儲(chǔ)器映射地址0x00000000是為向量表(一組32位字)保留的。在有些處理器中,向量表可以選擇定位在存儲(chǔ)空間的高地址(從偏移量0xffff0000開始)。一些嵌入式操作系統(tǒng),如Linux和Windows CE就要利用這一特性。

          表3.4列出了ARM的7種異常。

          表3.4 ARM的7種異常

          異 常 類 型

          處理器模式

          執(zhí)行低地址

          執(zhí)行高地址

          (Reset)

          特權(quán)模式

          0x00000000

          0xFFFF0000

          未定義指令異常(Undefined interrupt)

          未定義指令中止模式

          0x00000004

          0xFFFF0004

          軟中斷異常(Software Abort)

          特權(quán)模式

          0x00000008

          0xFFFF0008

          預(yù)取異常(Prefetch Abort)

          數(shù)據(jù)訪問中止模式

          0x0000000C

          0xFFFF000C

          (Data Abort)

          數(shù)據(jù)訪問中止模式

          0x00000010

          0xFFFF0010

          外部中斷請(qǐng)求IRQ

          外部中斷請(qǐng)求模式

          0x00000018

          0xFFFF0018

          快速中斷請(qǐng)求FIQ

          快速中斷請(qǐng)求模式

          0x0000001C

          0xFFFF001C

          異常處理向量表如圖3.5所示。

          當(dāng)異常發(fā)生時(shí),分組寄存器r14和SPSR用于保存處理器狀態(tài),操作偽指令如下。

          R14_exception_mode> = return link

          SPSR_exception_mode> = CPSR

          CPSR[4∶0] = exception mode number

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

          If exception_mode> = = reset or FIQ then

          CPSR[6] = 1 /*屏蔽快速中斷FIQ*/

          CPSR[7] = 1 /*屏蔽外部中斷IRQ*/

          PC = exception vector address

          圖3.5 異常處理向量表

          異常返回時(shí),SPSR內(nèi)容恢復(fù)到CPSR,連接寄存器r14的內(nèi)容恢復(fù)到程序計(jì)數(shù)器PC。

          1.

          當(dāng)處理器的復(fù)位引腳有效時(shí),系統(tǒng)產(chǎn)生復(fù)位異常中斷,程序跳轉(zhuǎn)到復(fù)位程序處執(zhí)行。復(fù)位異常中斷通常用在下面兩種情況下。

          · 系統(tǒng)上電。

          · 系統(tǒng)復(fù)位。

          當(dāng)復(fù)位異常時(shí),系統(tǒng)執(zhí)行下列偽操作。

          R14_svc = UNPREDICTABLE value

          SPSR_svc = UNPREDICTABLE value

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

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

          CPSR[6] = 1 /*禁止快速中斷*/

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

          If high vectors configured then

          PC = 0xffff0000

          Else

          PC = 0x00000000


          上一頁(yè) 1 2 3 4 5 6 7 8 9 10 下一頁(yè)

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