<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > ARM S3C4510B系統中的異常中斷技術(shù)

ARM S3C4510B系統中的異常中斷技術(shù)

作者: 時(shí)間:2012-03-29 來(lái)源:網(wǎng)絡(luò ) 收藏

2 中的處理程序的安裝

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

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

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

2.2 利用ldr指令實(shí)現異常中斷的安裝

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

ldr pc,SWI_ADDR
……
SWI_ADDR dcd SWI_Handler

以上兩種安裝方法各有優(yōu)缺點(diǎn),需要根據實(shí)際情況來(lái)選擇。 電子書(shū)籍網(wǎng)

3 S3C4510B系統中SWI異常中斷實(shí)例

S3C4510B中的SWI指令可以用來(lái)實(shí)現RTOS中的系統功能調用。它由用戶(hù)模式下當前執行的指令引發(fā),通過(guò)一個(gè)24位的立即數來(lái)指代SWI需要調用的系統功能,調用執行的過(guò)程在特權模式中進(jìn)行。

3.1 SWI異常中斷的處理程序

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

stmfd sp!,{r0-r12,lr}
保護現場(chǎng),保存寄存器的值
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
進(jìn)入SWI對應立即數0的中斷處理程序
……
對應立即數0的中斷處理程序
b EndOfSWI
SWIPro0
進(jìn)入SWI對應立即數1的中斷處理程序
……
對應立即數1的中斷處理程序
b EndOfSWI
……
其他的SWI處理程序
EndOfSWI
1dmfd sp!,{r0-r12,pc}^
恢復各寄存器

塵埃粒子計數器相關(guān)文章:塵埃粒子計數器原理


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>