I/O端口及中断控制器

上传人:大米 文档编号:568462756 上传时间:2024-07-24 格式:PPT 页数:34 大小:643KB
返回 下载 相关 举报
I/O端口及中断控制器_第1页
第1页 / 共34页
I/O端口及中断控制器_第2页
第2页 / 共34页
I/O端口及中断控制器_第3页
第3页 / 共34页
I/O端口及中断控制器_第4页
第4页 / 共34页
I/O端口及中断控制器_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《I/O端口及中断控制器》由会员分享,可在线阅读,更多相关《I/O端口及中断控制器(34页珍藏版)》请在金锄头文库上搜索。

1、IO端口及中断控制器2021/6/41阅读阅读P156-P159思考以下问题思考以下问题S3C2410A共有多少个中断源?多少个外部中共有多少个中断源?多少个外部中断源?外部中断的触发方式如何设置?中断标志断源?外部中断的触发方式如何设置?中断标志位在哪些寄存器里?某中断是否允许由哪个寄存位在哪些寄存器里?某中断是否允许由哪个寄存器控制?中断优先级由哪个寄存器控制?中断器控制?中断优先级由哪个寄存器控制?中断处理的流程是什么样的?处理的流程是什么样的?2021/6/42 中断控制器概述n S3C2410A片内的中断控制器,接收来自56个中断源的中断请求。这些中断源由S3C2410A外部中断请求

2、引脚和片内外设提供。片内外设包括DMA控制器、UART、IIC等。在这些中断源中,UARTn的INT_ERRn、INT_RXDn和INT_TXDn经过逻辑或以后送到中断控制器,作为INT_UARTn。EINT4EINT7、EINT8EINT23经过逻辑或以后送到中断控制器,作为EINT4_7、EINT8_23。2021/6/43中断控制器概述n当从片内外设和外部中断请求引脚接收到多个中断请求时,中断控制器经过仲裁处理后,向ARM920T内核请求FIQ或IRQ中断。n仲裁处理取决于硬件优先权逻辑,并且仲裁结果写入中断挂起寄存器INTPND(interrupt pending register)。

3、用这种方法可以帮助用户,告知在多个中断请求源中,哪一个经过仲裁并送到ARM920T内核。2021/6/44中断控制器概述n有了中断请求,请求源的保存可以分为两种。一种是带子请求寄存器的,如UARTn的INT_ERRn、INT_RXDn和INT_TXDn,有了中断请求,请求源要保存在子源挂起寄存器SUBSRCPND中;另一种是不带子请求寄存器的,如INT_DMA3,有了中断请求,请求源要保存在源挂起寄存器SRCPND中。对于带子请求寄存器的,还要检查中断子屏蔽寄存器INTSUBMSK是否对某一个子请求源进行了屏蔽,只有不屏蔽,才能在源挂起寄存器SRCPND中对应位置1。之后,一个或多个中断请求要

4、判断是否被屏蔽;是IRQ模式还是FIQ模式;如果是IRQ模式还要判断多个中断请求的优先权;最后以IRQ或FIQ请求送ARM920T内核。2021/6/45中断控制器概述中断处理示意图。2021/6/46中断控制器概述n外部中断EINT4EINT7、EINT8EINT23的请求,要在外部中断挂起寄存器EINTPEND中保存,检查外部中断屏蔽寄存器EINTMASK是否屏蔽,如果不屏蔽,才能送到源挂起寄存器SRCPND的对应位EINT4_7、EINT8_23。n中断控制器用到的S3C2410A引脚信号有EINT0EINT23和nBATT_FLT。2021/6/47 程序状态寄存器(PSR)中的F位和

5、I位 如果ARM920T CPU中的PSR的F位被设置为1,CPU不接受来自中断控制器的快速中断请求(Fast Interrupt Request,FIQ)。同样,如果I位被设置为1,CPU不接受来自中断控制器的中断请求(Interrupt Request,IRQ)。因此,通过清除PSR的F位或I位为0,同时设置中断屏蔽寄存器INTMSK的对应位为0,送到中断控制器的中断请求才能被处理。 中断控制器特殊功能寄存器2021/6/48中断模式寄存器 ARM920T有2种类型的中断模式:FIQ或IRQ,所有的中断源在中断请求时,要确定该中断源被设置成哪一种模式。中断模式寄存器INTMOD中的每1位,

6、指示一个中断源被设置成了哪一种模式。2021/6/49n中断模式寄存器INTMOD由32位组成,它们中的每一位对应一个中断源。中断模式寄存器INTMOD地址为0x4A000004,可读写,Reset值为0x00000000。2021/6/410 源中断挂起寄存器nS3C2410A中有两个中断挂起寄存器,一个是源挂起寄存器SRCPND,另一个是中断挂起寄存器INTPND。这两个挂起寄存器指示一个中断请求是或否被挂起(记录)。当多个中断源同时请求中断服务时,寄存器SRCPND多个对应位被设置成1。与此同时,经过仲裁处理后,寄存器INTPND中仅仅1位被自动地设置为1。如果多个中断被屏蔽,这些中断源

7、同时请求中断服务时,寄存器SRCPND中的对应位仍被设置为1,但是不引起寄存器INTPND值的改变。当寄存器INTPND中的1位被设置为1时,如果这1位对应IRQ请求,并且PSR中的I位为0;或者这1位对应FIQ请求,并且PSR中的F位为0,就会进入相应的中断服务程序。2021/6/411n寄存器SRCPND和INTPND能被读或写,中断服务程序必须清除相应的挂起位,方法是通过写1到SRCPND的对应位,能够将该位清0。然后再写1到INTPND的对应位,能够将INTPND的对应位清0。n中断挂起寄存器(interrupt pending register),也译作中断未决寄存器。2021/6/

8、412n源挂起寄存器SRCPND由32位组成,其中每1位与1个中断源相对应。n源挂起寄存器SRCPND地址为0x4A000000,可读写,Reset值为0x00000000。2021/6/413子源挂起寄存器n子源挂起寄存器(sub source pending register)SUBSRCPND中的每1位,指示对应的子中断源有无中断请求。 n子源挂起寄存器SUBSRCPND地址为0x4A000018,可读写,Reset值为0x00000000。2021/6/414 中断屏蔽寄存器n中断屏蔽寄存器INTMSK中的某1位被设置为1,指示对应的中断已经被屏蔽(禁止)。如果寄存器INTMSK中的某

9、1位为0,这1位对应的中断源产生的中断请求,通常将被服务。n如果寄存器INTMSK中的某1位为1,并且该位对应的中断源产生了中断请求,源挂起寄存器SRCPND中对应的源挂起位将被置1。2021/6/415n中断屏蔽寄存器INTMSK由32位组成,它们中的每1位对应1个中断源。 n中断屏蔽寄存器INTMSK地址为0x4A000008,可读写,Reset值为0xFFFFFFFF,具体含义见表7-42。2021/6/4165.优先权寄存器n优先权寄存器PRIORITY,地址为0x4A00000C,可读写,Reset值为0x7F。2021/6/417中断优先权产生模块n用于32个中断请求的优先权逻辑由

10、7个仲裁器(arbiter)组成,其中6个为第一级仲裁器,一个为第二级仲裁器,如图所示。n在图中,每个仲裁器,根据优先权寄存器PRIORITY中的1位仲裁模式控制(ARB_MODE)和2位选择控制信号(ARB_SEL)中的值,以如下方式,处理连接在仲裁器上的6个中断请求.2021/6/4182021/6/4196 中断挂起寄存器n中断挂起寄存器INTPND地址为0x4A000010,可读写,Reset值为0x00000000。2021/6/420 中断程序举例 【例】对于某公司生产的S3C2410X开发板,假设4个开关分别连接到S3C2410X(S3C2410X与S3C2410A功能完全相同)

11、芯片的GPF0/GPF2/GPG3/GPG11 4个引脚,这4个引脚设置为中断请求引脚,与中断请求和中断处理相关的内容有: 中断初始化中断初始化函数中与本例对应的C语言代码如下: 2021/6/421 rGPFCON|=20|24; /设置GPF0、GPF2为EINT0、EINT2功能rGPGCON|=26|222; /设置GPG3、GPG11为EINT11、EINT19功能 rINTMOD=0; / 中断模式寄存器设置为0,所有中断均为IRQ类型rEXTINT0|=40|48; / 设置EINT0、EINT2上升沿触发rEXTINT1|=412; / 设置EINT11上升沿触发 rEXTIN

12、T2|=412; / 设置EINT19上升沿触发rEINTMASK&=(111|119); / EINT11、EINT19对应屏蔽位置0,允许服务 rINTMSK&=(10|12|15); / EINT0、EINT2、EINT8_23对应屏蔽位置0,允许服务 / 假定中断优先权寄存器的值使用已经设定过的值, / 此处不再设置2021/6/422 中断请求一旦这4个中断请求引脚出现一个或多个中断请求,则: 如果EINT0或EINT2有请求,源挂起寄存器SRCPND0或SRCPND2被自动置1; 如果EINT11或EINT19有请求,外部中断挂起寄存器EINTPEND11或EINTPEND19被自

13、动置1,并且源挂起寄存器SRCPND5被自动置1; 由于这些中断都没有被屏蔽,经过优先权仲裁器,优先权最高的中断请求,在中断挂起寄存器INTPND中的对应位被置1,中断偏移寄存器INTOFFSET中自动被设置相应的偏移量; 作为IRQ请求送ARM920T内核; ARM920T CPU的当前程序状态寄存器CPSR中如果I位为0时,表示允许IRQ中断,当前正在执行的指令执行结束后,CPU响应IRQ请求。2021/6/423 中断响应n在中断响应过程,ARM920T CPU自动完成以下操作: 将PC的值,保存到IRQ方式下的连接寄存器LR中,返回时用; 将当前程序状态寄存器CPSR内容保存到IRQ方

14、式下的保留程序状态寄存器 SPSR中; 强制设置程序状态寄存器的方式位CPSR4:0为10010,系统进入IRQ方式; 强制设置程序状态寄存器的T状态位CPSR5为0,系统进入ARM状态; 强制设置程序状态寄存器的IRQ禁止位CPSR7为1,禁止CPU再次响应IRQ请求; 通常(没采用高向量地址配置)将IRQ异常入口地址0x00000018送程序计数器PC。此后程序从0x00000018处执行,分支到IRQ中断服务程序。2021/6/424n发生异常后,异常入口地址及这些地址中存放的指令见表,表中对应IRQ的入口地址0x00000018内,存放的是分支指令B HandlerIRQ,Handle

15、rIRQ通常是IRQ中断服务程序的入口地址。n然而,由于表中分支指令B的分支范围为32MB,当中断服务程序在内存中保存后,如果首地址离异常入口地址较远,超过32MB时,需要增加一段代码。这段代码应该与异常入口地址较近,并且能够分支到异常(中断)服务程序。例如对于中断请求IRQ,有以下代码:2021/6/425HandlerIRQ ;标号,程序入口, ;由0x00000018中B HandlerIRQ ;指令分支到此处SUB SP,SP,#4 ;修改栈指针,在栈顶留出4 ;字节空间,后续指令 ;STR R0,SP,#4将R0内容填入STMFD SP!,R0 ;保存工作寄存器R0内容LDR R0,

16、=HandleIRQ ;取出保存HandleIRQ异常向量的表地址LDR R0,R0 ;表地址的内容,即HandleIRQ地址,送R0 STR R0,SP,#4 ;R0的值,即HandleIRQ地址,存堆栈LDMFD SP!,R0,PC ;恢复工作寄存器R0内容;出栈 ;HandleIRQ地址到PC,实现分支2021/6/426n上述代码中的HandleIRQ是IRQ中断服务程序的入口地址,各异常(中断)服务程序的入口地址在异常向量表中已经定义。2021/6/427;异常向量表HandleReset # 4 ;Reset异常服务程序入口地址,占4字节HandleUndef # 4HandleS

17、WI # 4HandlePabort # 4HandleDabort # 4HandleReserved # 4HandleIRQ # 4 ;IRQ中断服务程序入口地址,占4字节HandleFIQ # 42021/6/428 中断向量表n进入IRQ中断服务程序后,要区分是哪个中断源提出了请求,并且应该转到对应的服务程序。n中断挂起寄存器INTPND的32位对应的32个中断源,有32段服务程序与之相对应。用32段服务程序中每段程序的起始地址,可以建立一个表,称为中断向量表。中断向量表如下:2021/6/429;中断向量表HandleEINT0 # 4;HandleEINT0是EINT0中断源 ;

18、对应的程序入口地址,长度为4字节HandleEINT1 # 4HandleEINT2 # 4HandleEINT3 # 4HandleEINT4_7 # 4;HandleEINT4_7是 ; EINT4EINT7中断源对应的程序入口地址, ;进入该程序,还要根据外部中断挂起寄存器 ; EINTPEND区分4个中断源中哪一个提出了 ;中断请求 HandleINT_ADC # 42021/6/430 IRQ中断服务程序n在IRQ中断服务程序中,要根据中断偏移寄存器值并结合中断向量表,转到中断请求对应的服务程序,部分汇编语言程序如下:2021/6/431IsrIRQ;标号 SUB SP,SP,#4;

19、修改栈指针,在栈顶留出4字节空间STMFD SP!R8-R9;保存R8,R9 LDR R9,=INTOFFSET;取中断偏移寄存器INTOFFSET地址 LDR R9,R9;读中断偏移寄存器值 LDR R8,=HandleEINT0;取中断向量表首地址 ADD R8,R8,R9,LSL #2;由中断偏移寄存器INTOFFSET中偏移 ;量乘以4,加中断向量表首地址, ;得到对应中断在向量表中的地址 LDR R8,R8;从向量表中取中断请求对应的服务 ;程序入口地址到R8 STR R8,SP,#8;R8存堆栈 LDMFD SP!,R8-R9,PC;从堆栈将原R8(对应中断入口地址) ;内容送PC,转移到对应中断服务程序, ;同时出栈R8,R92021/6/432END2021/6/433部分资料从网络收集整理而来,供大家参考,感谢您的关注!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号