系统分析S3C2410的中断处理

发布时间:2023-01-06  

S3C2410   中断

在介绍2410的中断处理之前,我们不得不先看看先把ARM的异常向量表(ExcepTIon Vectors),下面对异常向量表(ExcepTIon Vectors),做一个简单的介绍:

ARM的异常向量表一般存放在0x00000000处,ARM920T能处理有7个异常,他们分别是:Reset,Undefined instrucTIon,Software Interrupt,Abort (prefetch),Abort (data),IRQ,FIQ

下面是系统源码片段:

_start:

b Handle_Reset

b HandleUndef

b HandleSWI

b HandlePrefetchAbort

b HandleDataAbort

b HandleIRQ

b HandleFIQ

…..

上面这部分片段一般出现在一个名叫“head.s”的汇编文件里,“b Handle_Reset”这条语句就是系统上电之后运行的第一条语句。因为上电后CPU会从SDRAM的0x00000000处取第一条指令并执行。

0x00000000: b Handle_Reset

0x00000004: b HandleUndef

0x00000008: b HandleSWI

0x0000000C: b HandlePrefetchAbort

0x00000010: b HandleDataAbort

0x00000014: b HandleIRQ

0x00000018: b HandleFIQ

系统上电后CPU会从SDRAM的0x00000000地址处取第一条指令并执行,终端向量表如上所示会放在0x00000000地址处,以后每当系统有异常出现,则CPU会根据异常号,从内存0x00000000地址处开始查中断向量表并做相应的处理,比如系统触发了一个IRQ异常,IRQ为6号异常,则CPU将把PC指向0x00000000地址处运行,调用中断服务程序。


S3C2410芯片可以接收56个中断源,产生32个中断请求。这些中断源来自两部分:内部外设,如DMA控制器,UART等和外部引脚线。ARM920T具有两种类型的中断模式:FIQ和IRQ,通过判定优先级产生IRQ或FIQ中断。如果在ARM920T的CUP中的PSR(程序状态寄存器)的控制位F位置1,则CPU从中断控制器中不接受FIQ中断,如果在ARM920T的CUP中的PSR(程序状态寄存器)的控制位I位置1,则CPU从中断控制器中不接受IRQ中断,因此中断控制器通过清除F-bit位或I-bit位产生中断。


S3C2410的中断异常处理模块有以下寄存器构成:

SRCPND,

INTMODE,

INTMSK,

PRIORITY,

INTPND,

INTOFFSET,

SUBSRCPND,

INTSUBMSK。

下面具体介绍各个寄存器的功能:

SRCPND(Source Pending Register)寄存器有效位32位,可读写,每一位涉及到一个中断源,SRCPND是主中断源引脚寄存器,某个位被置1表示相应的中断被触发,但我们知道在同一时刻内系统可以触发若干个中断,只要中断被触发了,SRCPND的相应位便被置1,也就是说SRCPND 在同一时刻可以有若干位同时被置1,另外,此寄存器不受中断控制器的优先权逻辑的影响。如果此中断没有被INTMSK寄存器屏蔽、或者是快中断(FIQ)的话,它将被进一步处理。通过写数据到这个寄存器能清除SPCPND相应的位。


INTMODE(Interrupt Mode Register)寄存器有效位为32位,可读写,每一位与SRCPND中各位相对应,它的作用是指定该位相应的中断源处理模式(IRQ还是FIQ)。若某位为0,则该位相对应的中断按IRQ模式处理,为1则以FIQ模式进行处理,该寄存器初始化值为0x00000000,即所有中断皆以IRQ模式进行处理。此中断控制器中只有一个中断源能用FIQ mode(在紧急中断下使用FIQ mode),因此INTMODE仅有一位能置1。


INTMSK(Interrupt Mask Register)寄存器有效位为32位,可读写,INTMSK为主中断屏蔽寄存器与SRCPND寄存器对应,它的作用是决定该位相应的中断请求是否被处理。若某位被设置为1,则该位相对应的中断产生后将被忽略(CPU不处理该中断请求),设置为0则CPU对其进行处理。该寄存器初始化值为0xFFFFFFFF,既默认情况下所有的中断都是被屏蔽的。


PRIORITY(IRQ PRIORITY Control Register)寄存器有32位,有效位[20:0],可读写,此寄存器的作用是如果有几个中断源同时触发,按照图2.2.1的流向,假如这几个中断源都没被屏蔽,并且都是IRQ模式,因此就要判定哪个中断源的优先级最高,使其在INTPND寄存器中对应位置1,CPU转向相应的中断服务程序,让中断服务程序来处理相应的中断请求。


INTPND(Interrupt Pending Register)寄存器有效位为32位,可读写,看起来和SRCPND寄存器一样,其实他们在功能上有着重大的区别。他在某一时刻只能有1个位被置1,INTPND 某个位被置1(该位对应的中断在所有已触发的中断里具有最高优先级且该中断没有被屏蔽),则表示CPU即将或已经在对该位相应的中断进行处理。因此SRCPND寄存器说明有什么中断被触发了,而INTPND寄存器说明CPU即将或已经在对某一个中断进行处理。


INTOFFSET(Interrupt Offset Register)寄存器有效位为32位,只读,此寄存器的值显示IRQ mode的哪个中断请求在INTPND寄存器中,通过清SRCPND和INTPND这位能自动清除,FIQ mode中断不会影响INTOFFSET寄存器,因此此寄存器仅对IRQ mode中断有效。


SUBSRCPND(Sub Source Pending Register)寄存器有32位,有效位[10:0],可读写,它们中的每一位分别代表一个中断源,SRCPND是主中断源引脚寄存器,它是副中断源引脚寄存器,情况类似SRCPND。


INTSUBMSK(Interrupt Sub Mask Register)寄存器有32位但有效位为11位,可读写,如果mask bit位是0,此中断请求被服务,情况类似INTMSK。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    级数值越小,优先级越高。3.中断使能:在配置完中断源和中断优先级后,我们需要使能对应的中断。通过设置相应的中断使能位,使得中断能够被触发和处理。 五、编写中断服务程序(ISR)编写中断服务程序是中断处理......
    的入口地址跳转执行。 中断处理: (1)执行中断服务程序; (2)遵循中断优先级和中断嵌套的执行规则。 退出中断: (1)将保存在堆栈中的现场信息弹出到原来的寄存器中; (2)返回被原先被中断的程序......
    段”,应根据任务的具体要求,来编写。 (3)如果本中断服务程序不允许被其它的中断所中断。可将“中断处理程序段”前后的“SETB EA”和“CLR EA”两条指令去掉。 (4)中断服务程序......
    时,单片机中某些寄存器和存储器单元中的数据或状态。为了使中断服务子程序的执行不破坏这些数据或状态,以免在中断返回后影响主程序的运行,因此要把它们送入堆栈保存起来,这就是现场保护。   现场保护一定要位于现场中断处理程序......
    终止的地址(即断点地址),以便从中断服务程序返回时能继续执行该程序,3、寻找中断入口。根据5 个不同的中断源所产生的中断,查找5 个不同的入口地址。4、执行中断处理程序。这就不讲了;5、中断返回。执行完中断处理程序......
    达 27 个中断源。 using 关键字用来指定中断服务程序使用的寄存器组。用法是:using 后跟一个0 到3 的数,对应着 4 组工作寄存器。一旦指定工作寄存器组,默认的工作寄存器组就不会被压栈,这将......
    的时候,处理器会执行一个函数,该函数一般称为中断处理程序或者中断服务程序中断向量: 中断服务程序在内存中的入口地址称为中断向量。 中断向量表: 把系统中所有的中断向量集中起来放到存储器的某一区。 查找中断......
    中去继续执行。 这种程序在执行过程中由于外界的原因而被中间打断的情况,称为中断。         两个重要的概念:         <1> 中断服务函数: 内核响应中断后执行的相应处理程序......
    地址区。   可见以上的40个单元是专门用于存放中断处理程序的地址单元,中断响应后,按中断的类型,自动转到各自的中断区去执行程序。因此以上地址单元不能用于存放程序的其他内容,只能存放中断服务程序。但是......
    事件标志,中断服务程序将它置1,tq2440_buttons_read将它清0 */static irqreturn_t buttons_interrupt(int irq, void *dev_id......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>