(4.1)uboot详解——内部中断

(4.1)uboot详解——内部中断


中断这个概念相信都不会陌生,它就是一个信号,告诉cpu先将当前的任务放一放,先去处理一下别的紧急事情。比如自己在家里打扫卫生,这时有客人来了,客人就会按一下门铃,然后自己马上放下当前的事情,去给客人开门,然后继续打扫卫生。这个过程就是一个中断处理过程,门铃声就是一个信号,告诉你有更重要的事情发生了,然后你停下做当前的事情,去处理突发的事情,这个处理突发事情的过程叫中断处理过程。

当然也有可能多个中断信号同时发生的情况,比如门铃响起的时候,热水器也开始报警了,这个时候应该怎么处理呢?这就涉及到优先级的问题了,比如这时需要先拔掉热水器,以免水溢出来漏电,所以这个的优先级,开门的优先级低。

上面是我们生活中的例子,但是对于计算机来说,却有更严格的中断信号和更规范的中断处理流程:

请求中断:当某一中断源需要CPU为其进行中断服务时,就输出中断请求信号,使中断控制系统的中断请求触发器置位,向CPU请求中断。系统要求中断请求信号一直保持到CPU对其进行中断响应为止。
中断响应:CPU对系统内部中断源提出的中断请求必须响应,而且自动取得中断服务子程序的入口地址,执行中断 服务子程序。对于外部中断,CPU在执行当前指令的最后一个时钟周期去查询INT引脚,若查询到中断请求信号有效,同时在系统开中断(即IF=0)的情 况下,CPU向发出中断请求的外设回送一个低电平有效的中断应答信号,作为对中断请求INT的应答,系统自动进入中断响应周期。
关闭中断:CPU响应中断后,输出中断响应信号,自动将状态标志寄存器CPSR保护起来,然后将中断标志位IF与陷阱标志位清零,从而自动关闭外部硬件中断。因为CPU刚进入中断时要保护现场,主要涉及堆栈操作,此时不能再响应中断,否则将造成系统混乱。
保护断点:保护断点就是将CPSR和PC当前内容保存,以便中断处理完毕后能返回被中断的原程序继续执行,这一过程也是由CPU自动完成。
中断源识别:当系统中有多个中断源时,一旦有中断请求,CPU必须确定是哪一个中断源提出的中断请求,并由中断控制器给出中断服务子程序的入口地址,装入LR和SPSR两个寄存器。CPU转入相应的中断服务子程序开始执行。
保护现场:主程序和中断服务子程序都要使用CPU内部寄存器等资源,为使中断处理程序不破坏主程序中寄存器的内容,应先将断点处各寄存器的内容压入堆栈保护起来,再进入的中断处理。现场保护是由用户使用PUSH指令来实现的。
中断服务:中断服务是执行中断的主体部分,不同的中断请求,有各自不同的中断服务内容,需要根据中断源所要完成的功能,事先编写相应的中断服务子程序存入内存,等待中断请求响应后调用执行。
恢复现场:当中断处理完毕后,用户通过POP指令将保存在堆栈中的各个寄存器的内容弹出,即恢复主程序断点处寄存器的原值。
中断返回:在中断服务子程序的最后要安排一条中断返回指令,系统自动将保存的值恢复,从而恢复主程序断点处的地址值,同时还自动恢复标志寄存器的内容,使CPU转到被中断的程序中继续执行。

在这里首先需要明确的一点是CPSR寄存器中断 I 和 F两个标志位的作用,这两个标志位是IRQ和FIQ的总开关,所以如果要进行后面中断操作,必须先确保这两位是0(没有禁止IRQ和FIQ)


下面是s3c2440的外部中断和内部中断的概图,从图中可以看出,外部中断和内部中断从SRCPND开始,后面的过程都是相同的。后面在仲裁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值