arm体系结构学习笔记 part2 -- 中断相关
2010-12-05 19:21
1036 查看
中断分类:
1.由软件中断指令SWI引起的软件中断。SWI中断可以实现从用户模式到特权模式的切换。一般用于特权操作的系统程序。
2.由外设引起的硬件中断。arm有两个中断控制信号 一个是fiq一个是irq 。中断控制器是这两个中断和多个外部中断之间的桥梁。通过设置cpsr的6 7位可以使能或者禁止这两类中断。
中断响应时间:
外部中断信号发出到取出中断服务程序的第一条指令经历的时间。FIQ模式下备份寄存器最多,保证了FIQ不需要花更多的时间去备份寄存器数据,而ldm和stm的执行时间是跟操作的寄存器列表中寄存器数量成正比的。
可重入的中断处理程序和不可重入的中断处理程序:
可重入的中断处理程序是指当前中断服务程序执行时屏蔽了同类中断,例如IRQ中断处理程序在cpsr中将I位置1了,再次发生IRQ中断时便不响应。即不嵌套响应中断。一般情况下arm中断是不可重入的。
不可重入中断就是中断处理程序中允许新的IRQ或者FIQ中断。
使能IRQ中断的代码:mrs r1.cpsr bic r1,r1,#0x80 msr cpsr_c,r1
使能FIQ中断的代码:
mrs r1.cpsr bic r1,r1,#0x40 msr cpsr_c,r1
禁止IRQ中断的代码:
mrs r1.cpsr orr r1,r1,#0x80 msr cpsr_c,r1
禁止FIQ中断的代码:
mrs r1.cpsr orr r1,r1,#0x40 msr cpsr_c,r1
arm硬件中断发生的检测:
执行完当前指令后,查询FIQ和IRQ引脚电平,并检查CPSR中I位和F位的状态。
arm硬件中断的处理流程:
一.arm内核自动完成的动作:
(1)复制cpsr的到spsr_fiq/spsr_irq(2)可选操作 设置处理器的状态位CPSR[5] 设置处理器进入相应异常模式CPSR[4:0] 设置中断禁止位禁止相应中断CPSR[7:6]
(3)跟新lr_irq/lr_fiq
(4)设置pc到相应的异常向量
二.跳转到中断处理函数:
如果使用B指令的话,只能实现指令前后32m地址空间的跳转 所以一般采用mov或者ldr指令例如mov pc,#数值 该数值(0-255)*22n
例如ldr pc,[pc + offset] 这里存储目标地址的的存储单元必须在当前指令前后的4KB范围内
进入中断处理程序后必须做的三件事情:
1.保存当前模式下没有被自动分组保存的寄存器
2.确定中断源,判断发生了什么中断
3.计算出响应的中断服务程序的入口地址。
三.中断处理完成后的返回:
1.通用寄存器的恢复2.状态寄存器的恢复
3.pc指针的恢复
4.开中断
相关文章推荐
- ARM学习笔记--中断体系结构
- ARM底层学习笔记-中断体系结构
- 一份好的ARM体系结构学习笔记
- ARM学习之中断体系结构
- ARM裸机全集之ARM体系结构(学习笔记)
- arm体系结构学习笔记 part1--处理器模式与寄存器
- arm体系结构学习笔记 part3 -- 异常处理机制
- arm体系结构学习笔记 part4 -- 异常处理的返回
- ARM&LINUX学习笔记(4)---ARM 体系结构
- 一份好的ARM体系结构学习笔记
- ARM学习笔记之一:ARM体系结构
- BI学习笔记之二- BI的体系架构与相关技术
- **arm的中断体系结构
- larevel学习笔记 程序体系结构
- 3、C语言深度学习笔记--计算机体系结构简介
- ARM体系结构与编程学习(八)
- ARM中断体系结构-学习笔记
- WPF and Silverlight 学习笔记(三):WPF体系结构
- arm中断与定时器学习笔记
- ARM体系结构与编程学习(九)