《micro2440开发》第二章:S3C2440A中断系统

    中断分为内部中断和外部中断;内部中断即通过指令让ARM核设置自身通用寄存器内的标志位、产生的中断,外部中断是由外围硬件通过中断控制器向ARM核内EU控制单元直接发送中断信号。

    本文重点分析S3C2440A的外部中断(也叫硬件中断)。从如下几个方面:1.中断控制器与ARM核以及外设的总线接口;2.中断控制器相关寄存器的设置;3.基于外部中断的应用。

    1.S3C440A中断控制器的总线接口

      外部中断是从ARM核内的EU控制单元直接引出,不走AMBA总线。

      中断控制器一边连接该EU控制单元,一边通过连接AMBA总线和外设通信。

    2.S3C2440A中断控制器相关寄存器

      1)SUBSRCPND子中断源暂存寄存器

        寄存器名                地址                     描述                                                                       复位默认值      

        SUBSRCPND      0x4A000018      子中断源暂存寄存器                                           0x00000000

                                                                     ,保存中断请求状态 

        该寄存器用来标识保存子中断源信号,当某个子中断信号产生以后,SUBSRCPND对应位被自动置1,该位会一直保持被置位,直到中断处理程序将其清除为止。注意:清除中断是通过对应位写入1来清除,而不是写入0。

      2)INTSUBMSK子中断源屏蔽寄存器

        寄存器名            地址                          描述                                             位默认值

        INTSUBMSK    0x4A00001C          子中断源信号屏蔽寄存器          0xFFFF

                                                                      ,设置相应位来屏蔽中断信号

        该寄存器用来屏蔽子中断源信号,默认值为全部子中断都被屏蔽掉,因此要想处理某个硬件中断,必须要打开中断屏蔽位,通过写入0来取消屏蔽中断。

      3)SRCPND中断源暂存寄存器

        寄存器名        地址                        描述                               复位默认值

        SRCPND       0x4A000000        中断源暂存寄存器       0x00000000

                                                                ,保存中断请求状态

        该寄存器用来保存中断源信号,当某个中断信号产生以后,SPCPND对应位被自动置1,该位会一直保持被置位,直到中断处理程序将其清除为止。注意:清除中断是通过向对应位写入1来清除。

      4)INTMSK中断源屏蔽寄存器

        寄存器名      地址                         描述                                                复位默认值

        INTMSK       0x4A000008          中断源信号屏蔽寄存器                0xFFFFFFFF

                                                                ,设置相应位来屏蔽中断信号  

        该寄存器用来屏蔽中断源信号,默认值为全部中断都被屏蔽掉,因此想要处理某个硬件中断,必须要打开中断屏蔽位,通过写入0来取消屏蔽中断。

      5)INTPND最高优先级中断暂存寄存器

        寄存器名      地址                         描述                                                            复位默认值

        INTPND       0x4A000010         最高有优先级中断暂存寄存器里边        0x00000000

                                                              保存有经过优先级仲裁的结果

        该寄存器保存了经过优先级仲裁出的中断信号位,它是所有当前中断请求里优先级别最高的中断,因此该寄存器里的值最多有一位被置1,通常中断处理程序中会通过读取该寄存器的值赖获得当前正在处理的中断请求。中断处理完成以后,通过写入1来清除中断。

      6)INTOFFSET中断号偏移量寄存器

        寄存器名             地址                         描述                                        复位默认值

        INTOFFSET       0x4A000014          中断号偏移量寄存器            0x00000000

                                                                      ,用来保存当前处理的中断号

        该寄存器里存放的是经过优先级仲裁出的中断信号对应的中断号,是一个0~31之间的整数,其实它就是INTPND寄存器里对应的位号。        

      7)INTMOD中断模式寄存器

        寄存器名             地址                          描述                                          复位默认值

        INTMOD             0x4A000004           中断模式寄存器                      0x00000000

                                                                       ,指定对应中断模式

        通过设置ARM内核产生中断。注意:快速中断不存在优先级仲裁,只能有一位被设置为FIQ模式。

    3.基于外部中断的应用  

中断源

描述

优先级仲裁分组

INT_ADC

数模转换和触摸屏中断

ARB5

INT_RTC

实时时钟中断

ARB5

INT_UART0

UART0中断(包含子中断)

ARB5

INT_NFCON

NandFlash控制中断

ARB4

INT_WDT_AC97

看门狗中断

ARB1

EINT8-23

外部中断8~23(包含外部子中断)

ARB1

EINT4-7

外部中断4~7(包含外部子中断)

ARB1

EINT3

外部中断3

ARB0

EINT2

外部中断2

ARB0

EINT1

外部中断1

ARB0

EINT 0

外部中断0

ARB0





你可能感兴趣的:(《micro2440开发》第二章:S3C2440A中断系统)