这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 再论ARM9 2440中断体系结构

共5条 1/1 1 跳转至

再论ARM9 2440中断体系结构

工程师
2012-05-26 22:46:24     打赏

S3C2440中断体系介绍 

1、中断处理过程 

SUBSRCPND和SRCPND寄存器表明有哪些中断被触发了,正在等待处理(Pending);SUBMASK(INTSUBMSK寄存器)和MASK(INTMSK寄存器)用于屏蔽某些中断。 

1)         Request sources(without sub-register)中的中断源被触发后,SRCPND寄存器中相应位被置1,如果此中断没有被INTMSK寄存器屏蔽或者快速中断的话,它将被进一步处理。

2)         Request sources(with sub-register)中的中断源被触发后,SUBSRCPND寄存器中相应位被置1,如果此中断没有被INTSUBMSK寄存器屏蔽的话,它在SRCPND中相应位也会被置1。

3)         如果被触发的中断中有快速中断的话,CPU会进入快速中断模式进行处理。

4)         对于一般的中断,可能同时有几个中断被触发,未被INTMSK寄存器屏蔽的中断经过比较后,选出优先级最高的中断,此中断在INTPND寄存器中的相应位被置1,然后CPU进入中断模式进行处理。中断服务程序可以通过读取INTPND寄存器或者INTOFFSET寄存器来确定中断源。

Priority表示中断的优先级判决,通过PRIORITY寄存器进行设置。

2、中断的处理步骤 

1)         设置好中断模式和FIQ模式下的栈

2)         准备好中断处理函数(中断服务程序)

a)         在异常向量表中设置好相应的跳转函数,异常向量地址0x00000018、0x0000001c。

b)         中断服务程序(ISR)

对于IRQ,读出INTPND寄存器或INTOFFSET寄存器来判断中断源,然后分别处理。

对于FIQ,因为只有一个中断,无需判断。

c)         清除中断

可以在调用ISR之前清除中断,也可以在调用之后清除,这取决于ISR执行过程中,这个中断是否可能继续发生、是否能够丢弃。如果在ISR执行过程中可能发生并不能丢弃,那么就在ISR执行之前清除,否则可以在ISR之后清除。

3)         进入、退出中断模式和FIQ模式时需要保存、恢复被中断程序的运行环境。两种方式在寄存器(r0-r15)的使用上不同。请详见手册。

4)         根据具体的中断、设置相关外设。比如对于GPIO中断,应设为外部中断,设置中断触发条件(低电平触发、高电平触发、下降沿还是上升沿触发等等)。

5)         对于Request sources(without sub-register)中的中断,将INTSUBMSK寄存器中相应的位设为0。

6)         确定使用IRQ还是FIQ,如果是FIQ,应在INTMOD的寄存器相应位设为1;如果是IRQ,则应设置PRIORITY优先级。

7)         如果是IRQ则应在INTMSK的相应位设置为0,FIQ不受INTMSK影响。

8)         设置CPSR的I-bit或F-bit位为0,使能IRQ或FIQ。

3、中断控制器寄存器 

SUBSRPND、INTSUBMSK这两个寄存器中相同的位对应相同的中断;SRCPND、INTMSK、INTMOD、INTPND这4个寄存器中相同的位对应相同的中断。

下面来介绍一下主要用的寄存器,其它的寄存器请详见手册。

1)         SUBSRCPND 子中断源未决寄存器 (R/W)

S3C2440支持15个子中断源,每一位对应一个,该寄存器标识这些中断是否发生。当这些中断发生且没有被中断屏蔽寄存器屏蔽,则它们中的若干位将“汇集”到SRCPND寄存器的相应位上。比如INT_RXD0、INT_TXD0、INT_ERR0,只要有一个发生了中断且没有被屏蔽,则SRCPND寄存器的INT_UART0就会被置1。

要清除中断是,需要向该位写“1”。

2)         INTSUBMSK 子中断源屏蔽寄存器 (R/W)

用来屏蔽SUBSRCPND寄存器中的子中断源,某位置1时,对应该位的中断被屏蔽。

3)         SRCPND   中断源未决寄存器(R/W)

该寄存器中的某一位用来表示一个或一类的中断是否已发生,若想清除中断,应向相应位写1。

4)         INTMSK   中断源屏蔽寄存器 (R/W)

用来屏蔽SRCPND中的中断,写1屏蔽,但只能屏蔽IRQ,无法屏蔽FIQ。

5)         INTMOD   中断模式寄存器(R/W)

用来选择是IRQ还是FIQ,写1代表FIQ。注意:同一时间只能一位被置1,因为只能有一个FIQ。

6)         PROORITY    优先级寄存器 (R/W)

用来设置IRQ中断的优先级。

7)         INTPND   中断未决寄存器 (R/W)

经过中断优先级仲裁器选出优先级最高的中断后,这个中断在该寄存器的相应位被置1,随后,CPU将进入中断模式来处理它。同一时间只能有一位为1,清除中断时,向其写1。

8)         INTOFFSET  中断偏移寄存器 (R)

用来表示INTPND中的哪位被置1了,如果是[X]位被置1了,该寄存器的值就为X。清除SRCPND、INTPND寄存器时,该寄存器自动被清除。




关键词: 再论     中断     体系结构     寄存器     屏蔽     相应     清除    

高工
2012-05-28 09:16:45     打赏
2楼
学习!

菜鸟
2012-06-01 11:50:23     打赏
3楼
受教了!!!!

工程师
2012-06-14 20:42:35     打赏
4楼
哈哈,谢谢啦

菜鸟
2012-09-18 10:56:47     打赏
5楼
深圳市元世通电子有限公司是一家专业从事半导体集成电路销售与服务的独立分销机构,是实力供应商,长时间的经营,公司积累了大量的现货库存,并在美洲、欧洲、亚洲等地建立了良好的供货渠道,使得我们公司具有非常有竞争力的价格优势。公司主要经营的品牌有:SANSUNG, TOSHIBA,MICRON,INTEL,SANDISK,AD、AMD、ATMEL、ALTERA、ALLEGRO、AGILNET、XILINX、TI/BB、FAIRCHILD、ST、PHILIPS、MOTOROLA、IR、ON、NSC、SHARP、TOSHIBA、VISHAY、BROADCOM等等。       S3C2440  S3C2410  S3C6410  S5PV210      
  联 系 人:刘小姐
  联系方式:0755-83782851
            15989485008
  QQ     : 2270533726    
网     址:http://ystlm.b2b.hc360.com/
           http://ystlm928.cnokcn.com

共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]