微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > S3C2410中断机制及相关寄存器介绍

S3C2410中断机制及相关寄存器介绍

时间:11-10 来源:互联网 点击:
所谓中断就是CPU在执行程序的过程中,出现了某些突发事件时,必须暂停当前正在执行的程序,转而去处理突发事件,处理完成后,CPU接着执行被暂停的程序。实际上,有很多Linux的驱动都是通过中断的方式来进行内核和硬件的交互。中断机制提供了硬件和软件之间异步传递信息的方式。硬件设备在发生某个事件时通过中断通知软件进行处理。中断实现了硬件设备按需获得处理器关注的机制,与查询方式相比可以大大节省CPU资源的开销。

1.中断向量表

每个中断都对应一段中断服务程序。当中断发生时,处理器就执行该中断对应的服务程序,实现该中断所要求完成的任务。处理器如何找到对应的中断服务程序呢?这就需要读取处理器的中断向量表。

中断向量表其实就对应了系统的一段存储区,它按照一定规律存储了处理器中所有不同类型中断的服务程序入口地址(又称中断向量)。S3C2410是基于ARM920T核,ARM920T的中断向量表有两种存放方式,一种是低端存放(从0x00000000处开始存放),另一种是高端存放(从0xfff000000处开始存放)。ARM920T能处理8个类型的中断,他们分别是:

>Reset:当处理器的复位电平有效时,产生复位异常,程序跳转到复位处理程序执行。

>Undefined instruction:当处理器遇到不能处理的指令时产生未定义指令中断。

>Software Interrupt:执行SWI(软件中断)指令时产生,可用于用户实现系统调用

>Abort (prefetch):当处理器预取指令的地址不存在或该地址不允许当前指令访问时,存储器会向处理器发出中止信号,但当预取的指令被执行时,才会产生指令预取中断。

>Abort (data):当处理器访问的指令地址不存在或该地址不允许当前指令访问时,产生数据中止中断。

>Reserved:保留。

>IRQ:当处理器的外部中断请求引脚有效,且CPSR的I位为0时产生IRQ中断。

>FIQ:当处理器的快速中断请求引脚有效,且CPSR的F位为0时产生FIQ中断。

对应的中断向量表如表1-1所示。

中断类型

中断向量(入口地址)

Reset

0x00000000

Undefined instruction

0x00000004

Software Interrupt

0x00000008

Abort (prefetch)

0x0000000C

Abort (data)

0x00000010

Reserved

0x00000014

IRQ

0x00000018

FIQ

0x0000001C

表1-1中断向量表

一般情况下,在每个入口地址处都存放了一条跳转指令,我们知道Uboot是用来完成系统的启动加载过程的,在u-boot的/cpu/start.S文件中,就有“b reset”指令,放在0x00000000地址。系统上电以后,CPU将会从0x00000000处得这条指令执行,执行完以后,CPU会跳转到reset标识的代码段去执行处理器复位程序。同样,在系统运行过程中,每当有中断发生,CPU会根据中断类型(用中断号标识),从内存的0x00000000处开始查表做相应的处理。比如系统触发了一个IRQ中断,IRQ为第6号中断,则CPU将把PC指向0x00000018地址(4*6=24= 0x00000018)处运行,该地址的指令是跳转到“IRQ中断服务程序”处运行。

S3C2410中断源,如图1-1中断源所示:

图1-1中断源

INTERRUPT CONTROLLER OPERATION

F-bit and I-bit of Program Status Register (PSR)

If the F-bit of PSR in ARM920T CPU is set to 1, the CPU does not accept the Fast Interrupt Request (FIQ) from the interrupt controller. Likewise, If I-bit of the PSR is set to 1, the CPU does not accept the Interrupt Request (IRQ) from the interrupt controller. So, the interrupt controller can receive interrupts by clearing F-bit or I-bit of the PSR to 0 and setting the corresponding bit of INTMSK to 0.

Interrupt Mode

The ARM920T has two types of Interrupt mode: FIQ or IRQ. All the interrupt sources determine which mode is used at interrupt request.

Interrupt Pending Register

The S3C2410A has two interrupt pending resisters: source pending register (SRCPND) and interrupt pending register (INTPND). These pending registers indicate whether or not an interrupt request is pending. When the interrupt sources request interrupt service, the corresponding bits of SRCPND register are set to 1, and at the same time, only one bit of the INTPND register is set to 1 automatically after arbitration procedure. If interrupts are masked, the corresponding bits of the SRCPND register are se

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top