S3C6410 中断分析
Exception(异常), 计算机体系结构中,异常或者中断是处理系统中突发事件的一种机制,几乎所有的处理器都提供这种机制。异常主要是从处理器被动接受的角度出发的一种描述,指意外操作引起的异常。而中断则带有向处理器主动申请的意味。但这两种情况具有一定的共性,都是请求处理器打断正常的程序执行流程,进入特定程序的一种机制。
从结构来看,外部设备产生的中断可以看成一种特殊的异常.除了中断之外,还有ARM不少固定的异常.包括以下七种:
1. 复位(Reset)
当按下RESET键后,会产生一个复位异常,此时程序跳转到复位异常处理程序处执行.当CPU重启后.一般刚好跳到这个复位异常来
2. 未定义指令
当ARM的处理器或协处理器遇到不能处理的指令时,产生未定义指令异常,采用这个机制,可以通过软件仿真扩展ARM或Thumb 指令集.
3. 软件中断(SWI)
硬件中断是有固定的硬件产生的中断,而软中断是指没具体的硬件产生,是CPU虚拟出来的.该异常由程序执行汇编SWI产生.软中断的优点,
l 可用于用户模式下的程序调用特权操作指令.Linux 系统调用就是使用这个异常来实现的.
l 有利用程序结构的优化.比如在Linux 驱动里,硬件中断不能长时间运行.但是很多软件的长时间操作依赖的于中断的调用.有时为解决这个冲突,会在驱动设计两级,从硬件存取用硬件中断,而长时间操作用软件中断的模拟.
4. 指令预取中止
若处理预取的指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出中止信号,但当预取的指令被执行时,才会产生指令预取中止的异常.比如用ADS把程序下载到开发板上0x8000地址上.就会产生Abort异常.
5. 数据中止
若处理器数据访问数据的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常
6. IRQ
当外部设备在外部中断脚产生中断信号时.即触发了IRQ中断.这是外部设备使用最常用的一种手段.
在S3C24X0是一个集成的SOC,内部除了ARM模块以外.还其它内部集成的模块,如USB,RTC,等.这一些模块在CPU内部也会有相应的中断线连到ARM920T的内核上.但这一些管脚在CPU外部是不可见的,只能用于寄存器去控制.
还一些GPIO脚就充当外部中断控制线,外部IC可以把自己中断信号线连到相应的中断脚上.当外部产中断信号后,CPU就可以知道,外设有中断发来.
7. FIQ
快速中断,类似于IRQ,但是具有较快响应速度.而且设为FIQ的条件也比较严格,比如一次触发只能有一个FIQ
一句话,中断(IRQ,FIQ,SWI)是异常中的一个特例。当产生外部中断时,大部分CPU会只产生一个异常。在异常处理程序里软件再去读不同的中断寄存器分析后来调用ISR。这里ISR是由软件来执行的。象S3C2440就是这样机制。
在S3C6410中,还可以采用简化的中断处理流程。由CPU直接去调用中断的ISR来处理。 这样中断处理软件的编写难度就大大下降了。
向量(vector)
异常处理函数或中断处理函数的地址都会按中断号的顺离顺序排列在一个连续的内存当中,从C语言的角度来看,可以看成是一个指针数组。数组又称为向量(Vector).
中断号为0-31是VIC0组
中断号为32-63是VIC1组
x为0,1,0-31中断使用VIC0INTENABLE,32-63中断使用VIC1INTENABLE.以下各寄存器均同,不再重复.
向VICxINTENCLEAR对应位置1表示关闭这个中断.
设置中断类型
设置某一个中断是IRQ还是FIQ,注意只有一个中断才能FIQ.设置对应位1表示设为FIQ模式。
INT_EINT0-INT_EINT4是外部中断,是由CPU外的外设来触发的,它的触发哪一个中断取决外设联接哪一个GPIO中断脚。
第0组,共28脚.GPN0-GPN15 (16脚),GPL8-GPL14(7脚),GPM0-GPM4 (5脚)
第1组,由GPA0-GPA7,共8个中断脚
第2组,由GPC0-GPC0,共8个中断脚…
…
第8组,由GPP0-GPP14,共15个中断脚
第9组,由GPQ0-GPQ8,共9个中断脚
第0组的第4-11脚将触发INT_EINT1=1中断
第0组的第12-19脚将触发INT_EINT2=32中断
第0组的第20-27脚将触发INT_EINT3=33中断
第1组-第9组所有设备只触发INT_EINT4=53中断
由External Interrupt Pending Register 来判断
第0组由EINT0PEND来判断
第1,2组由EINT12PEND来判断
临时关闭外部中断
EINTxMask是临时性关闭中断
为1表示关闭某一个中断,为表示打开0,一般只要需要使用中断才会打开。
EINT0MASK是第0组的使用
EINT12MASK是第1,2组的中断掩码
依次类推...
定义硬件滤波类型
对于一些波形不规整的外部中断信号,可以通过滤波电路让其变成规整,这样会简化软件的编写.
S3C6410有两种滤波电路,一种延时滤波(如按钮类中断可以采用这一类型),一种是数字采样滤波.第二种滤波电路还要设采样宽度。
第0组的滤波用EINT0FLTCON0,EINT0FLTCON1, EINT0FLTCON2, EINT0FLTCON3配置.
FLTEN表示是否打开滤波功能,FLTSEL是设置滤波方式,EINTn表示数字滤波采校的宽度
第9组滤波 采用EINT9FLTCON
S3C6410 中断分析相关推荐
- ARM中断分析之三:WinCE驱动的中断分析
现在有许多高端的ARM芯片,像苹果.三星.华为都采用ARM芯片做为智能手机芯片. 这篇文章介绍基于ARM的WinCE操作系统的驱动的中断分析.WinCE驱动分为两类,这里介绍流驱动,流驱动比较简单. ...
- 转:S3C6410中断控制详解
Andrew Huang bluedrum@163.com 转载请注明作者及联络方式 如果你熟悉S3C2440的中断处理机制,可以发现S3C6410大大简化的中断编程处理. 相对于S3C2440 ...
- stm32 hal串口中断分析
stm32 hal串口中断分析 startup_stm32f103xe.s(115) : DCD USART1_IRQHandler USART1 ...
- TMS320C6678 多核学习 中断分析 实例+解析
TMS320C6678 多核学习 中断分析 实例+解析 TMS320C6678 了解c66x内核 C66x corepac的位置 内部架构 中断 事件 中断控制器 中断例程 环境 预期结果 运行结果 ...
- S3C2440中断解析和基于WINCE操作系统的中断分析(整理于网络,用于按键中断使用)
在调试CAN总线的时候,遇到了操作系统的中断,为了彻底的弄清楚中断是怎么回事?我先从底层的中断开始研究,在这里我们只讨论外部中断,下面就结合S3C2440TEST测试程序来分析一下中断是怎么执行的:我 ...
- arm linux 中断 分析,armlinux中断异常的处理分析.pdf
基于 ARM Linux 中断.异常的处理分析 本文是基于ARM S3C2410X 系统的Linux 2.6 中断.异常和系统调用的处理分析. 主要有以下几个部分: 1. ARM 的硬件中断机制 2. ...
- Linux中断分析2
PCI的I/O空间.PCI的存储空间和PCI的配置空间 I/O空间和存储空间提供给设备驱动程序使用,而配置空间则由Linux内核中的PCI初始化代码使用. 内核在启动时负责对所有PCI设备进行初始化, ...
- S3C6410中断分类
S3C6410共64个中断源,按硬件分组为 VIC0 和 VIC1 两组.各组由一个相应的寄存器来处理. 中断号 中断源 ...
- ls2k1000在linux3.10内核下的中断分析
目录 1 基本知识 1.1 ls2k1000的中断组成 1.2 GS264中断相关的寄存器 2 ls2K1000 在 linux3.10 内核下的中断初始化过程 2.1 大致过程 2.2 函数具体分析 ...
最新文章
- getTasksWithCompletionHandler的用法
- 结果方程模型(SEM)的理论和基本实现过程
- 37个我爱Ruby的理由
- java jpopupmenu事件_Java+Swing+常用事件和监听器接口
- Java 按位运算符(,|,^,,)
- 面试官:给我说说你对Java GC机制的理解?
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 模拟电路---利用反相器构成方波电路在实际电路中的使用
- 矩阵分析与应用(二)
- JavaWeb实现快递物流查询
- Windows 10, version 21H2 (released Nov 2021) 简体中文版、英文版(企业版)下载
- 客户端和服务器的通信协议,客户端和服务器的通信协议
- spring框架:(二)bean标签中的scop、生命周期以及注入方式
- 数据库和网页之间的数据交互
- flex 实现水平布局 三等分
- php crypt函数缓冲区溢出漏洞,GIMP 堆缓冲区溢出漏洞(CVE-2017-17784)
- 《Pro SQL Server Internals, 2nd edition》节选翻译(4)
- linux版docker安装镜像
- solidworks插件打包及简单的注册、解码、混淆、脱壳。
- 无线传感器网络知识点