系统中断控制器
外设产生的中断信号,先要经过中断控制器,中断是异常的一种,如果没有中断控制器,多个外设一起产生中断我们该执行哪一个?在中断处理程序中又收到了中断应该打断吗?
在处理IRQ的时候,会将CPSR写入IRQ_SPSR,然后将CPU切换为IRQ模式,把状态改成ARM状态,把I位写成1禁止全部的IRQ,所以中断这样是我们不想要的。4412是一个四核的CPU,在发送中断前要确定发送给哪个CPU。任何一个外部设备都能触发FIQ和IRQ,只是FIQ速度快一些。还有很多问题,为了解决这些问题,三星公司在设计时就加了一个中断控制器
SGI:软中断,不是ARM架构里的那个SWI,这个是多核处理器之间用的比较多,一般操作系统内核中会使用。
安全模式和非安全模式:安全状态可以触发FIQ和IRQ,非安全状态只可以触发IRQ,咱们一般只使用IRQ
CPU接收到中断信号后并不能区分是哪个外设产生的,此时CPU可查询中断控制器来获取当前的中断信号是由哪个硬件产生的,然后再进行对应的处理
风光互补控制器
真正做开发时这些中断控制器的配置其实是不需要自己写的,ARM-cortex-A9系列的控制器一般都要跑个Linux或者Android操作系统,而这些东西操作系统都为我们写好了,直接调就行。但现在是*机开发,所以把相关的寄存器找到配置一次
第8章中断系统与中断控制器8259A中断 所谓中断是一个过程,即CPU在正常执行程序的过程中,遇到外部或内部的紧急事件需要处理,暂停当前程序的执行,转去为紧急事件服务,待服务完毕,再返回到暂停处(断点)继续执行原来的程序。为事件服务的程序称为中断服务程序或中断处理程序。中断源 中断源是指能发出中断申请的外设或引起中断的原因。目前,微机中的中断源一般有以下几种:8.1.1中断的概念及其功能
第8章中断系统与中断控制器8259A第8章 中断系统与中断控制器8259A中断概述中断处理过程多级中断管理PC/XT(8088/8086CPU)的中断系统8259A可编程中断控制器习题与思考题
,选中当前优先级最高的中断请求,再将此请求送到CPU的INTR端当CPU响应中断并进入中断处理子程序后,中断控制器仍管理着外部的中断请求,当某个外部中断请求的优先级高于当前正在处理的中断时,中断控制器会让此中断通过而到达CPU的INTR端,从而实现中断的嵌套,反之,对级别较低的中断则禁止下图是
IDT表项的设置是通过_set_gate()函数实现的,下面给出如何调用该函数在IDT表中插入一个门。
多媒体*控制器
),CPU就不能“穿过”这个门,于是产生一个“通用保护”异常,这是为了避免用户应用程序访问特殊的陷阱门或中断门。但是请注意,
工作马上就被调度,一旦其所在的处理器上工作者线程被唤醒,它就被执行。有时候并不希望工作马上就被执行,而是希望它经过一段延迟以后再执行。在这种情况下,可以调度它在指定的时间执行:
,因此它必须被尽可能快地执行,它亲自更新一个基本的值(系统自启动以来所用的时间),而把剩余的所有活动都委托给单独的函数处理(相当于下半部)。do_timer()执行代码如下:
假定此时的,外设的驱动程序都已完成了初始化工作,并且已把相应的中断服务程序挂入到特定的中断请求队列。又假定当这个当前进程正在用户空间运行(随时可以接收中断),且外设已产生了一次中断请求。当这个中断请求通过中断控制器2859A到达CPU的中断请求引线INTR时,
表中的每个表项占四个字节,由两个字节的段地址和两个字节的偏移量组成,这样构成的地址便是相应中断处理程序的入口地址。
添加新评论