TQ210——S5PV210中断体系

TQ210——S5PV210中断体系

 

      中断是指 CPU 在执行程序的过程中,遇到异常情况需要处理, CPU停 止当前程序的运行,保存当前程序运行处的必要参数,转去处理这些异常情况, 处理结束后再返回当前程序的间断处,继续执行原程序。

1、异常向量表

2、一级异常处理

#define  pExceptionIRQ     ( *((volatile unsigned long *)(0xD0037418)) )
pExceptionIRQ           =  (unsigned long)IRQ_handle;
IRQ_handle:    sub lr, lr, #4      // 保存现场                    stmfdsp!, {r0-r12, lr}      bl      irq_handler    // 跳转到中断处理函数ldmfd sp!, {r0-r12,pc}^  // 恢复现场

3、VICX

      S5PV210共有4个VIC(Vectored Interrupt Controller,向量中断控制器),以菊花链的方式互连共同支持了多达93个中断源。

      这些中断源分别为系统DMA、定时器、外设、多媒体、音频、安全等模块提供中断服务

      中断种类有IRQ和FIQ可选配,在中断处理级别上都属于二级。

      菊链方式的4个TZIC和4个VIC是为了能支持93个中断源。在可信域设计里,TZIC为安全中断系统提供一个软中断。它提供nFIQ中断的安全控制和在没安全边际的系统(vic)上,中断控制器掩盖中断源。用后者来生成nIRQ信号。

      菊链:一种沿总线传输信号的方法,其中设备串联,而信号则从一台设备传向下一台设备。菊花链连接方法可根据设备在总线上的电气地位分配其优先级

4、寄存器

(1)IRQSTATUS 中断状态


(2)VICINTSELECT(中断类型选择:irq或者fiq)

如何保证FIQ具有最佳的中断响应速度?

<1>、FIQmode具有更多的banked register,因此进入FIQ的ISR后可以避免因保存寄存器而浪费的时间。

<2>、FIQ在异常向量表中处于末端,因此ISR可以不用跳转到别处而直接在向量表末端开始ISR。


(3)VICINTENABLE/VICINTENCLEAR(中断使能/失能设置)


      中断允许寄存器中,每个bit代表一个中断源。向VICINTENABLE寄存器中相应bit写1可以使能该中断(写0无效,读取时若该中断允许则返回1,若未允许则返回0),而向VICINTENCLEAR寄存器相应bit写1可以禁止该中断(写0无效)。

在另一些CPU中,只有一个INTENABLE寄存器。写1可以使能中断,写0则会禁止中断。


(4)ISR相关


ISR如何设置:

S5PV210的中断体系采用如下的ISR确定策略

<1>、将93个中断源分为4组,每组的ISR组成一个数组,以中断号为数组索引。

<2>、4组ISR数组的首地址分别存放在VICVECTADDR0~VICVECTADDR3中。

绑定ISR时,只需将用户自己编写的ISR地址放入ISR数组中以中断号为索引的位置即可

ISR如何获得:

当中断发生,并且在一级异常向量表中跳转入IRQ后,首先要保护现场,然后转入相应的ISR执行。

获取相应的ISR时只需读取VICADDRESS寄存器即可。因为S5PV210的中断系统会自动将当前发生的中断对应的ISR从ICVECTADDRx中推入VICADDRESSx中。这省去了我们使用查询方式确认中断号的麻烦,提高了IRQ的响应速度。

 

5、中断处理

中断处理过程

<1>、硬件事件发生,SRCPENDING位响应挂起

<2>、根据中断允许设置决定是否产生中断挂起INTPENDING,并根据INTSELECT决定中断种类为IRQ还是FIQ

<3>、响应中断,CPU根据一级异常向量表自动跳转到IRQ或FIQ异常入口

<4>、对于IRQ,在二级中断表中,根据INTNUM进行判断,跳转入相应的ISR执行

<5>、中断返回,本次中断事件结束

 

如何使用中断:

<1>、全局性设置。包括设置一级异常向量表、清理所有中断挂起、禁止所有中断源等。

<2>、针对要使用的中断进行具体设置。包括设置中断种类为IRQ/FIQ,中断允许、优先级等。

<3>、绑定中断处理程序。以便在二级中断处理时能够跳转到正确的ISR。 

<4>、设置中断允许位以允许中断发生。

      不同平台中断处理差异:有些平台是置1允许中断,而另一些平台是清0允许中断;二级中断时获取中断号(意味着获取中断ISR)的方式不同。这些不同会影响平台的中断响应速度。

 

6、外部中断

      外部中断意为来自(SoC)外部的中断,是相对于内部中断(来自SoC内部,即各种内部外设产生的中断,譬如定时器中断)来说的。

      S5PV210共支持32个通道的外部中断,每个外部中断有对应的GPIO接收来自外部的中断信号。中断触发方式有电平(高、低)、边沿(上升沿、下降沿、Both)等5种方式可选配。      

(1)EXT_INT_0_CON外部中断控制寄存器

      EXT_INT_x_CON(x= 0~3)用来配置32个外部中断通道的触发模式。


(2)EXT_INT_0_MASK外部中断允许/禁止

      EXT_INT_x_MASK(x=0~3)用来使能/禁止相应的外部中断通道


(3)EXT_INT_0_PEND外部中断挂起寄存器

           

      EXT_INT_xPEND(x=0~3)用来标识外部中断挂起。向相应bit写1可以清除中断挂起

 

6、外部中断设置流程

<1>、全局的中断初始化

<2>、设置相应的GPIO为XEINTx

<3>、绑定中断处理程序

<4>、设置EXT_INT_x_CON以配置触发方式

<5>、写EXT_INT_x_PEND清中断

<6>、设置EXT_INT_x_MASK以使能相应通道

<7>、最后使能相应外部中断通道

分析:

1、中断挂起产生,CPU自动跳转到一级异常向量表中IRQ入口地址中。

2、由IRQSTATUS和VICADDRESS机制得到相应ISR地址并进入执行。

3、ISR内部内容应该包含三部分:

(1)、有效isr,处理按键对应的任务

(2)、向VICxADDR写入任意值清中断

(3)、向EXT_INT_x_PEND写1清除相应中断 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466356.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高通骁龙888开始被Linux内核5.12版正式支持

在Linux 5.12内核合并窗口中&#xff0c;有很多新的硬件开始被支持&#xff0c;其中不乏一些知名产品例如高通骁龙888&#xff0c;除此之外还有一些与ARM平台和设备树有关的代码添加。来自Arnd Bergmann的各种内核拉取请求在周六晚上被合并&#xff0c;此前由于恶劣的冬季风暴阻…

Python实现比较两个列表(list)范围

Python实现比较两个列表(list)范围 有一道题&#xff1a; 比较两个列表范围&#xff0c;如果包含的话&#xff0c;返回TRUE&#xff0c;否则FALSE。 详细题目如下&#xff1a; Create a function, this function receives two lists as parameters, each list indicates a scop…

单片机里面的CPU使用率是什么鬼?

打开电脑的任务管理器&#xff0c;看着跳动的CPU使用率&#xff0c;发现很舒服。每一个线程占用了多少CPU清清楚楚&#xff0c;也就能针对性的确认为啥你的电脑跑的慢了。今天这篇笔记不讲每个任务&#xff08;或线程&#xff09;CPU的使用情况&#xff0c;而是单片机整体的CPU…

图解,C语言希尔排序

希尔排序和插入排序很相似&#xff0c;有点像插入排序的升级版本。希尔排序是希尔&#xff08;Donald Shell&#xff09;于1959年提出的一种排序算法。希尔排序也是一种插入排序&#xff0c;它是简单插入排序经过改进之后的一个更高效的版本&#xff0c;也称为缩小增量排序&…

TQ210——S5PV210串口通信

TQ210——S5PV210串口通信 1、 串行与并行通信 串行通道中&#xff0c;有效信息被编码后串行的从单根传输线上传送出去。譬如发送ASCII字符’a’&#xff0c;我们可以将’a’对应的ASCII码97&#xff08;0x61&#xff09;分作8个bit在传输线上顺序依次传输。 与串行传输相对应…

暴力字符匹配算法的C语言实现

1、聊一聊今天跟大家分享的这个曲子一般是在天气预报和英语试听中出现&#xff0c;不信你听一听绝对有种似曾相识感觉。本篇文章主要是为讲解高效字符匹配算法的一则预告文&#xff0c;跟大家讲讲暴力字符匹配算法以及匹配算法在通信中如何使用。2、暴力匹配算法介绍1聊聊字符匹…

TQ210 —— LCD

TQ210 —— LCD一、LCD控制器1、S5PV210 LCD控制器要使一块LCD正常的显示文字或图像&#xff0c;不仅需要LCD驱动器&#xff0c;而且还需要相应的LCD控制器。在通常情况下&#xff0c;生产厂商把LCD驱动器会以COF/COG的形式与LCD玻璃基板制作在一起&#xff0c;而LCD控制器则是…

微信表情都戒烟了

昨天看到最新的微信表情是这样的原来的抽烟表情被替换成了这释放出一个信号&#xff0c;就是「抽烟不酷了」不过我想说&#xff0c;只戴着一个绿帽子&#xff0c;嘴巴里面什么都没有&#xff0c;好像也不酷啊。难道重点就是那个墨镜????&#xff1f;不过&#xff0c;在PC版…

Python 类的属性和实例属性 Python 的动态语言

#定义一下类, 含有类属性 aaa, >>> class Aa: ... aaa 10... #对类 Aa实例化出一个实例 a1>>> a1 Aa() >>> print(a1.__dict__)#查看实例并没有自己的方法和属性{}>>> a1.aaa #但是这个实例在调用属性的时候, 发现自己没有这个属性, 于…

高效KMP字符匹配算法就这么简单

1、聊一聊上一篇文章"暴力"字符匹配算法的C语言实现2、KMP算法介绍1KMP介绍KMP是一种字符匹配算法&#xff0c;为啥叫KMP呢&#xff1f;因为是由D.E.Knuth&#xff0c;J.H.Morris和V.R.Pratt大佬提出来的。那一些小伙伴会问了怎么不叫"DJV算法"呢?因为老外…

TQ210 —— NandFlash

TQ210 —— nandflashTQ210 开发板板载一片 1Gbyte 的 NAND FLASH——K9K8G08U0B&#xff0c;通过查询K9K8G08U0B 芯片手册可以得到如下信息&#xff1a;&#xff08;理论知识不再介绍&#xff09;K9K8G08U0B : (1G 32M) x 8bit 总大小Data Register : (2K 64) x 8bit 数据寄…

涂鸦赞助的500个开发套件,先到先得

来源 | 涂鸦跟涂鸦申请的福利&#xff0c;给喜欢开发的同学发放开发套件&#xff0c;只要是不是专门白嫖党&#xff0c;数量可以不做限制。去年疫情突发&#xff0c;封城、封小区以及人员隔离&#xff0c;让原本享受千般宠爱的主子们变成了靠吃猫砂、塑料袋度日的小可怜&#x…

Linux-C 编程 / 网络 / 超迷你的 web server

一、为生活寻找固定的支撑点1. 什么是生活的支撑点&#xff1f;让自己感到些许痛苦&#xff0c;但却会带来实实在在的充实感和成就感的事情。举个栗子&#xff0c;我的支点是运动、看书、研究技术。2. 固定的支撑点很重要&#xff1a;三个固定的要素&#xff1a;时间 / 空间 / …

20165326 java第四周学习笔记

第四周学习笔记 ch5 子类和父类子类只能有一个父类使用关键字extendsyclass 子类 extends 父类系统默认的祖先类Object&#xff08;java.lang包中&#xff09;继承&#xff1a;子类继承父类的方法可以直接作为实例方法调用&#xff0c;继承的成员变量和方法的访问权限不变&…

用VSTS进行网站压力测试

VSTS提供了一个丰富、强大的工具平台&#xff0c;融合了软件开发领域的各个角色&#xff0c;涵盖软件开发生命周期的各个阶段&#xff0c;包括设计&#xff0c;开发&#xff0c;测试&#xff0c;管理&#xff0c;而这一整套构件的融会贯通&#xff0c;让它可以有效地改善软件开…

第四周选做作业

相关知识点的总结 通过命令行引入参数递归循环课上内容的补做&#xff0c;结果截图 未完成内容:递归与循环 补做教材第二章&#xff0c;第三章编程题目 参考资料 2016-2017-2 《Java 程序设计》课堂实践项目编写一个Java应用程序,输出全部的希腊字母。_百度知道[]转载于:https:…

数据结构和算法,也就那么回事儿

金三银四来了&#xff0c;各大厂动静不小&#xff0c;都在储备人才&#xff0c;绝对是程序员面试的黄金时间了&#xff0c;不少同学也在后台反馈面试中遇到的一些问题&#xff0c;所以今天想跟大家说说算法。说起算法&#xff0c;那大厂面试是绝对必考的&#xff0c;可以说是一…

SecureCRT护眼设置

SecureCRT护眼设置Option —— Global Options —— Terminal —— Appearance —— ANSI COlor从左至右&#xff0c;从上至下值分别为&#xff08;RGB元组&#xff09;&#xff1a; 1&#xff1a;(0,43,53) (128,128,0) (0,160,0) (160,160,0) (255,128,128) (…

北美暴风雨,Linux5.12被延迟6天发布

上个月中旬&#xff0c;因为罕见的严寒天气和暴风雪&#xff0c;美国得州和俄勒冈州波特兰遭遇了持续多天的停电。Linux 创始人 Linus Torvalds 就生活在波特兰&#xff0c;多年来他一直在家中远程工作&#xff0c;并负责新内核的最终发布。之前我们报道过&#xff0c;内核社区…

C#复习笔记(3)--C#2:解决C#1的问题(可空值类型)

可空值类型 C#2推出可空类型来表示可以为null的值类型。这是一个呼声很高的需求&#xff0c;因为在常用的数据库中都是允许某些值类型可为空的。那么为什么值类型就不能为空呢&#xff1f;内存中用一个全0的值来表示null&#xff0c;但是全0的地址说明了这个内存空间是被清除了…