异常与中断
6.1 概述
嵌入式系统中,微处理器控制I/O端口或部件的数据传送方式有2种:程序查询方式和中断方式。程序查询方式是由微处理器周期性地执行一段查询程序来读取I/O端口或部件中状态寄存器的内容,并判断其状态,从而使微处理器与I/O端口或部件在进行数据、命令传送时保持同步。程序查询方式下效率非常低,因为微处理器要花费大量时间测试I/O端口或部件的状态。并且I/O端口或部件的数据也不能得到实时地处理。
中断方式是I/O端口或部件在完成了一个I/O操作后,产生一个信号给微处理器,这个信号叫做“中断请求”,微处理器响应这个请求信号,停止其当前的程序操作,而转向对该I/O端口或部件进行新的读/写操作,特点是实时性能好。
早期的嵌入式系统只有中断的概念,而ARM微处理器内核增加了处理器的异常模式。异常包含了中断。
6.2 S5PV210的异常与中断
异常是处理外部异步事件的一种方法,当某个异常发生时,处理器将暂停正常运行的程序;在处理这个异常之前,处理器保留当前处理器状态以便在异常处理程序结束之后恢复原来程序运行。若有两个或更多异常同时发生,处理器将根据优先级来处理这些异常。
异常向量表与8种工作模式
并非一一对应。8种工作模式中的Supervisor和Abort各占用了两个表项,而User、System和Monitor没有任何关联表项,这是因为:
·User模式是程序正常运行模式,不需要进行特殊的异常处理,不是异常模式,所以它没
有占任何表项;
·System是特权模式,但不是异常模式,所以也不需要占用任何表项,System与User完全
共用寄存器,同时有能力进行模式切换(修改PSR寄存器的模式位),所以它是其它特权
模式与User模式的交互桥梁;
·对于Secure Monitor模式来说,是安全模式,需要协处理器来启动该模块,方能工作。
在上表所示的处理器异常中,和中断有关的包括软中断异常、外部中断异常与快速中断异常。
6.3 SWI软中断异常
软中断是软件实现的中断,也就是程序运行时其他程序对它的中断。软中断与硬中断的区别有:
·软中断发生时间由程序控制,而硬中断发生时间随机;
·软中断是由程序调用发生的,而硬中断是由外设引发的。
SWI指令
SWI指令用于产生软中断,从用户模式变换到管理模式,CPSR保存到管理模式的SPSR中。