久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > ARM S3C4510B系統中的異常中斷技術

ARM S3C4510B系統中的異常中斷技術

作者: 時間:2012-03-29 來源:網絡 收藏

2 中的處理程序的安裝

通過向量表安裝處理程序,即將異常向量表指向異常處理程序的入口,實現面向異常中斷的跳轉。這里需要介紹一下 的中斷向量表。在S3C4510B系統中,無論在地址重映射之前還是之后,異常中斷向量表的入口地址為固定的(見表1)。當系統運行到滿足異常中斷條件而產生異常中斷時,系統將自動跳入相應的異常中斷向量表中。而在異常向量表中保存的,正是利用跳轉指令或ldr指令指向該中斷的異常中斷處理程序的指令程序,這樣就實現了異常中斷處理程序的安裝。以SWI軟中斷為例,異常中斷安裝的基本順序如圖2所示,其中異常中斷向量的地址是固定的,其他地址為假設的。

2.1 利用跳轉指令實現異常中斷的安裝

將BL指令放置到中斷向量表的特定位置,跳轉目標地址為中斷處理程序的首地址,便可直接實現異常中斷的安裝。其優點是BL指令可以直接保存地址,缺點是BL的跳轉范圍只有32MB的地址空間,如bl SWI_Handler。

2.2 利用ldr指令實現異常中斷的安裝

利用ldr直接向程序計數器PC中賦值也可以實現中斷處理程序的安裝。先要將異常中斷處理程序首地址的絕對地址放在鄰近的一個存儲單元中,然后用ldr命令將該內存單元中的地址讀取到PC中。其優點是可調用程序的范圍不受限制,如:

ldr pc,SWI_ADDR
……
SWI_ADDR dcd SWI_Handler

以上兩種安裝方法各有優缺點,需要根據實際情況來選擇。 電子書籍網

3 S3C4510B系統中SWI異常中斷實例

S3C4510B中的SWI指令可以用來實現RTOS中的系統功能調用。它由用戶模式下當前執行的指令引發,通過一個24位的立即數來指代SWI需要調用的系統功能,調用執行的過程在特權模式中進行。

3.1 SWI異常中斷的處理程序

通常我們把SWI的中斷處理程序分為兩級,分別完成立即數的讀取和功能調用的執行。其指令代碼如下:
……

stmfd sp!,{r0-r12,lr}
保護現場,保存寄存器的值
ldr r0,[lr,#-4]
lr寄存器保存指令
bic r0,r0,#0XFF000000 ;讀取指令中的24位立即數
……
cmp R0,#MaxOfSWI
判斷立即數是否有效
ldrls pc,[pc,r0,lsl #2]
b OutOfSWIRange ;超出范圍
JumpListofSWI
dcd SWIPro_0
dcd SWIPro_1
……
其他所有的軟中斷入口
SWIPro_0
進入SWI對應立即數0的中斷處理程序
……
對應立即數0的中斷處理程序
b EndOfSWI
SWIPro0
進入SWI對應立即數1的中斷處理程序
……
對應立即數1的中斷處理程序
b EndOfSWI
……
其他的SWI處理程序
EndOfSWI
1dmfd sp!,{r0-r12,pc}^
恢復各寄存器

塵埃粒子計數器相關文章:塵埃粒子計數器原理


評論


相關推薦

技術專區

關閉