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中断处理相关推荐
- OK6410开发板学习之外部中断(按键点亮led和蜂鸣器)
中断在嵌入式里面是很常见的一个功能了.通过这个功能,可以让CPU减轻很多负担,不用不断的查询设备的状态.提高了CPU的效率. 中断的大体过程如下: 中断源检测中断信号产生,然后将中断信号发送给中断控制 ...
- S3c6410linux下DMA驱动
DMA 谨以此文纪念过往的岁月. DMA传输支持4种格式,内存到内存,设备到内存,内存到设备,设备到设备. 对于内存到内存比较好理解,就是不通过CPU的复制,直接使用进行数据传输. 1.dma的初始化 ...
- s3c6410 uboot代码分析《一》
来源:http://hi.baidu.com/__eabi/blog/item/be67533797bc73f014cecb49.html 以下用以记录uboot代码的分析过程,目标是s3c6410, ...
- S3C6410 KeyPad驱动(下)
S3C6410 KeyPad驱动(下) 1.1 按键中断处理流程 1.1.1 按键扫描的处理流程 在初始状态,所有的列线(输出)处于低电平,当没有按键按下的状态时,所有的行线(输入)都是高电平(使用上 ...
- ARM11---中断---向量中断控制器(VIC)---结合s3c6410
今天看了看ARM1176手册关于中断的那部分,感觉挺有意思的.记下来! (一).首先说一下PL192向量中断控制器 一个中断控制器是用来处理多个中断源的外围设备,通常包含以下几个特性: 1.为每个中断 ...
- S3C6410开发板adc驱动代码分析及测试代码分析
在本文中,我们对S3C6410开发板adc驱动代码的实现过程进行分析,然后通过一个实例对adc功能进行测试.在本文的资源中包含了设备驱动的源码和测试的源码. 一.设备驱动源码分析 adc的设备驱动主要 ...
- 转:S3C6410中断控制详解
Andrew Huang bluedrum@163.com 转载请注明作者及联络方式 如果你熟悉S3C2440的中断处理机制,可以发现S3C6410大大简化的中断编程处理. 相对于S3C2440 ...
- S3C6410 中断分析
Andrew Huang bluedrum@163.com 转载请注明作者及联络方式 一.中断的场景模拟 ----------------------------------------------- ...
- 基于s3c6410 otg controller的gadget driver及usb枚举分 析
一.简介 一个完整的USB系统由两部分构成,即usb主机(usb host)和usb设备(usb device).usb主机通常是指我们的pc机.具有host controller的嵌入式设 ...
最新文章
- 【Spring学习笔记】之【2.3Ioc配置使用】
- [原创]RCP项目:数字图像处理软件
- 【RabbitMQ】一文带你搞定RabbitMQ延迟队列
- [转]Git分支管理策略
- vb仿excel控件_如何通过INTOUCH组态软件做EXCEL报表(含代码)
- 正则表达式快速入门,转载
- linux内存管理简介,Linux操作系统的内存管理特性简介 (3)
- 洛谷P2463 Sandy的卡片【后缀数组】【二分】
- 卡尔曼滤波、扩展卡尔曼滤波、无迹卡尔曼滤波以及粒子滤波原理
- java在线订单系统源码_春哥酒店在线预订微信小程序源码系统正式发布!
- 用户·角色·权限·表
- GitHub 标星 6W:口吐芬芳终端助手
- 最新Spring Boot视频教程附代码笔记资料(50G)
- 《梦的解析》读后感(来给自己解解梦吧)
- IT项目经理前景及优劣势分析
- 3D打印机的优势到底在哪
- Python零基础速成班-第1讲-认识Python,课程目标,安装环境以及完成第一行代码“hello world”
- html加入3d模型的,3dmax怎么给模型添加材质
- (数据库存储应用)S2数据库和表的基本操作
- [图像处理]-Opencv中数据类型CV_8U, CV_16U, CV_16S, CV_32F 以及 CV_64F是什么?
热门文章
- 计算机视觉AI大牛沈春华全职回国,已加入浙大
- 深入了解JS的Number类型
- 微信扫码支付功能(1)---通过谷歌二维码工具生成付款码
- Python 实现 淘宝秒杀 聚划算 自动提醒 源码
- 基于三菱运动控制系统生成丝滑无比的凸轮曲线(上)
- 来个模态kuang_关于模态窗口(showModalDialog)的专题【收藏】
- 写给5年前自己的一封信
- 【汇正财经】股票面值和股票净值是什么?怎么计算?
- 华为S2300交换机端口镜像配置
- 你需要启用steam社区界面功能以进行购买_新版的Steam 库现已开放更新!玩家们可自行参与测试版本...