下面是小编为大家整理的有关中断(范文推荐),供大家参考。
有关中断 一. 外部中断模块 这个系统集成单元寄存器支持16个外部中断。
优先级为0到15.在信号描述章节中, 有外部中断到管脚的映射图。
同时, 该单元还为中断控制器提供了两个中断向量。
在是能情况下, 每一个中断向量有八个和产生中断请求标志位相结合的外部中断。
在每个组中, 所有的外部中断管脚具有相同的优先级。
详见图19-6有关外部中断的概览。
注释:while there are 1 2 interrupts in the 1 00-pin LQFP packages 每一个中断都可以独立设置。
你可以通过设置IRER寄存器(中断请求使能寄存器)
来实现中断请求的申请。
A 口可以通过配置用上升沿, 下降沿, 或者两者皆具来触发中断。但是设置上升沿和下降沿同时触发的位被保留了, 所以禁用。你可以设置 IREER 和 IFEER寄存器来选择是上升沿触发还是下降沿。
每一个外部寄存器都支持保留在中断状态标识寄存器(ISR).中个别的位, 这些位域可以通过写1来清除, 这就防止你不慎写在寄存器的其他标志位上。
二, 中断的分类
按照是否可以被屏蔽, 可将中断分为两大类:
不可屏蔽中断(又叫非屏蔽中断)和可屏蔽中断。
不可屏蔽中断源一旦提出请求, CPU必须无条件响应, 而对可屏蔽中断源的请求, CPU可以响应, 也可以不响应。
CPU一般设置两根中断请求 输入 线 :
可 屏 蔽中 断 请求 INTR(Interrupt Require) 和 不 可 屏 蔽 中 断 请求NMI(NonMaskable Interrupt)。
对于可屏蔽中断, 除了受本身的屏蔽位控制外, 还都要受一个总的控制, 即CPU标志寄存器中的中断允许标志位IF(Iinterrupt Flag)的控制, IF位为1, 可以得到CPU的响应, 否则, 得不到响应。
IF位可以由用户
This value is valid in the 1 44-pin LQFP and the 208-pin packages,
控制, 指令STI或Turbo c的Enable()函数, 将IF位置1(开中断), 指令CLI或Turbo_c 的Disable()函数, 将IF位清0(关中断)。
示例
典型的非屏蔽中断源的例子是电源掉电, 一旦出现, 必须立即无条件地响应,否则进行其他任何工作都是没有意义的。
典型的可屏蔽中断源的例子是打印机中断, CPU对打印机中断请求的响应可以快一些, 也可以慢一些, 因为让打印机等待儿是完全可以的。
对于软中断, 它不受IF位的影响, 所以属于非屏蔽中断范畴。
还有一点, 细心的读者会想到:
CPU只有两根中断请求输入线, 有多个中断源怎么办? 一般借助于外部电路。
三. 中断、 异常和系统调用
所谓中断是指CPU对系统发生的某个事件做出的一种反应, CPU暂停正在执行的程序, 保留现场后自动地转去执行相应的处理程序, 处理完该事件后再返回断点继续执行被“打断” 的程序。
中断可分为三类, 第一类是由CPU外部引起的, 称作中断, 如I/O中断、 时钟中断、 控制台中断等。
第二类是来自CPU的内部事件或程序执行中的事件引起的过程, 称作异常, 如由于CPU本身故障(电源电压低于105V或频率在47~63Hz之外)、 程序故障(非法操作码、 地址越界、 浮点溢出等)
等引起的过程。
第三类由于在程序中使用了 请求系统服务的系统调用而引发的过程, 称作“陷入” (trap,或者陷阱)。
前两类通常都称作中断, 它们的产生往往是无意、 被动的, 而陷入是有意和主动的。
1.中断处理
中断处理一般分为中断响应和中断处理两个步骤。
中断响应由硬件实施, 中断处理主要由软件实施。
(1)
中断响应
对中断请求的整个处理过程是由硬件和软件结合起来而形成的一套中断机构实施的。
发生中断时, CPU暂停执行当前的程序, 而转去处理中断。
这个由硬件对中断请求作出反应的过程, 称为中断响应。
一般说来, 中断响应顺序执行下述三步动作:
◆中止当前程序的执行;
◆保存原程序的断点信息(主要是程序计数器PC和程序状态寄存器PS的内容);
◆从中断控制器取出中断向量, 转到相应的处理程序。
通常CPU在执行完一条指令后, 立即检查有无中断请求, 如果有, 则立即做
出响应。
当发生中断时, 系统作出响应, 不管它们是来自硬件(如来自时钟或者外部设备)、 程序性中断(执行指令导致“软件中断” —Software Interrupts), 或者来自意外事件(如访问页面不在内存)。
如果当前CPU的执行优先级低于中断的优先级, 那么它就中止对当前程序下条指令的执行, 接受该中断, 并提升处理机的执行级别 (一般与中断优先级相同),以便在CPU处理当前中断时, 能屏蔽其它同级的或低级的中断, 然后保存断点现场信息, 通过取得的中断向量转到相应的中断处理程序的入口。
(2)
中断处理
CPU从中断控制器取得中断向量, 然后根据具体的中断向量从中断向量表IDT中找到相应的表项, 该表项应是一个中断门。
于是, CPU就根据中断门的设置而到达了该通道的总服务程序的入口。
核心对中断处理的顺序主要由以下动作完成:
◆保存正在运行进程的各寄存器的内容, 把它们放入核心栈的新帧面中。
◆确定“中断源” 或核查中断发生, 识别中断的类型(如时钟中断或盘中断)和中断的设备号(如哪个磁盘引起的中断)。
系统接到中断后, 就从机器那里得到一个中断号, 它是检索中断向量表的位移。
中断向量因机器而异, 但通常都包括相应中断处理程序入口地址和中断处理时处理机的状态字。
◆核心调用中断处理程序, 对中断进行处理。
◆中断处理完成并返回。
中断处理程序执行完以后, 核心便执行与机器相关的特定指令序列, 恢复中断时寄存器内容和执行核心栈退栈, 进程回到用户态。如果设置了重调度标志, 则在本进程返回到用户态时做进程调度。