中断是计算机的一种基本工作方式,几乎所有的 CPU 都支持中断,S3C4510B 的支持多达 21 个中断源,中断请求可由内部功能模块和外部引脚信号产生。 ARM7 TDMI 核可以识别两种类型的中断:正常中断请求(Normal Interrupt Request,IRQ)和 快速中断请求(Fast Interrupt Request,FIQ),因此,S3C4510B 的所有中断都可以归类为 IRQ 或 FIQ。S3C4510B 的中断控制器对每一个中断源都有一个中断悬挂位(Interrupt Pending Bit)。 S3C4510B 用如下四个寄存器控制中断的产生和对中断进行处理: - 中断优先级寄存器(Interrupt Priority Register):每一个中断源的索引号写入一个预定义的 中断优先级寄存器,以获得特定的优先级。中断优先级预定义为从 0~20。 - 中断模式寄存器(Interrupt Mode Register):为每一个中断源定义中断模式,是 IRQ 还是 FIQ。 - 中断悬挂寄存器(Interrupt Pending Register):指示中断请求处于悬挂状态(未处理)。 如果中断悬挂位被置位,则中断悬挂状态会一直保存,直到 CPU 通过写'1'到中断悬挂寄存器的 相应位清除(注意是写'1'清除,而不是写'0')。当中断悬挂位被置位时,无论中断屏蔽寄存 器是否为'0',中断服务程序都开始执行。在中断服务程序中,必须通过向中断悬挂寄存器的相 应位写'1'来清除中断悬挂标志,以避免由于同一个中断悬挂位导致中断服务程序的反复执行。 - 中断屏蔽寄存器(Interrupt Mask Register):如果中断屏蔽位为'1' 则对应的中断会被禁止,如果中断屏蔽位为'0',则对应的中断请求能正常响应。但如果全局中 断屏蔽位(位 21)为'1',则所有的中断都会被禁止。当有中断请求产生时,对应的中断悬挂位 会被置为'1',在全局中断屏蔽位和对应的中断屏蔽位为'0'时,中断请求就会被响应。 S3C4510B 的中断源(Interrupt Sources)