S3C6410中断系统
S3C6410的中断主要改进是.
增加中断向量控制器,这样在S3C2440里需要用软件来跳转的中断处理机制,在S3C6410完全由硬件来跳转。你只要把ISR地址是存在连续向量寄存器空间,而不是象S3C2440自行分配空间自行管理。
换句话说,在S3C2440下是由CPU触发IRQ/FIQ异常,由异常处理函数里再查找相关中断寄存器来跳到指定的ISR,而可以全部由S3C6410的VIC硬件来自动处理。 这个大大简化中断处理编程。
另一个是外部中断加入滤波电路,这样原来需要软件去毛刺的地方均可以采用硬件来进行滤波了,这样大大简化外部中断处理。
S3C6410 中断号
64个中断按硬件分组分成VIC0, VIC1两个组,各组由一个相应寄存器来处理。
中断号为0-31是VIC0组
中断号为32-63是VIC1组
S3C6410中断操作很简单。
打开中断 VICxINTENABLE
x为0,1,0-31中断使用VIC0INTENABLE,32-63中断使用VIC1INTENABLE.以下各寄存器均同,不再重复.
对应位为1表示这个中断可用,如0号中断有效,是VIC0INTENABLE的第0位为1
关闭一个中断
向VICxINTENCLEAR对应位置1表示关闭这个中断.
这个是三星比较明智的改进,不会让开发感到比较迷惑的地方
设置中断类型
设置某一个中断是IRQ还是FIQ,注意只有一个中断才能FIQ.设置对应位1表示设为FIQ模式。
设置S3C6410的向量地址(ISR地址)
注意在S3C6410自已从了各用32个地址连续的寄存器然成两个寄存器数组。首地址分别是0x71200100和0x71300100.你可以象指针数组一样来操作它们,数组的下标就是中断号。
这样设置让开发者大大简单化ISR的向量组织。
设置中断优先级
这个也采用用32*2寄存器形成两个优先级数组。每一个寄存器对应优先级别,取值范围在0-15之间.
中断运行后指示
这个因为了用VIC,现在省掉了S3C2440一大堆的SRCPND,INTPND,INTOFFSET,SUBSRCPND等寄存器。直接由VICxADDRESS来指示当前的ISR地址。
注意这个VICxADDRESS的寄存器,在S3C6410里称为在System BUS.调用。这种方式不建议调用,因为这种模式相当于S3C2440的用软件进行ISR跳转.
这三星的给的参考流程。
更为简单的调用方式.是VIC port 模式,是我强烈推荐的模式,它是系统产生中断后,将由VIC直接去执行相应的ISR。这不仅上编程变成简单,而且效率上更快,因为它没有访问VICxADDRESS和在System BUS执行的时间
使用这种模式,只需要在启动加上特定的代码
外部中断编程
----------------------------------------------------------
除INT_EINT0-INT_EINT4以外,全部中断是由S3C6410内部的模块触发的。称为内部中断
INT_EINT0-INT_EINT4是外部中断,是由CPU外的外设来触发的,它的触发哪一个中断取决外设联接哪一个GPIO中断脚。
象开发板的网络控制器,按钮等都是挂在某一些GPIO脚上。它们都是使用典形外部中断.
外部中断脚
S3C6410 分9组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组的第0脚到第3脚的设备将触INT_EINT0=0中断
第0组的第4-11脚将触发INT_EINT1=1中断
第0组的第12-19脚将触发INT_EINT2=32中断
第0组的第20-27脚将触发INT_EINT3=33中断
第1组-第9组所有设备只触发INT_EINT4=53中断
我们可以看到,每一个组都是多个中断脚共享一个中断号的。其中第0组比较常用。占用了3个中断.
在ISR中,如何判断是哪一个中断脚的产生中断?
不同的IO脚上多个设备产生同一个中断,软件如何知道是哪一个脚?
由External Interrupt Pending Register 来判断
第0组由EINT0PEND来判断
第1,2组由EINT12PEND来判断
依此类推,EINT34PEND,EINT56PEND, 一直到EINT9PEND 来指示
外部中断信号类型
这里设置中断产生何种信号才会被捕获。主要是五种,低电平,高电平,上升沿,下降沿或者两者均可,
第0组用 EINT0CON0/EINT0CON1两个寄存器来设定.
第1,2组采用 EINT12CON ,
第3,4组采用EINT34CON,
依此类推
临时关闭外部中断
EINTxMask是临时性关闭中断
为1表示关闭某一个中断,为表示打开0,一般只要需要使用中断才会打开。
EINT0MASK是第0组的使用
EINT12MASK是第1,2组的中断掩码
依次类推...
定义硬件滤波类型
对于一些波形不规整的外部中断信号,可以通过滤波电路让其变成规整,这样会简化软件的编写.
S3C6410有两种滤波电路,一种延时滤波(如按钮类中断可以采用这一类型),一种是数字采样滤波.第二种滤波电路还要设采样宽度。
第0组的滤波用EINT0FLTCON0,EINT0FLTCON1, EINT0FLTCON2, EINT0FLTCON3配置.
FLTEN表示是否打开滤波功能,FLTSEL是设置滤波方式,EINTn表示数字滤波采校的宽度
第1,2组的滤波采用 EINT12FLTCON
第3,4组的滤波采用 EINT34FLTCON
第9组滤波 采用EINT9FLTCON
外部中断编程
外部中断除了中断编程所有流程外,
一般额外配置相应的GPxCON配置成中断脚。
还要配置滤波方式和中断信号方式。
还要打开外部中断掩码
在ISR中,在最后除了要把VICxADDRESS清0外,还需要清除 VICxSOFTINTCLEAR相应位。
S3C6410中断系统的更多相关文章
- 【原创】MIPS中断系统的板级验证及实例测试
“五一”假期前后这约五天时间,终于将MIPS中断系统进行了板级验证及实例测试.因为老师给的交叉编译工具不会用,所以测试代码完全用MIPS汇编编写.使用MARS而没有用QtSpim,其实我觉得SPIM这 ...
- 【原创】MIPS浅议之——中断系统之我见
最近,准确的说应该是最近两个月的时间,我都在研究MIPS的异常与中断.或者可以说,最近这两个月,我才真正了解中断系统的整个结构和处理流程以及为什么要这样做?这段时间我最大的体会就是以前我们在“计算机组 ...
- STM32F072B-DISCO 深入研究 中断系统
STM32F072B-DISCO 是我认为性价比最高的一款CPU的demo系统,以前一直在用PIC的CPU但最近几年ST异军突起,几次课题查找芯片无一例外都是ST,像USB,CAN,ZIGBEE等,S ...
- TMS320F28335项目开发记录9_28335中断系统
28335中断系统 1.中断系统 在这里我们要十分清楚DSP的中断系统. C28XX一共同拥有16个中断源,当中有2个不可屏蔽的中断RESET和NMI.定时器1和定时器2分别使用中断13和14.这样还 ...
- STM8的中断系统以及外部中断详解
STM8具有最多32的中断系统,在中断的处理上类似于cortexm系列的芯片,首先是每个中断的向量都是固化在系统内部的,用户需要向相应的中断向量flash位置写入中断处理函数,其二,每个中断向量都具有 ...
- 【CC2530入门教程-03】CC2530的中断系统及外部中断应用
第3课 CC2530的中断系统及外部中断应用 广东职业技术学院 欧浩源 一.中断相关的基础概念 内核与外设之间的主要交互方式有两种:轮询和中断. 轮询的方式貌似公平,但实际工作效率很低,且不能及 ...
- ARM-Linux中断系统
1.前言 了解Linux中断子系统,同时也需要了解ARM体系结构中断处理流程:在熟悉整个软硬件架构和流程基础上,才能对流程进行细化,然后找出问题的瓶颈.<2. 梳理中断处理子系统> 但是所 ...
- C51单片机_day_01(定时器和中断系统)
c51单片机 51单片机是控制电路系统的开关,当然芯片就是51芯片,现在随着科技的发展,也是出了很多,功能更多,更全的芯片. 51是用c语言做为程序编程的语言 ——我对基本基础 ...
- Linux中断(interrupt)子系统之一:中断系统基本原理【转】
转自:http://blog.csdn.net/droidphone/article/details/7445825 这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于AR ...
随机推荐
- 剑指 Offer 55 - I. 二叉树的深度
题目描述 输入一棵二叉树的根节点,求该树的深度.从根节点到叶节点依次经过的节点(含根.叶节点)形成树的一条路径,最长路径的长度为树的深度. 例如: 给定二叉树 [3,9,20,null,null,15 ...
- Linux 用户与权限
这些天一直在看Linux的命令但是却没有写文章,因为感觉没有必要,哪些简单的命令,vi cat cd 啥的,是个做开发的就知道,所以就没写; 用户管理 第一个我们知道的用户就是Root 没错哦,这就是 ...
- Oracle的timestamp字段更新实验 结论:只有逐条更新才能保证timestamp字段有差别,批量更新只会得到一致的时间,此操作无关时间精度.
有这么一张表: create table hy_testtime( id number(6,0) not null primary key, name nvarchar2(20) not null, ...
- 有关Sql中时间范围的问题
背景 有时候需要利用sql中处理关于时间的判别问题,简单的如比较时间的早晚,判断一个时间是否在一段时间内的问题等.如果简单将时间判断与数值比较等同,那就会出现一些问题. 处理方式 处理Sql时间范围的 ...
- Ant Jmeter Jenkins生成html测试报告
Ant配置1. 将jmeter安装目录或者源码目录下\apache-jmeter-3.1\extras的ant-jmeter-1.1.1.jar复制到ant安装目录下apache-ant-1.10.3 ...
- Java类加载机制()
Java类加载机制(转载) 概述 在开始正文之前,我们先看两张图 .Java平台的理解?Java最显著的特性?Java是解释执行? 先看一下java程序的执行流程图 再看一下jvm的大致物理结构图 本 ...
- oracle数据处理之sql*loader(二)
目录 SQL*Loader对不同文件及格式的处理方法 2.1 Excel文件 一般的Excel文件最大行数不超过65536行,说明数据处理量并不大,处理Excel的方式是将其另存为CSV格式文件,然后 ...
- [剑指Offer]17-打印从1到最大的n位数(递归)
题目 如题,输入n,则从1打印至99. 题解 考虑到n比较大会有大数问题,所以使用字符数组存储数. 由题可用递归求n位全排列,即为所得. 具体地,用临时字符数组用来存答案,每次递归填好一位,都填好后输 ...
- JVM垃圾回收器前瞻
垃圾回收器的新发展 GC仍然处于飞速发展之中,目前的默认选项G1 GC在不断的进行改进,很多我们原来认为的缺点,例如串行的Full GC.Card Table扫描的低效等,都已经被大幅改进,例如, ...
- java虚拟机5 字节码
java字节码本质是java程序的格式化表示,便于机器处理.所以他是java程序的另一种表示,java程序包含的信息他都包含并且更加结构化. java虚拟机字节码格式: magic 魔数,标识该文件是 ...