Fork Me on GitHub

源码开放学ARM

LASO - Learn ARM with Source Open

首页         目录索引         资料下载         代码下载         联系作者        
下载PDF打印版本

中断处理流程

哪些事情硬件做,哪些事情软件做?

1. 中断触发 (用户/用户设置/外部数据)	
	中断触发条件的初始化操作--软件有关 
2. 中断响应 (从当前位置跳转到 0x18)
	保存原来的模式和返回的地址--硬件有关
3. 中断发生后的(老的)现场保存和恢复
	压栈和出栈--软件有关
4. 中断返回
	恢复原来的模式和地址--软件有关
5. 中断标志位 SFR Pending bit
	pending bit 的设置--硬件有关 (控制器寄存器PND)			
	pending bit 的清除--软件有关 (控制器寄存器PND)
	作用:识别中断源/调用相应的handler--软件有关(可以交给VIC实现)		
6. 中断允许位 CPSR I-bit
	加电之后,I-bit 的初始状态是 关闭/禁止 的 (0xD3->0x53)
	MSR/MRS 可以允许使能--软件有关 (内核寄存器CPSR) 
7. IRQ发生 -> Pending bit -> I-bit	enable -> 跳转
	(跳转之前,硬件会完成 disable I-bit,
		因此不再响应后继任何中断,直到软件恢复CPSR)
8. 在软件恢复CPSR(重新允许中断)之前,软件需要清除之前的pending bit(VIC+ADDR寄存器=0)

内核和处理器升级的过程,就是不断把原来软件的工作交给硬件来做。
中断的优先级
中断的处理程序 ISR -> 中断的向量表

如何跳转

	IC				VIC
---------------------------------------------------------------
	b irq_handler0			VectADDR -> PC
	LDR pc, =irq_handler0		VIC interface(A31-A0)
---------------------------------------------------------------			

上一节 | 目录索引 | 下一节

blog comments powered by Disqus