新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM微處理器的編程模型之:異常中斷處理

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

        作者: 時間:2013-09-13 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/257085.htm

        當數據訪問中止異常發生時,寄存器的值將根據以下規則進行修改。

        ① 返回地址寄存器r14的值只與發生的指令地址有關,與PC值無關。

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

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

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

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

        ⑥ 如果指令加載協處理器寄存器的值,則被加載寄存器的值不可預知。

        6.外部中斷IRQ

        當處理器的外部中斷請求引腳有效,而且CPSR寄存器的I控制位被清除時,處理器產生外部中斷IRQ異常。系統中各外部設備通常通過該異常中斷請求處理器服務。

        當外部中斷IRQ發生時,處理器執行下列偽操作。

        r14_irq = address of next instruction to be executed + 4

        SPSR_irq = CPSR

        CPSR[4∶0] = 0b10010 /*進入特權模式*/

        CPSR[5] = 0 /*處理器進入狀態*/

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

        CPSR[7] = 1 /*禁止外設中斷*/

        If high vectors configured then

        PC = 0xffff0018

        Else

        PC = 0x00000018

        7.快速中斷FIQ

        當處理器的快速中斷請求引腳有效且CPSR寄存器的F控制位被清除時,處理器產生快速中斷請求FIQ異常。

        當快速中斷異常發生時,處理器執行下列偽操作。

        r14_fiq = address of next instruction to be executed + 4

        SPSR_fiq = CPSR

        CPSR[4∶0] = 0b10001 /*進入FIQ模式*/

        CPSR[5] = 0

        CPSR[6] = 1

        CPSR[7] = 1

        If high vectors configured then

        PC= 0xffff001c

        Else

        PC = 0x0000001c

        3.4.2 異常優先級

        每一種異常按表3.5中設置的優先級得到處理。

        表3.5 異常優先級

        優 先 級

        異 常

        最高 1

        2

        數據中止

        3

        快速中斷請求

        4

        中斷請求

        5

        預取指令異常

        6

        軟件中斷

        最低 7

        未定義指令

        異常可以同時發生,處理器按表3.5的優先級順序處理異常。例如,的優先級最高,處理器上電時發生。所以當產生復位時,它將優先于其他異常得到處理。同樣,當一個數據訪問中止異常發生時,它將優先于除復位異常外的其他所有異常。

        優先級最低的2種異常是軟件中斷和未定義指令異常。因為正在執行的指令不可能既是一條SWI指令,又是一條未定義指令,所以軟件中斷異常SWI和未定義指令異享有相同的優先級。

        3.4.3 處理器模式和異常

        每一種異常都會導致內核進入一種特定的模式。表3.6顯示了處理器異常及其對應的模式。此外,也可以通過編程改變CPSR,進入任何一種處理器模式。

        注意

        用戶和系統模式是僅有的不可通過異常進入的兩種模式,也就是說,要進入這兩種模式,必須通過編程改變CPSR。

        表3.6 ARM處理器異常及其對應模式

        異 常

        模 式

        用 途

        快速中斷請求

        FIQ

        進行快速中斷請求處理

        外部中斷請求

        IRQ

        進行外部中斷請求處理

        SWI

        SVC

        進行操作系統的高級處理

        復位

        SVC

        進行操作系統的高級處理

        預取指令中止異常

        ABORT

        虛存和存儲器保護

        數據中止異常

        ABORT

        虛存和存儲器保護

        未定義指令

        Undefined

        軟件模擬硬件協處理器



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 兴仁县| 雷山县| 依安县| 北宁市| 宣威市| 宁阳县| 定陶县| 三明市| 新密市| 保德县| 明星| 宁国市| 麻城市| 淮滨县| 永宁县| 甘肃省| 咸丰县| 茂名市| 二连浩特市| 四子王旗| 岳西县| 沁源县| 方山县| 久治县| 益阳市| 锡林浩特市| 延长县| 开鲁县| 郎溪县| 色达县| 比如县| 万宁市| 儋州市| 老河口市| 德化县| 车致| 永仁县| 龙井市| 施甸县| 尉犁县| 吐鲁番市|