中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

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

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

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

        本文引用地址:http://www.antipu.com.cn/article/257085.htm

        3.4

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

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

        注意

        文檔中,使用術(shù)語Exception來描述異常。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è)異?;蛑袛嗟淖映绦颉?/p>

        存儲(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


        上一頁 1 2 3 4 5 6 7 8 9 10 下一頁

        評(píng)論


        相關(guān)推薦

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

        關(guān)閉