a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

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

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

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

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

3.4

異常或中斷是用戶程序中最基本的一種執行流程和形態。這部分主要對架構下的異常中斷做詳細說明。

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

注意

文檔中,使用術語Exception來描述異常。Exception主要是從處理器被動接受異常的角度出發,而Interrupt帶有向處理器主動申請的色彩。在本書中,對“異常”和“中斷”不做嚴格區分,兩者都是指請求處理器打斷正常的程序執行流程,進入特定程序循環的一種機制。

3.4.1 異常種類

ARM體系結構中,存在7種異常處理。當異常發生時,處理器會把PC設置為一個特定的存儲器地址。這一地址放在被稱為向量表(vector table)的特定地址范圍內。向量表的入口是一些跳轉指令,跳轉到專門處理某個異常或中斷的子程序。

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

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

表3.4 ARM的7種異常

異 常 類 型

處理器模式

執行低地址

執行高地址

(Reset)

特權模式

0x00000000

0xFFFF0000

未定義指令異常(Undefined interrupt)

未定義指令中止模式

0x00000004

0xFFFF0004

軟中斷異常(Software Abort)

特權模式

0x00000008

0xFFFF0008

預取異常(Prefetch Abort)

數據訪問中止模式

0x0000000C

0xFFFF000C

(Data Abort)

數據訪問中止模式

0x00000010

0xFFFF0010

外部中斷請求IRQ

外部中斷請求模式

0x00000018

0xFFFF0018

快速中斷請求FIQ

快速中斷請求模式

0x0000001C

0xFFFF001C

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

當異常發生時,分組寄存器r14和SPSR用于保存處理器狀態,操作偽指令如下。

R14_exception_mode> = return link

SPSR_exception_mode> = CPSR

CPSR[4∶0] = exception mode number

CPSR[5] = 0 /*進入ARM狀態*/

If exception_mode> = = reset or FIQ then

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

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

PC = exception vector address

圖3.5 異常處理向量表

異常返回時,SPSR內容恢復到CPSR,連接寄存器r14的內容恢復到程序計數器PC。

1.

當處理器的復位引腳有效時,系統產生復位異常中斷,程序跳轉到復位程序處執行。復位異常中斷通常用在下面兩種情況下。

· 系統上電。

· 系統復位。

當復位異常時,系統執行下列偽操作。

R14_svc = UNPREDICTABLE value

SPSR_svc = UNPREDICTABLE value

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

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

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

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

If high vectors configured then

PC = 0xffff0000

Else

PC = 0x00000000


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

評論


相關推薦

技術專區

關閉