(4.3)uboot详解——异常和异常向量

(4.3)uboot详解——异常和异常向量

中断是一个较难掌握知识,因为它是一个过程,而不是一个结果,其中的步骤都建立在理论的层面上,需要理解。比如按下按键1会使led1亮,这个“起因-结果”的操作我想小孩子也能掌握,因为它是一个现象,但是要掌握“起因-过程-结果”却需要花一些功夫,因为这个过程需要理解。如果你认真的了解了前面两节的内容,那么现在就该到了实现“过程”的时候了。

前面两节分析了外部中断和内部中断相关的内容,这篇文章将对处理器的异常情况作一个总结。

可以参考第二片文章(处理器工作模式),ARM处理器有七种工作模式,除了用户模式和系统模式以外,其他5中模式都是异常模式。

人会生病,生病时我们可以依靠我们的免疫系统来恢复,计算机也会“生病”,它“生病”的时候就会进入异常工作模式,依靠异常处理程序让cpu恢复过来,那么计算机在哪些情况下会“生病”呢?

(1)复位异常:当cpu重新上电或者接收到reset信号的时候,处理器就会识别到有复位异常发生了,它就要进入管理模式,执行对应的异常处理函数,直到恢复正常为止。比如重启按钮被按下,或者cpu复位引脚电平发生变化,或者软件设置复位寄存器的相应位。

(2)一般中断/快速中断请求:cpu和外围设备是分别独立运行的硬件执行单元,cpu对全部设备进行管理和资源调度处理,cpu要想知道外围设备的运行状态,要么cpu定时的去查看外围设备的特定寄存器,要么外围设备自己告诉cpu发生了什么,第二种方式就是我们常说的中断请求操作,中断请求分为一般中断请求和快速中断请求,快速中断请求有最高的优先级和最小的中断延迟(看前面文章的中断处理过程就知道了),通常用于处理高速数据传输及通道中的数据恢复处理,如DMA等,但是绝大部分外设使用的是一般中断请求。所以当有中断请求的时候,处理器将进入中断模式,执行中断处理程序,直到恢复正常。

(3)预取指令中止异常:这个异常发生在cpu流水线的取指阶段,如果目标指令地址是非法地址,处理器就会进入中止模式,执行中止异常处理程序。比如使用bl指令跳转到某个地址读取指令,但是这个地址是不可读的,或者这个地址不存在。

(4)数据中止访问异常:这个异常发生在要访问的数据地址不存在或者非法地址时,这种情况,cpu也会进入中止模式,执行对应的处理程序。比如mov r0, A ; A中存放的地址是不存在的或者不可访问的

(5)未定义指令异常:这个异常发生在流水线技术的译码阶段,如果当前指令不能识别为有效指令,就会产生未定义指令异常,cpu就会进入未定义指令终止模式,执行异常处理程序。比如mov r0,#1的下一条指令是abc,这是一条非法指令。

(6)软件中断指令异常:把这个异常放到最后,是因为这个异常的产生原因比较特殊,他是应用程序自己产生的,用于用户程序申请访问硬件资源时,通过操作系统内核代码来访问外设硬件资源的一种方式。比如应用程序需要将数据打印到屏幕上,就需要使用显示器这个硬件资源,但

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值