S3C6410中断控制详解

S3C6410(OK6410开发板介绍) S3C6410(OK6410开发板介绍)     1.   系统资源 A.处理器       Samsung S3C6410处理器,ARM1176JZF-S内核,主频533MHz/667MHz  B.FLASH    1G字节NAND Flash(MLC)    这里nor flash相当于电脑中的固态硬盘,容量小,速度快,价格贵     Nand  flash相当于电脑 阅读详情
Andrew Huang  bluedrum@163.com 转载请注明作者及联络方式
 
 如果你熟悉S3C2440的中断处理机制,可以发现S3C6410大大简化的中断编程处理。
 
 
   相对于S3C2440详细而丰富的关于中断的解释,S3C6410的dataSheet明显是赶工之作,关于中断只有短短的15页,大量内容还是寄存器表格。
 
   因此以下大部分我从S3C6410的测试程序和Application Note反推出来的。并且重新用ADS写程序验证了。
 
   
 
S3C6410的中断主要改进是.
 
  增加中断向量控制器,这样在S3C2440里需要用软件来跳转的中断处理机制,在S3C6410完全由硬件来跳转。你只要把ISR地址是存在连续向量寄存器空间,而不是象S3C2440自行分配空间自行管理。
 
  换句话说,在S3C2440下是由CPU触发IRQ/FIQ异常,由异常处理函数里再查找相关中断寄存器来跳到指定的ISR,而可以全部由S3C6410的VIC硬件来自动处理。 这个大大简化中断处理编程。
 
 另一个是外部中断加入滤波电路,这样原来需要软件去毛刺的地方均可以采用硬件来进行滤波了,这样大大简化外部中断处理。
 
 
 
 
S3C6410 中断操作
 --------------------------------------------------------------------  
 
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有64个软中断(与硬件中断对应),这一段描述是非常含糊。是同一硬件中断可以用软件触发还是是,有一个完全对应的软件中断?这个需要软件来验证.
 
  软中断除硬件中断的所有流程还要加上如下两条.
  用VICxSOFTINT来触发软中断
  ISR退出时使用VICxSOFTINTCLEAR清除状态
 
软中断编程流程
 
S3C2440 外部按键中断解析 学习bootloader制作的过程中,学到 “通过按键进入中断控制LED亮灭”的实验时,自己所用的开发板和视频讲解中的不同,于是琢磨了一下中断涉及到的各个寄存器,并进行编码尝试,最终完成了实验,达到了通过按键以中断方式控制LED亮灭的目的。2440属于非向量中断方式,和6410、210的向量中断方式对于中断的处理有一些不同,因此本文的讲解并不完全适合6410和210。 阅读详情

相关推荐

ARM11处理器与Qt图形界面开发实战

本文还有配套的精品资源,点击获取 简介:本项目专为Samsung S3C6410处理器设计,主要涉及裸机串口通信程序和Qt图形界面开发。S3C6410是一款高性能的ARM11内核应用处理器,广泛应用于嵌入式设备。项目中包含串口通信程序的编写与调试,以及在无操作系统环境下使用Qt框架开发GUI界面。通过这个项目,你可以深入了解ARM11架构、处理器硬件特性、裸机编程、串口通信...

weixin_42609225的博客 776

转:S3C6410中断控制详解

Andrew Huangbluedrum@163.com 转载请注明作者及联络方式  如果你熟悉S3C2440的中断处理机制,可以发现S3C6410大大简化的中断编程处理。      相对于S3C2440详细而丰富的关于中断的解释,S3C6410的dataSheet明显是赶工之作,关于中断只有短短的15页,大量内容还是寄存器表格。    因此以下大部分我从S3C6410的测试程序和Application Note反推出来的。并且重新用ADS写程序验证了。      S3C6410的中断主要改进是.   增

glorin的专栏 5845

S3C6410嵌入式系统开发:从裸机到驱动代码详解

S3C6410微处理器是三星电子推出的一款高性能、低功耗的ARM11架构处理器,广泛应用于移动设备和嵌入式系统中。它具有强大的图形处理能力和丰富的接口资源,可以支持Linux、Android等多种操作系统。S3C6410处理器搭载了ARM1176JZF-S核心,工作频率可达667MHz,具有32KB的指令缓存和32KB的数据缓存。此外,它集成了多种外设接口,如USB HOST/Device,SD/MMC等,使其在数据存储和传输方面具有优势。

weixin_42372837的博客 896

S3C6410处理器介绍(转载)

S3C64xx系列的应用处理器芯片是三星主推的,三星目前推出了S3C6400和S3C6410,都是基于ARM11架构的,而且硬件管脚兼容,应该说大致的功能基本相同,比较明显的区别就是S3C6410带有2D/3D硬件加速。大致看了一下,S3C6410是一个强大的应用处理器,我不是在这里做广告,呵呵,因为我正在使用它,有了它,可以做很多东西。 下面,我对S3C6410做个简单介绍,

学无止境 1211

VASP计算层错能(SFE)全攻略2

本文介绍了使用VASP计算纯镍(Ni)层错能(SFE)的具体步骤。首先构建Ni的FCC单胞并扩展为超胞,通过修改原子位置引入堆垛层错;随后分别计算完美晶体和含层错结构的能量;最后通过能量差与层错面积之比求得SFE值。计算需注意k点网格、截断能和超胞尺寸的收敛性测试,并推荐使用PAW赝势和ASE等工具辅助结构构建。

weixin_50519490的博客 1987

Python手记-9:Python LXML库XPath的爬取晋江书目

1. lxml库 lxml是功能最丰富且易于使用的库,用于处理Python语言中的XML和HTML,还可实现WEB爬取,官文参考:https://lxml.de/,完整的PDF文档下载链接https://lxml.de/lxmldoc-4.5.0.pdf,但是阅读起来……em……怪自己不够聪明的样子。 Linux下安装lxml库:[root@chengyu ~]# pip3 instal...

成屿的专栏 4万+

转:S3C6410中断控制详解 .

如果你熟悉S3C2440的中断处理机制,可以发现S3C6410大大简化的中断编程处理。        相对于S3C2440详细而丰富的关于中断的解释,S3C6410的dataSheet明显是赶工之作,关于中断只有短短的15页,大量内容还是寄存器表格。      因此以下大部分我从S3C6410的测试程序和Application Note反推出来的。并且重新用ADS写程序验证了。

sanchuyayun的专栏 589

如何下载安装Qt各个版本?(2025-4-28更新)

本文将教您快速获取Qt各版本安装包!妈妈再也不用担心我找不到Qt安装包了!

程序区 5119

S3C6410中断控制详解--转

如果你熟悉S3C2440的中断处理机制,可以发现S3C6410大大简化的中断编程处理。  相对于S3C2440详细而丰富的关于中断的解释,S3C6410的dataSheet明显是赶工之作,关于中断只有短短的15页,大量内容还是寄存器表格。    因此以下大部分我从S3C6410的测试程序和Application Note反推出来的。并且重新用ADS写程序验证了。 S3C6410的中断主要改进是

zh_wang2010的专栏 583

deepfacelab下载安装及训练(小白篇),以及导出SAEHD为dfm文件,解决broken pipe问题

其中如果用的是RTX30系列显卡的话,需要把WIN10升级到20H4或更新版本,然后打开硬件加速,不然会出现训练时一直卡在第一个迭代不动了,我的服务器版本为22H2,符合。支持WIN10,win11,WIN7,LINUX,不支持mac(因为mac不支持NVIDIA显卡)

caoyongsheng的博客 3896

k3s快速搭建k8s集群环境

k8s 搭建方式有多种,如果你是内网环境,希望占用服务器资源少或是边缘系统(如ARM系统),强烈推荐您使用 k3s进行安装 目录k3s 简介k3s架构中文官方文档三台服务器快速搭建k8s集群安装说明步骤1 修改主机名,保持唯一步骤2 安装docker步骤3 安装master节点步骤4 安装worker节点加入集群步骤5 查看集群步骤6 部署 k8s仪表盘 dashboard k3s 简介 轻量级 Kubernetes。安装简单,内存只有一半,所有的二进制都不到 100MB K3s 是一个完全符合 Ku.

gzt19881123的专栏 2445

mini6410中断控制器-VIC中断控制器

提示:如果读者对ARM中断机制不是很理解,建议先阅读本人其它三篇文章: S3C2440系统中断 ARM处理器异常处理 ARM系统中断产生流程   一、概述 S3C6410中断控制器由两个VIC(Vectored Interrupt Controller, ARM PrimeCell)组成和两个TZIC’s(TrustZone Interrupt Controll

wangpengqi的专栏 677

白话详细解读(七)----- CBAM:Convolutional Block Attention Module

一、CBAM简介 论文链接:https://x.sci-hub.org.cn/scholar?hl=zh-TW&as_sdt=0%2C5&q=CBAM%3A+Convolutional+Block+Attention+Module&btnG=&oq=CB CBAM这篇论文是在2018年提出的,自提出之后,已经被引用上千次,可见其影响力。CBAM是一种专门为了卷积神经网络而设计的注意力模块,传统的卷积存在只关注局部信息,而往往忽略全局信息的弊端,以3*3卷积为例,滤波器有9个

奋斗の博客 1万+

S3C6410中断控制器

S3C6410中断控制器由2个VIC、2个TZIC组成,支持64个中断。 (1)每个VIC 支持 32位的矢量 IRP 中断 (2)支持固定硬件中断优先级和可编程中断优先级 (3)支持硬件中断优先级屏蔽和可编程中断优先级屏蔽 (4)产生 IRQ 和 FIQ  中断 (5)产生软件中断 (6)raw中断状态 (7)中断请求状态 (8)支持限制访问的特权模式 /

xgbing 2843

基于matlab不变矩的数字验证码识别系统

随着互联网技术的快速发展和应用,网络给人们提供了丰富的资源和极大的便利,但随之而来的是互联网系统的安全性问题,而验证码正是加强 Web 系统安全性的产物。全自动区分计算机和人类的图灵测试(Completely Automated Public Turing test to tell Computers and Humans Apart,CAPTCHA)也是验证码的一个应用程序,可以区分用户是人类还是计算机智能单击对象。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 917

机器人轨迹规划——梯形速度轨迹(超详细)

机器人轨迹 这一系列轨迹教程将主要包括以下内容: 点到点轨迹(P2P) 五次多项式插值轨迹 三次多项式插值轨迹 梯形速度曲线轨迹 双S形速度曲线轨迹 多个自由度轨迹的时间同步 在线轨迹规划 多项式在线轨迹规划 梯形在线轨迹规划 双S形在线轨迹规划 非线性实时轨迹滤波 多点轨迹(Multi-point) 三次样条曲线(cubic spline) 贝赛尔曲线(Bezier Curve) B样条曲线(BSpline) 时间最优轨迹 三次样条时间最优轨迹 任意路径下的时间最优轨迹 时间

出门搔白首,若负平生志 1万+

arm vic

S3C6410中断控制器由两个VIC(Vectored Interrupt Controller, ARM PrimeCell)组成和两个TZIC’s(TrustZone Interrupt Controller SP890)。 两个TZIC’s和VIC’s很好的接合起来支持64个中断源。但是单从三星提供的硬件手册上,很彻底了解VIC中断的工作方式,还需要从ARM公 司下载VIC控制器说明手册,...

weixin_30448603的博客 247

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

S3C6410处理器介绍

 作者:ARM-WinCE S3C64xx系列的应用处理器芯片是三星主推的,三星目前推出了S3C6400和S3C6410,都是基于ARM11架构的,而且硬件管脚兼容,应该说大致的功能基本相同,比较明显的区别就是S3C6410带有2D/3D硬件加速。 大致看了一下,S3C6410是一个强大的应用处理器,我不是在这里做广告,呵呵,因为我正在使用它,有了它,可以做很多东西。 下面,我

唐勉的ARM/Linux/WinCE专栏 4万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

S3C6410裸机中断程序

【版权归stuyou@126.com所有,转载请注明出处】 主机环境:UBUNTU1004 32bit + arm-linux-gcc(v4.5.1) 开发板:友善之臂tiny6410,S3C6410CPU 任务描述:基于VIC_Port模式,编写中断程序,当按下开发板上的key1~key4时,分别点亮核心板上的LED1~LED4。 【原理】 ...

ROF 440
上一篇: S3C2440A的ADC和触摸屏接口
下一篇: WINCE 触摸屏驱动简介
马中马
博客等级 码龄18年 112粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值