Hylicos - MINI2440 - 中断控制

中断

中断源管理

中断是一种异步异常,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.mzph.cn/news/647891.shtml

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

相关文章

mysql更新charset

因为要从mysql5.x升级到mysql8,原来数据库表里面的一些utf-8字段只支持utf8mb3,更新到utf8mb4以支持更多的unicode字符. 解决办法 改变数据库 ALTER DATABASEdatabase_nameCHARACTER SET utf8mb4COLLATE utf8mb4_general_ci;改变表 ALTER TABLEtab…

k8s从入门到实践

k8s从入门到实践 介绍 Kubernetes(简称k8s)和Docker Swarm是两个流行的容器编排工具,它们都可以帮助用户管理和部署分布式应用,尤其是基于容器的应用。以下是两者的主要特点和对比: Kubernetes (k8s): 开…

机器学习笔记 - 基于自定义数据集 + 3D CNN进行视频分类

一、简述 这里主要介绍了基于自定义动作识别数据集训练用于视频分类的 3D 卷积神经网络 (CNN) 。3D CNN 使用三维滤波器来执行卷积。内核能够在三个方向上滑动,而在 2D CNN 中它可以在二维上滑动。 这里的模型主要基于D. Tran 等人2017年的论文“动作识别的时空卷积研究”。 …

【算法】糖果(差分约束)

题目 幼儿园里有 N 个小朋友,老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果。 但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖果的时候&#xff…

RocketMQ源码阅读-九-自定义过滤规则Flitersrv

RocketMQ源码阅读-九-自定义过滤规则Flitersrv 什么是FiltersrvFiltersrv注册到Broker过滤类Consumer发起订阅设置过滤类代码Consumer上传过滤类代码Flitersrv编译过滤类代码 过滤消息Consumer 从 Filtersrv 拉取消息Flitersrv从Broker拉取消息 Flitersrv的高可用总结 什么是Fi…

vue上传解析excel表格并修改字段名

目录 1.安装 xlsx 2.引入 3.使用 1.安装 xlsx npm install xlsx 2.引入 import * as XLSX from xlsx; 3.使用 <template><div class"UploadCptOutbox"><div class"Tooloutbox"><el-uploadclass"upload"ref"u…

数据库(二)

DDL语句对数据库的操作&#xff1a; 创建&#xff1a;create database 数据库名 &#xff1b; 修改&#xff1a;alter database 数据库名 charset 字符集 &#xff1b; 删除: drop database 数据库名&#xff1b; 查询&#xff1a;show databases; DDL语句对表的操作 …

【C++】内存分区模型

目录 1.程序运行前 2.程序运行后 3. new操作符 3.1 基本语法 3.2 开辟数组 C程序在执行时&#xff0c;将内存大方向划分为4个区域 代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理的 全局区&#xff1a; 存放全局变量和静态变量以及常量栈区 …

时序分解 | MATLAB实现CEEMDAN+SE自适应经验模态分解+样本熵计算

时序分解 | MATLAB实现CEEMDANSE自适应经验模态分解样本熵计算 目录 时序分解 | MATLAB实现CEEMDANSE自适应经验模态分解样本熵计算效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现CEEMDANSE自适应经验模态分解样本熵计算 包括频谱图 附赠案例数据 可直接运行 …

喜报|「云原生数据库PolarDB」、「阿里云瑶池一站式数据管理平台」揽获“2023技术卓越奖”

日前&#xff0c;国内知名IT垂直媒体&技术社区IT168公布2023年“技术卓越奖”评选结果&#xff0c;经由行业CIO/CTO大咖、技术专家及IT媒体三方的联合严格评审&#xff0c;阿里云瑶池数据库揽获两项大奖&#xff1a;云原生数据库PolarDB荣获“2023年度技术卓越奖”&#xf…

YOLOv5全网独家首发:Powerful-IoU更好、更快的收敛IoU,效果秒杀CIoU、GIoU等 | 2024年最新IoU

💡💡💡本文独家改进:Powerful-IoU更好、更快的收敛IoU,是一种结合了目标尺寸自适应惩罚因子和基于锚框质量的梯度调节函数的损失函数 💡💡💡MS COCO和PASCAL VOC数据集实现涨点 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/category_1251193…

《SPSS统计学基础与实证研究应用精解》视频讲解:数据加权处理

《SPSS统计学基础与实证研究应用精解》4.7 视频讲解 视频为《SPSS统计学基础与实证研究应用精解》张甜 杨维忠著 清华大学出版社 一书的随书赠送视频讲解4.7节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。本书旨在手把手教会使…

Redis 面试题 | 11.精选Redis高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

CNN卷积理解

1 卷积的步骤 1 过滤器&#xff08;卷积核&#xff09;&#xff08;Filter或Kernel&#xff09;&#xff1a; 卷积层使用一组可学习的过滤器来扫描输入数据&#xff08;通常是图像&#xff09;。每个过滤器都是一个小的窗口&#xff0c;包含一些权重&#xff0c;这些权重通过训…

小红书如何做混部?

作者&#xff1a;宋泽辉&#xff08;小红书&#xff09;、张佐玮&#xff08;阿里云&#xff09; 编者按&#xff1a; Koordinator 是一个开源项目&#xff0c;是基于阿里巴巴内部多年容器调度、混部实践经验孵化诞生&#xff0c;是行业首个生产可用、面向大规模场景的开源混…

加速震荡交易策略

实盘开户找我哦~ # 加速震荡指标&#xff08;Accelerator Oscillator&#xff09; import talib import datetime import numpy as np def init(context): context.nday 5 #短期值 context.mday 20 #长期值 # 定义股票池 context.stocks [600519.SH,0003…

在 Linux 上搭建 Java 环境

目录 一、安装jdk 1. 挑选 jdk 版本 2. 安装 3. 验证 jdk 二、安装tomcat 1. 下载压缩包 2. 上传压缩包给 Linux &#xff08;需要用到 rz 命令&#xff09; 3. 解压压缩包&#xff08;需要用到 unzip&#xff09; 4. 进入 bin 目录 5. 给启动脚本增加可执行权限 6. 启…

sqlmap 是一个自动化的 sql 注入渗透工具

一.介绍 sqlmap 是一个自动化的 sql 注入渗透工具&#xff0c;指纹检测、注入方式、注入成功后的取数据等等都是自动化的&#xff0c;sqlmap 还提供了很多脚本.但在实践测试的时候基本用不上.用于检测和利用 Web 应用程序中的 SQL 注入漏洞。它自动化了识别和利用 SQL 注入漏洞…

Internet Download Manager 6.42.3 (IDM) 中文破解免激活绿色版

Internet Download Manager 6.42.3中文破解版&#xff0c;全球最佳下载利器。Internet Download Manager (简称IDM) 是一款Windows 平台功能强大的多线程下载工具&#xff0c;国外非常受欢迎。支持断点续传&#xff0c;支持嗅探视频音频&#xff0c;接管所有浏览器&#xff0c;…

将AWS iot消息数据发送S3

观看此文章之前&#xff0c;请先学习AWS iot的数据收集&#xff1a; 使用Linux SDK客户端向AWS Iot发送数据-CSDN博客 上述的文章向大家展示了如何从客户端向AWS iot发送数据&#xff0c;那么数据收到之后&#xff0c;我们如何通过AWS的服务进行数据处理或者保存呢&#xff1…