新闻中心

EEPW首页>嵌入式系统>设计应用> ARM S3C4510B系统中的异常中断技术

ARM S3C4510B系统中的异常中断技术

作者: 时间:2012-03-29 来源:网络 收藏

3.2 SWI的调用与返回

对于SWI的调用要根据现场所处的处理器模式进行调用。通常用户模式下调用SWI功能只需将处理器所需要的参数存放于寄存器中,然后调用相应功能号的功能。

Mov r0,#80
假设参数为#80
swi 0X1
SWI中断立即数1

由于SWI中断功能调用在特权模式下执行,故而当在特权模式下调用SWI功能时,必须对当前模式下的SPSR和寄存器LR进行保存。
stmfd sp!,{r0-r12,lr}
保存寄存器
mov r1,sp
mov r0, spsr_svc
stmfd sp!,{r0} ;保存SPSR
……
读取立即数,调用SWI中断处理程序
ldmfd sp!,{r0}  ;恢复SPSR
msr spsr_svc, r0
ldmdf sp!,{r0-r12,lr}^ ;恢复其他寄存器

4中的IRQ中断实例

4.1 IRQ异常中断的产生

处理器常用于进行外部异常的响应和操作系统进程的控制。CPSR寄存器的I控制位置0时,处理器在指令边界查询是否有IRQ请求,系统的外部中断管理器或者外设通过使能处理器的IRQ输入管脚产生IRQ异常中断。

4.2 IRQ异常中断的处理程序

IRQ异常中断产生后,根据中断向量的指令跳入相应的中断处理程序。系统的外围中断管理硬件会将所用的IRQ中断请求按照优先级进行排列,把最高优先级的IRQ中断的信息放入寄存器中。通常的IRQ中断处理程序也需要保存返回地址、寄存器,而且需要屏蔽IRQ中断,以保证优先级较高的中断完全处理。
sub lr,lr,#4
stmfd sp!,{lr}
保存返回地址
mrs r14,spsr_irq
stmfd sp!,[r12,r14]
保存r12,spsr
mov r12,#IntBase
读取中断管理接口的基址

ldr r12,[r12,#IntLevel]
计算当前中断的物理地址
mrs r14,cpsr
bic r14,r14,#0X80
清零IRQ中断禁止位
msr cpsr_irq,r14
开IRQ中断
ldr pc,[ pc,r12,lsr #2]
跳转到相应的中断处理程序
dcd PirQ0Handler
dcd PirQ1Handler

dcd PirQnHandler
优先级为n的中断处理程序地址
PirQ0Handler
stmfd sp!,{r0-r11}
……
优先级为1的中断处理程序
ldmfd sp!,{r0-r11}
msr spsr_irq,r14
恢复r12和spsr
ldmfd sp!,{pc}^ ;中段返回
……
dcd PirQnHandler
中断优先级为N的中断处理程序
……

尘埃粒子计数器相关文章:尘埃粒子计数器原理


评论


相关推荐

技术专区

关闭