Hylicos - MINI2440 - 中断控制

news2024/12/23 14:28:14

中断

中断源管理

中断是一种异步异常,CPU需要处理很多来自设备的中断请求,而CPU引出的line只有IRQ线和FIQ线,所以就得引入中断控制器帮助CPU搞清楚是中断的来源。
MINI2440的中断控制器,可以接受来自60个中断源的请求。提供这些中断源的是内部外设,如DMA 控制器、 UART、IIC 等等。在这些中断源中,UARTn、AC97 和EINTn 中断对于中断控制器而言是“或”关系。
当从内部外设和外部中断请求引脚收到多个中断请求时,中断控制器在仲裁步骤后请求ARM920T 内核的FIQ 或IRQ。

在这里插入图片描述

中断控制器对于中断源的是层次化的,因为中断源很多,而中断源寄存器的位数是有限的,无法表达过多的中断源。每个bit都表达一个中断源,而多个子中断源对应中断源寄存器的同一个bit:
在这里插入图片描述
同样的,多个外部中断源,对应同一个bit:
在这里插入图片描述

中断过程

根据中断类型,SRCPND的置位过程有些不同:

  • 子中断。中断发生后SUBSRCPND相应位置1,如果没有INTSUBMASK屏蔽,那么SRCPND相应的bit被置1,表示挂起等待处理。
  • 不带子中断。中断发生后SRCPND相应位置1,如果没有被INTMSK屏蔽,那么SRCPND相应的bit被置1,表示挂起等待处理。
  • 外部中断。EINT0-EINT3发生后SRCPND相应位置1,如果没有被INTMSK屏蔽,那么等待进一步处理。EINT4-EINT23发生后EINTPEND相应位置1,如果没有被EINTMASK屏蔽,那么SRCPND相应位EINT4-7或EINT8-23置1,如果没有被INTMSK屏蔽,等待进一步处理。
    在这里插入图片描述
    SRCPND中有bit被置位,根据对应的MASK bit是否被置位,判断是否发给CPU处理,fip和irq都是可以被屏蔽的。
    如果没有被屏蔽,那么看中断模式:
  • 快中断,直接把信号送到FIQ线上
  • 普通中断,SRCPND可以有多位置1(FIQ 只能有一个),多置位情况下,需要经过priority选出一个最高优先级的去执行,选出的中断的INTPND的对应bit置1.
    注意,这个过程都是硬件完成,软件的职责是读取INTPND,分清哪个中断源触发了中断,然后让CPU执行到正确的,响应的,处理函数。

开启中断

  • 如果是不带子中断的内部中断,只需设置INTMSK,让它不屏蔽中断就可以了;
  • 如果是带子中断的内部中断,需设置INTSUBMSK和INTMSK,让它门不屏蔽中断就可以了;
  • 如果是外部中断,对于EINT4-23需要设置EINTMASK和INTMSK。对于EINT0-EINT3只需设置INTMSK;
    注意,Arm Core中CPSR寄存器的I位和F位,是决定中断是否有效的总开关。

清除中断

  • 如果是不带子中断的内部中断,只需清除SRCPND、INTPND,注意清除需对应位写1。
  • 如果是带子中断的内部中断,需清除SRCPND和SUBSRCPND、INTPND,注意先清除SUBSRCPND,再清除SRCPND。 因为,如果你先清除SRCPND的话,然后在清除SUBSRCPND的过程中,SRCPND会以为又有中断发生, 又会置1,也就是说一次中断会响应两次。所以必须先掐断源头。
  • 如果是外部中断,对于EINT4-23需要清除EINTPEND和SRCPND、INTPND(同样注意顺序)。对于EINT0-EINT3只需清除SRCPND、INTPND。

外部中断源,次级中断源,主中断源的关系

在这里插入图片描述
平级映射
S3C2440A的中断控制器所能提供的信息只是哪个主中断源上来了中断,例如,28号主中断源上来了中断,还需要进一步确定到底是哪一个次级中断源上(INT_RXD0、INT_TXD0、INT_ERR0)来了中断。

因为有多个中断源,自然用数组表示最方便直观,并且这个数组包含在LMOSEM内核的可执行文件中。IRQ_MAX定义为71。为什么是71,不是只有60个中断源吗?因为我们为了直接用数组下标寻找intfltdsc_t结构,采用了平级映射的方法,例如,28号主中断源发生了中断,发现它其中包含有3个次级中断源,就用28加上一个次级偏移量:SINT_OFFSET(32),找到相应的intfltdsc_t结构。再如,5号主中断源发生了中断,发现它其中包含有16个外部中断源,就用5加上一个外部次级偏移量EINT_OFFSET(47),找到相应的intfltdsc_t结构。不难发现,数组下标031对应的是主中断源,数组下标3246对应的是次级中断源,数组下标47~70对应的是外部中断源。

HAL_DEFGLOB_VARIABLE(intfltdsc_t,machintflt)[IRQ_MAX];	//71

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

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

相关文章

Redis双写一致性

所有的情况都是再并发情况下存在温蒂 一、先更新数据库,再更新缓存场景-不推荐 当有两个线程A、B,同时对一条数据进行操作,一开始数据库和redis的数据都为1,当线程A去修改数据库,将1改为2,然后线程A在修改…

幻兽帕鲁专用服务器

随着幻兽帕鲁这款游戏的热度持续升温,我们遍寻全网,带给各位玩家一个全新的、高品质的游戏体验——莱卡云服务器。有幻兽帕鲁的热衷者们无需再为了服务器的选取困扰,因为我们可以肯定地说:选择莱卡云,你不会失望。 首先…

数据库复试—关系数据库标准语言SQL

数据库复试—关系数据库标准语言SQL SQL:结构化查询语言 以教材中的学生-课程数据库为例进行SQL基础语法的复习 数据库实验环境选择SQLServer 11 关系模式 学生表Student(Sno,Sname,Ssex,Sage,Sdept) 课程表Course(Cno,Cname,Cpno,Ccredit) 学生选课表SC&#xf…

Linux操作系统——理解软硬链接

1.引言 通过我们前面理解文件系统的基础上,我们来理解软硬链接,在我们学习文件的时候我们会见到各种链接文件,其中链接文件分为两种,一种叫软连接,一种叫硬链接。 下面我们新建一个log文件,要对log这个文…

搭建一个简单的Spring Demo

要学习Spring 源码,一个是从Spring GitHub 上去down源码,然后倒入IDEA编译,但这种方法费时费力,如果你不需要对Spring 源码进行修改后,再编译的话,直接搭建一个Spring Demo 的Maven项目,引入Spr…

Linux操作系统——理解文件系统

预备知识 到目前为止,我们所学习到的关于文件的操作,全部都是基于文件被打开,被访问,访问期间比较重要的有重定向,缓冲区,一切皆文件,当我们访问完毕的时候需要将文件关闭,关闭时那…

关于事务的最常见的十道面试题

面试题一:什么是事务?为什么需要事务? 事务(Transaction)是保证数据库可靠性和稳定性的一种机制,单个逻辑工作单元执行的一系列操作,这些操作要么全部完成,要么全部不完成,是数据库环境中的最小…

Aria2 WebUI控制台 任意文件读取漏洞复现(CVE-2023-39141)

0x01 产品简介 Aria2 WebUI控制台是用于下载文件的实用程序。它支持 HTTP(S)/FTP/SFTP/BitTorrent 和 Metalink 协议。aria2可以从多个来源/协议下载文件,并尝试利用您的最大下载带宽。它支持同时从HTTP(S)/FTP/SFTP和BitTorrent下载文件,而从HTTP(S)/FTP/SFTP下载的数据上…

《WebKit 技术内幕》学习之八(1):硬件加速机制

《WebKit 技术内幕》之八(1):硬件加速机制 1 硬件加速基础 1.1 概念 这里说的硬件加速技术是指使用GPU的硬件能力来帮助渲染网页,因为GPU的作用主要是用来绘制3D图形并且性能特别好,这是它的专长所在,它…

深入了解WPF控件:常用属性与用法(六)

掌握WPF控件:熟练常用属性(六) ListView 用于展示数据项集合的列表控件。它提供了丰富的功能和灵活的定制性,可以轻松地展示和编辑大量的数据。 常用属性描述ItemsSource用于设置ListView的数据源。可以是一个集合、数组或列表…

架构师考试相关信息

文章目录 去年考试安排官网通知: 中国计算机技术职业资格网(今年的安排估计2月份放出,结果大约12月) 1.系统架构的考试要求: (1)掌握计算机硬软件与网络的基础知识; &…

模板方法模式介绍

目录 一、模板方法模式介绍 1.1 模板方法模式的定义 1.2 模板方法模式的原理 1.2.1 模板方法模式类图 1.2.2 类图角色说明 1.2.3 示例代码 二、模板方法模式的应用 2.1 需求说明 2.2 需求实现 2.2.1 账户抽象类 2.2.2 借款一个月 2.2.3 借款7天 2.2.4 测试类 三、…

helm---自动化一键部署

什么是helm?? 在没有这个helm之前,deployment service ingress helm的作用就是通过打包的方式,把deployment service ingress 这些打包在一块,一键式部署服务,类似于yum 官方提供的一个类似于安装仓库的功能,可以实…

Unity学习之坦克游戏制作(1)开始场景的制作

文章目录 1. 实现效果2. 场景装饰2.1 创建场景2.2 拖入场景地板 3 开始界面3.1 导入UI3.2 创建面板基类3.2.1 开始按钮 4 设置界面5 音效数据逻辑5.1 音效数据可持久化5.2 声明音效管理的主要变量5.3 声明数据管理器5.4 在设置面板的数据初始化5.5 提供API给外部 6 排行榜界面6…

​WordPress顶部管理工具栏怎么添加一二级自定义菜单?

默认情况下,WordPress前端和后台页面顶部都有一个“管理工具栏”,左侧一般就是站点名称、评论、新建,右侧就是您好,用户名称和头像。那么我们是否可以在这个管理工具栏中添加一些一二级自定义菜单呢? 其实&#xff0c…

JavaScript库jquery的使用方法

"写更少,做更多"是jquery的设计理念,jquery是一个兼容多浏览器的JavaScript库,利用jquery的语法设计能使开发更便捷。 网页添加jquery的方法:1.从jquery.com下载库;2.从CDN中载入库(示例使用)&a…

线性代数:矩阵运算(加减、数乘、乘法、幂、除、转置)

目录 加减 数乘 矩阵与矩阵相乘 矩阵的幂 矩阵转置 方阵的行列式 方阵的行列式,证明:|AB| |A| |B| 加减 数乘 矩阵与矩阵相乘 矩阵的幂 矩阵转置 方阵的行列式 方阵的行列式,证明:|AB| |A| |B|

项目管理中如何有效沟通?项目管理有效沟通指南

无论是少数人的小型企业还是拥有数十名员工的大公司,有效的沟通对于确保每个人都参与并准备好在项目中实现相同的目标至关重要。 然而,由于沟通不畅,似乎在翻译中总是丢失一些东西。事实上,根据布兰迪斯大学的一项研究&#xff0c…

k8s集群加入一个master2--kubeadm方式

已经有一个集群: 192.168.206.138 master 192.168.206.136 k8s-node1 192.168.206.137 k8s-node2 kubectl get nodes -o wide 新加入一个master2节点 192.168.206.139 master2 一、初始化系统参数 139 master2 上 #在136、137、138上添加hosts“” echo "…

MSG3D

论文在stgcn与sta-lstm基础上做的。下面讲一下里面的方法: 1.准备工作 符号。这里是对符号进行解释。 一个人体骨骼图被记为G(v,E) 图卷积: 图卷积定义 考虑一种常用于处理图像的标准卷积神经网络 (CNN)。输入是像素网格。每个像素都有一个数据值向…