<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內核的中斷技術(shù)

ARM內核的中斷技術(shù)

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

3 中斷處理程序的編寫(xiě)
(1)軟件中斷處理程序的編寫(xiě)
軟件中斷指令的格式如圖1所示。低24位立即數為軟件中斷號。在中斷處理程序中,必須首先得到軟件中斷號,然后根據中斷號執行不同代碼。以下的中斷處理程序,在軟件中斷號為1時(shí),將端口A(yíng)的0號引腳置“1”。

STMFD sp!,{r0-r12,lr} //保存各工作寄存器
LDR r0,{lr,#-4} //得到該軟件中斷指令
BIC r0,r0,#0xff000000 //從中取出中斷號
ADR r2,SWIJumpTable //r2指向代碼入口表
LDR pc,[r2,r0,LSL #2] //把r0中的值乘4后加到r2。將//程序計數器指向中斷號對應的代碼入口地址
SWIJumpTable //代碼入口表
DCD SWInum0
DCD SWInum1
……
SWInum0 //中斷號為0時(shí)的處理代碼(略)
SWInum1 //中斷號為1時(shí)的處理代碼
MOV r0,#0x80000000 //r0指向端口A(yíng)
STRB r0,#0x01 //A口0腳置“1”
B EndofSWI //跳轉
EndofSWI
LDMFD sp! {r0-r12,pc} //恢復各寄存器,返回原程序
(2)常規中斷處理程序的編寫(xiě)
為快速執行,常規中斷處理程序一般用匯編指令編寫(xiě)。在編寫(xiě)可重入常規中斷處理程序(運行時(shí)仍可響應常規中斷)時(shí),必須先把鏈接寄存器和程序用到的工作寄存器入棧,然后才能開(kāi)放中斷;各寄存器出棧前,必須先關(guān)閉中斷。這樣可防止因寄存器崩潰而無(wú)法返回的情況發(fā)生。下文介紹了一個(gè)與中控制器相配置的可重入的常規中斷處理程序。當若干中斷源同時(shí)有效時(shí),中斷控制器(基址為IntBase)把16個(gè)中斷源中優(yōu)先級最高的一個(gè)存入中斷寄存器(偏移地址為IntLevel)中,并發(fā)出硬件中斷信號。
SUB lr,lr,#4 //得至并保存返回地址
STMFD sp!,{lr}
MRS r14,SPSR //把SPSR和sl2入棧
STMFD sp!,{r12,r14}
MOV r12,#IntBase
LDR r12,[r12,#IntLevel] //將最高優(yōu)先級號存入r12
MRS r14,CPSR. //開(kāi)中斷
BIC r14,r14,#0x80
MSR CPSR_c,r14
LDR PC,[PC,r12,LSL #2] //將pc指向該優(yōu)先級號對應的處理代碼入口
NOP //補位
DCD Priority0Handler //代碼入口表
DCD Priority 1 Handler
DCD Priority 2 Handler
……
Priority0Handler //0優(yōu)先級中斷處理代碼
STMFD sp!,{r0-r11} //保存工作寄存器
……(略) //具體代碼
LDMFD sp!,{r0-r11} //恢復工作寄存器
MRS r12,CPSR //關(guān)中斷
ORR r12,r12,#0x80
MSR CPSR_c,r12
LDMFD sp!,{r12,r14} //恢復r12
MSR SPSR_csxf,r14 //恢復備用程序狀態(tài)寄存器(SPSR)
LDMFD sp!,{pc}^ //返回原程序
Priority 1 Handler //優(yōu)先級中斷處理代碼(略)
(3)快中斷處理程序的編寫(xiě)
為保證高速處理,快中斷處理程序必須要用匯編語(yǔ)言編寫(xiě),而且必須是非重入的。一般快中斷處理程序主要是些數據存取指令,就不具體介紹了。
結束語(yǔ)
是處理器和系統芯片開(kāi)發(fā)的重要技術(shù)??焖?、高效的中斷處理程序是實(shí)時(shí)多任務(wù)系統設計成功的關(guān)鍵。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: ARM內核 中斷技術(shù)

評論


相關(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>