中断的概念
对于中断流程不了解的伙伴可以去看看我之前写过的文章,点击文章的链接出,我这里简单描述下,一般来说,中断是属于异常的一种,但是中断是可以屏蔽的,对于异常它是不可以屏蔽的,如下图所示,对于中断我们需要设置其中断源,图中的按键,定时器,网络数据…就是会触发中断的中断源,我可以在中断控制器中设置其是否屏蔽该中断,而对于异常部分一般是系统的出错,这种出错必须告知CPU,所以是不可以屏蔽的,当发送中断时,CPU跳到特定的地址执行指令,这个地址一般和处理器平台相关,这条指令一般是一条跳转指令跳到一个处理入口,然后保护现场,调用处理函数(如果是irq中断在处理函数还需要判断中断源然后执行相应的处理工作),恢复现场,
ARM对异常(中断)的使用过程
1.初始化: a.设置中断源,让它可以产生中断 b.设置中断控制器(屏蔽,设置优先级) c.设置CPU总开关(使能中断)
2.正常执行程序中
3.有中断产生,通知中断控制器,中断控制器通知CPU,跳到不同的地址执行程序,这些地址构成一张异常向量表,这些地址只是一条跳转指令,跳去执行某个函数
4.在该函数中,先保护现场,处理异常(分辨中断源,再调用不同的函数),恢复现场
LINUX对中断处理的处理流程
在ARM9中可以看到在中断控制器中它有32位,每一位代表一种中断,也就是说这个中断控制