s3c2410s的社保中断后有哪些影响源有哪些

S3C2410中文手册第14章_中断控制器07
上亿文档资料,等你来发现
S3C2410中文手册第14章_中断控制器07
第十四章中断控制器;S3C2440A中的中断控制器可以从60个中断源;当接收来自内部外设和外部中断请求引脚的多个中断请;仲裁过程依赖于硬件优先级逻辑且其结果写入中断未决;同中断源生成的中断;14.1中断控制器操作;14.1.1程序状态寄存器(PSR)的F位和L位;如果在ARM920T的CPU中的程序状态寄存器的;ARM920T有两个类型的中断模式:FIR和I
第十四章中断控制器S3C2440A中的中断控制器可以从60个中断源接收中断请求。这些中断源由内部外设提供,例如DMA控制器、UART、IIC等。在这些中断源中,UARTn、AC97和外部中断EINTn对于中断控制器来说是或逻辑。当接收来自内部外设和外部中断请求引脚的多个中断请求时,在仲裁过程后中断控制器请求ARM920T的FIR或IRQ中断。仲裁过程依赖于硬件优先级逻辑且其结果写入中断未决寄存器,其帮助用户通报那些由不同中断源生成的中断。14.1中断控制器操作14.1.1程序状态寄存器(PSR)的F位和L位如果在ARM920T的CPU中的程序状态寄存器的F位置1,CPU不能接收来自中断控制器的FIR,如果程序状态寄存器的L位被置1,则CPU不能接收来自中断控制器的IRQ。所以,通过清0程序状态寄存器中的F位和L位且清0INTMSK寄存器中的相应位,中断控制器可以接收中断。14.1.2中断模式ARM920T有两个类型的中断模式:FIR和IRQ。所有的中断源决定了哪种模式的中断请求。14.1.3中断未决寄存器S3C2440A有两个中断未决寄存器:源未决寄存器(SRCPND)和中断未决寄存器(INTPND)。这些未决寄存器指出了是否中断请求未决。当中断源请求中断服务,中断源未决寄存器(SRCPND)的相应位置1,同时在仲裁过程后中断未决寄存器(INTPND)的一个位自动的置1。如果中断被屏蔽,则SRCPND寄存器的相应位被置1。但不引起INTPND的位改变。如果INTPND的未决位置位,只要L和F标志为0,中断服务程序开始运行。SRCPND和INTPND寄存器可以被读写,因此中断服务程序可以通过对SRCPND寄存器相应位写1来清除未决条件,对于INTPND寄存器清除未决条件也采用一样的方法。14.1.4中断屏蔽寄存器如果相应的屏蔽位置1,寄存器指出某个中断无效。如果INTMSK的一个中断屏蔽位是0,中断将被正常的服务。如果相应的屏蔽位置1且中断产生,则源未决位被置位。14.1.5中断源中断控制器支持60个中断源如下表所示源INT_ADCINT_RTCINT_SPI1INT_UART0INT_IICINT_USBHINT_USBDINT_NFCONINT_UART1INT_SPI0INT_SDIINT_DMA3INT_DMA2INT_DMA1INT_DMA0INT_LCDINT_UART2INT_TIMER4INT_TIMER3INT_TIMER2INT_TIMER1INT_TIMER0INT_WDT_AC97INT_TICKnBATT_FLTINT_CAMEINT8_23EINT4_7EINT3EINT2EINT1EINT0描述ADCEOCandTouchinterrupt(INT_ADC_S/INT_TC)RTCalarminterruptSPI1interruptUART0Interrupt(ERR,RXD,andTXD)IICinterruptUSBHostinterruptUSBDeviceinterruptNandFlashControlInterruptUART1Interrupt(ERR,RXD,andTXD)SPI0interruptSDIinterruptDMAchannel3interruptDMAchannel2interruptDMAchannel1interruptDMAchannel0interruptLCDinterrupt(INT_FrSynandINT_FiCnt)Interrupt(ERR,RXD,andTXD)UART2Timer4interruptTimer3interruptTimer2interruptTimer1interruptTimer0interruptWatch-Dogtimerinterrupt(INT_WDT,INT_AC97)RTCTimetickinterruptBatteryFaultinterruptCameraInterface(INT_CAM_C,INT_CAM_P)Externalinterrupt8C23Externalinterrupt4C7Externalinterrupt3Externalinterrupt2Externalinterrupt1Externalinterrupt0仲裁组ARB5ARB5ARB5ARB5ARB4ARB4ARB4ARB4ARB4ARB4ARB3ARB3ARB3ARB3ARB3ARB3ARB2ARB2ARB2ARB2ARB2ARB2ARB1ARB1ARB1ARB1ARB1ARB1ARB0ARB0ARB0ARB014.1.6子中断源子源INT_AC97INT_WDTINT_CAM_PINT_CAM_CINT_ADC_SINT_TCINT_ERR2INT_TXD2INT_RXD2INT_ERR1INT_TXD1INT_RXD1INT_ERR0INT_TXD0INT_RXD0描述AC97interruptWatchdoginterruptP-portcaptureinterruptincamerainterfaceC-portcaptureinterruptincamerainterfaceADCinterruptTouchscreeninterrupt(penup/down)UART2errorinterruptUART2transmitinterruptUART2receiveinterruptUART1errorinterruptUART1transmitinterruptUART1receiveinterruptUART0errorinterruptUART0transmitinterruptUART0receiveinterrupt源INT_WDT_AC97INT_WDT_AC97INT_CAMINT_CAMINT_ADCINT_ADCINT_UART2INT_UART2INT_UART2INT_UART1INT_UART1INT_UART1INT_UART0INT_UART0INT_UART014.1.7中断优先级生成模块32个中断请求优先级逻辑包括基于仲裁器的7个翻转:如图14-1所示的6个一级仲裁器和一个2级仲裁器14.1.8中断优先级每个仲裁器基于一个位仲裁器模式控制(ARB_MODE)和选择控制信号(ARB_SEL)的两位来处理6个中断请求。如果ARB_SEL位是00b,优先级是REQ0,REQ1,REQ2,REQ3,REQ4,和REQ5.如果ARB_SEL位是01b,优先级是REQ0,REQ2,REQ3,REQ4,REQ1,和REQ5.如果ARB_SEL位是10b,优先级是REQ0,REQ3,REQ4,REQ1,REQ2,和REQ5.如果ARB_SEL位是11b,优先级是REQ0,REQ4,REQ1,REQ2,REQ3,和REQ5.注意仲裁器的REQ0总是有最高优先级,REQ5总是有最低优先级。此外通过改变ARB_SEL位,我们可以翻转REQ1到REQ4的优先级。如果ARB_MODE位置0,ARB_SEL位不会自动改变,使得仲裁器在一个固定优先级的模式下操作(注意在此模式下,我们通过手工改变ARB_SEL位来配置优先级)。另外,如果ARB_MODE位是1,ARB_SEL位以翻转的方式改变。例如如果REQ1被服务,则ARB_SEL位自动的变为01b,把REQ1放到最低的优先级。ARB_SEL变化的详细规则如下:如果REQ0或REQ5被服务,ARB_SEL位完全不会变化。如果REQ1被服务,ARB_SEL位变为01b。如果REQ2被服务,ARB_SEL位变为10b。如果REQ3被服务,ARB_SEL位变为11b。如果REQ4被服务,ARB_SEL位变为00b。14.2中断控制器特殊寄存器在中断控制器中有五个控制寄存器:中断源未决寄存器,中断模式寄存器,屏蔽寄存器,优先级寄存器和中断未决寄存器。中断源的所有中断请求首先都是在中断源未决寄存器中等级。基于中断模式寄存器中断请求分为两组包括快速中断请求和中断请求。对于多IRQ的仲裁过程是基于优先级寄存器。14.2.1中断源未决寄存器SOURCEPENDINGREGISTER(SRCPND)SRCPND寄存器包括32位,每位与一个中断源相关。如果相应的中断源产生中断请求且等待中断服务,则每个位置1。因此这个寄存器指出那个中断源在等待请求服务。注意SRCPND的每个位都由中断源自动置位,不管INTMASK寄存器的屏蔽位。此外,SRCPND寄存器不会受到中断控制器的优先级逻辑的影响。对于一个特定中断源的中断服务程序中,SRCPND寄存器的相应位必须被清除目的是下次能正确得到同一个中断源的中断请求。如果你从中断服务程序返回却没有清除该位,中断控制器将操作好像又有同一个中断源的中断请求到来。换言之,如果SRCPND的一个特殊位置1,其总是认为一个有效的中断请求等待服务。清除相应位的时间依赖于用户的需求。如果你想收到另一个来此同一个中断源的有效请求,你应该清除相应的位,然后使能中断。你可以通过写数据到这个寄存器来清除SRCPND寄存器的某个位。你可以通过对相应位置1来清除相应位。如果你对相应位写0,则该位的数值保持不变。寄存器SRCPND地址0x4A000000读写R/W描述指出中断请求的状态0=中断未请求1=中断源已经申请中断复位值0xSRCPNDINT_ADCINT_RTCINT_SPI1INT_UART0INT_IICINT_USBHINT_USBDINT_NFCONINT_UART1INT_SPI0INT_SDIINT_DMA3INT_DMA2INT_DMA1INT_DMA0INT_LCDINT_UART2INT_TIMER4INT_TIMER3INT_TIMER2INT_TIMER1INT_TIMER0INT_WDT_AC97INT_TICKnBATT_FLTINT_CAMEINT8_23EINT4_7EINT3EINT2EINT1EINT0位[31][30][29][28][27][26][25][24][23][22][21]0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求未请求描述1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求已请求[20][19][18][17][16][15][14][13][12][11][10][9][8][7][6][5][4][3][2][1][0]初始值包含各类专业文献、高等教育、中学教育、专业论文、外语学习资料、幼儿教育、小学教育、应用写作文书、S3C2410中文手册第14章_中断控制器07等内容。 
 空闲模式 空闲模式下,除了总线控制器,存储控制器,中断控制器,功率管理模块以外 ...S3C2410中文手册第14章 ... S3C2410中文手册第17章 ... S3C2410中文手册第18...  第十一章概述 异步串口通信 S3C2410 的 UART 提供 3 个独立的异步串行通信端口,每个端口可以基于中断 或者 DMA 进行操作。 换句话说, UART 控制器可以在 CPU 和...  [23:4]这 20 个外部中断受 EINTPENDn 寄存器控制,可以通过向寄 存器的相应...S3C2410中文手册第11章 ... S3C2410中文手册第14章 ... S3C2410中文手册第17...  第14章_安全引擎_mpc83xx中... 88页 免费 S3C2410中文手册第21章_II... ...支持作为 发起者 目标 设备 是否 定义 中断响应 隐式提交给系统中断控制器的读...  S3C2410中文手册第15章_... 36页 1下载券L...LCD 控制器什么是液晶显示器(LCD)液晶,是一种在...为了读取 LINECNT 的值,中断需要被屏蔽。如果一个...  I2C 控制器仅支持 I2C 总线设备(标准和快速总线模式),不支持 C 总线设备 I2C...S3C2410中文手册第11章 ... S3C2410中文手册第14章 ... S3C2410中文手册第17...  则中断当前程序流程 跳转到一 中断当前程序流程,跳转到一 硬件查看 中断当前程序...S3C2410中文手册第14章_... 12页 1下载券 s3c2410中断控制器工作原... 23...  DMA 传输在此模式下,接收和发送 FIFO 由 DMA 控制器 access,DMA 服务请求由 ...S3C2410中文手册第11章 ... S3C2410中文手册第14章 ... S3C2410中文手册第17...  arms32410东莞理工钟国斌资料S3C2410中文手册第10章_PWM定时器_计算机硬件及网络_...当 TCNTn 到 0 且中断使能时,定时器控制逻辑将改变输出电平(TOUTn 再次反转... 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
下载积分:900
内容提示:S3C2410,sc2,sc,sco,sc0什么意思,sc03e,sc20
文档格式:PPT|
浏览次数:5|
上传日期: 07:13:23|
文档星级:
该用户还上传了这些文档
官方公共微信S3C2410 && WinCE6.0的中断处理分析
编辑:www.fx114.net
本篇文章主要介绍了"S3C2410 && WinCE6.0的中断处理分析",主要涉及到S3C2410 && WinCE6.0的中断处理分析方面的内容,对于S3C2410 && WinCE6.0的中断处理分析感兴趣的同学可以参考一下。
原文地址::/we-hjb/archive//1329830.html
&S3C2410的内核是ARM920T,所以,这里先介绍一下ARM920T的异常。ARM920T中有一个当前程序状态寄存器(CPSR),其中BIT6和BIT7分别控制FIQ和IRQ的使能与否。大家经常说的开中断和关中断,就是指的设置这两个BIT。
&&&&&& ARM体系的异常中断如下图所示:
&&&&&&&&&&&&&&&&&
&&&&&可以看到,ARM920T中一共有7中异常模式,如果同一时刻有多个异常发生,系统则通过优先级顺序来决定处理其中的哪一个异常。他们之间的优先级顺序从高到低依次是:
1.&&&&&&&Reset复位
2.&&&&&&&Data Abort数据访问中止
3.&&&&&&&FIQ&快速中断请求
4.&&&&&&&IRQ&外部中断请求
5.&&&&&&&指令预取中止
6.&&&&&&&未定义的指令和软件中断
当系统发生异常时,PC指针将跳转到相应的异常中断处理程序处。异常中断和其处理程序之间的对应关系被称为异常向量表,就是通常所说的中断向量表。一般情况下,它存放在低地址(0x0),但在WinCE中,该表存放在高地址(0xffff0000)。
S3C2410的中断处理过程如下图所示:
&&&&&&&&&&
可以看到,S3C2410中跟中断密切相关的寄存器主要有以下几个:
SUBSRCPND(二级源待决寄存器):硬件产生中断后,该寄存器的相应位被置1;
SUBMASK(二级屏蔽寄存器):若该寄存器的对应位为1,则屏蔽该中断,不再往前提交;
SRCPND(源待决寄存器):如果是二级中断源产生了中断,当SUBSRCPND和SUBMASK满足条件时,该寄存器的相应位被置1,或者由一级中断源直接引起该寄存器的对应位置1;
MASK(一级屏蔽寄存器):如果该寄存器的对应位为1,则屏蔽该中断,不再往前提交;
MODE(中断模式寄存器):决定中断是FIQ模式还是IRQ模式,系统中只能有一个FIQ中断。若当前中断为FIQ模式,则产生一个FIQ异常,CPU进入FIQ异常处理程序。
PRIORITY(优先级控制寄存器):控制各中断源的优先级。当有多个中断源同时发出请求时由优先级最高的中断源最终产生IRQ。
INTPND(中断待决寄存器):当SRCPND某一位被置1,且没有被屏蔽,则该寄存器的相应位也被置1,同时产生一个IRQ异常,CPU进入IRQ异常处理程序。
IRQ异常处理程序中,需要清除SRCPND、INTPND。清除SRCPND和INTPND的方法比较特殊,并不是往对应的位写0,相反,应该往对应的位写1。一般是将其值读取出来,再写进去,以完成清除SRCPND和INTPND的工作。
除了以上几个寄存器外,2410还有一个INTOFFSET寄存器,用来表明当前是哪一个中断请求处理。WinCE的OEMInterruptHandler()函数,就是根据其值来判断当前是哪一个中断发出请求。该寄存器在清除SRCPND和INTPND时,被自动复位。所以,代码中不必对其进行处理。
如果中断源是EINT4-23,则还需处理EXTINTn、EINTFLT、EINTMASK和EINTPEND等几个寄存器。另外,由于2410的中断引脚一般与IO复用,所以在使用特定的外部中断之前,需要设置相应的GPIO,使其工作在中断模式下。
WinCE6.0中的中断处理过程如下图所示:
&&&&&&&&&&&&&&&
&&&&&可以看到,整个处理过程分为四层,分别是硬件、内核、OAL和驱动。硬件产生一个IRQ,CPU进入中断服务程序,调用OAL中的OEMInterruptHandler()函数,根据IRQ返回一个SYSINTR,内核根据该SYSINTR,设置一个事件,驱动中捕获到该事件,执行相应的处理程序,完成处理后,调用InterruptDone(),通知CPU中断处理完成。
这里说明一下SYSINTR和IRQ的概念。IRQ一般被认为是物理中断号,由硬件决定。SYSINTR是逻辑中断号,一般跟IRQ一一对应。这种对应关系可以在OAL中静态建立,一般通过函数OALIntrStaticTranslate()实现,静态映射的IRQ一般是MCU内部的中断源,如USB
Host。为了提高驱动的可移植性,通常采用动态映射的方式,如网卡驱动。不同的硬件平台,可能使用不同的外部中断供网卡使用,通过动态映射的方式,只需修改注册表中的相应键值就能完成驱动的移植,而无须修改代码。驱动中动态映射IRQ的方法是调用函数KernelIoControl(),第一个参数为IOCTL_HAL_REQUEST_SYSINTR,传入物理中断号IRQ,正确返回后,会产生一个SYSINTR,最终完成动态转换的是函数OALIntrRequestSysIntr()。IRQ和SYSINTR的映射关系在文件C:\WINCE600\PLATFORM\COMMON\SRC\COMMON\INTR\BASE\map.c中实现。
驱动中使用中断的典型过程如下:
1.&&&&&&&初始化GPIO,以及相应中断寄存器,配置中断的工作模式。
2.&&&&&&&建立一个SYSINTR与IRQ对应,调用函数KernelIoControl()。
3.&&&&&&&创建一个事件与SYSINTR关联,调用函数CreateEvent()。
4.&&&&&&&创建一个线程,在线程中等待创建的事件,调用函数WaitForSingleObject()。
5.&&&&&&&完成处理后,通知内核本次中断处理结束,调用函数InterruptDone()。
OAL层跟中断相关的有如下几个函数:
OALIntrInit():初始化中断寄存器及相应的GPIO,可建立静态的IRQ到SYSINTR的映射关系。
OALIntrRequestIrqs():获取设备的IRQ号,如通过IO Address获取该设备对应的IRQ。
OALIntrEnableIrqs():使能中断源,主要完成清除中断屏蔽寄存器和中断待决寄存器。
OALIntrDisableIrqs():关闭中断源,通过设置中断屏蔽寄存器的相应位以屏蔽中断源。
OALIntrDoneIrqs():清除中断屏蔽寄存器和中断待决寄存器使MCU能处理下一次中断。
OEMInterruptHandler():将IRQ号转换为SYSINTR,内核的中断服务程序将根据此值设定特定的事件。
内核中跟中断相关的工作主要有以下几个部分:
1.&&&&&&&&&定义异常处理函数,其实现文件为C:\WINCE600\PRIVATE\WINCEOS\COREOS\NK\KERNEL\ARM\armtrap.s。
2.&&&&&&&&&创建中断向量表,其实现文件为C:\WINCE600\PRIVATE\WINCEOS\COREOS\NK\KERNEL\ARM\exvector.s
3.&&&&&&&&&中断向量的初始化,其实现在文件C:\WINCE600\PRIVATE\WINCEOS\COREOS\NK\KERNEL\ARM\mdarm.c中,其中的代码表明WinCE的中断向量表在高端(0xffff0000)。
本文标题:
本页链接:S3C2410_ARM_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
S3C2410_ARM
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:7.17MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢

我要回帖

更多关于 第一类危险源有哪些 的文章

 

随机推荐