SOC 子模块---中断控制器

news2024/11/15 20:26:29

中断控制器对soc 中的各个外设进行中断管理,进行优先权排队,并送出IQR信号给CPU;

中断控制器在整个系统中的结构:

IRQ<n>来源于不同的中断源,比如:I2C,SPI等,INTC收集这些中断,进行优先权排队,最后会发送到cpu.

硬件互联结构

对于设计而言:中断源模块三组中断寄存器是必须存在的:中断使能,中断状态,中断屏蔽;

软件层面实现过程

当cpu收到中断,会进入软件服务程序,此时中断产生,在中断服务程序中会确认中断类型,清除中断,屏蔽其他中断,并进入中断处理程序,处理完毕之后取消中断mask;

如果涉及到中断嵌套,会优先处理高级中断,保护低级中断现场,待高级中断处理完成后,继续执行低级中断。

 中断控制器在整个soc中的位置

INTC 一般挂载到apb总线上,可以收集来自I2C, SPI,Watchdog等中断,后通过仲裁会将中断信号给到CPU。

中断控制器信号列表

 

  1. APB标准接口信号
  2. 外设中断源信号(num 自定义)
  3. 输出的cpu 的irq (普通中断)/fiq(快速中断)

中断控制器基本框架 

 

apb_interface:

是INTC与总线的接口模块,同时也是INTC的控制模块,里边包含了INTC所有的寄存器信息;

int_gen:

接收中断源信息,确认中断源(irq/fiq),进行其他中断屏蔽,软件中断;

Priority_logic:

用于软件中断优先级屏蔽,对未屏蔽的中断进行优先权选择,选择最高优先级中断,产生中断信号;

普通中断寄存器介绍

IRSR:

普通中断状态寄存器,当中断源无效时,置为0;

IMSR:

中断屏蔽状态寄存器,对应的中断源,使能位无效,或屏蔽位有效时,置为1;

IFR:

普通中断软件强制中断寄存器,是否软件强制该位对应的中断源发出中断信号;

IFSR:

最终中断状态寄存器,只有当优先级大于IPLR寄存器所设置的中断源时才能在此寄存器相应位置1;

IPLR:

中断优先级寄存器,设置普通中断的优先级门槛,只有优先级大于此设置值的中断,才会通过优先级过滤逻辑将该中断送到cpu.

IER:

中断允许寄存器,是否允许对应中断源的IRQ信号;

ISR:

中断状态寄存器,当对应中断源或使能位(IER)无效时,该位置为0;

IMR:

中断屏蔽寄存器,是否屏蔽对应的IRQ中断信号;

快速中断寄存器介绍

快速中断寄存器和普通中断寄存器类似;

中断源

可能的内部中断:

  1. RTC:  real time counter,可以产生秒中断,分中断,定时中断,watchdog 中断;
  2. UART:数据发送结束中断,数据接受有效中断;
  3. Timer: 定时/计时中断;
  4. CMAC:DMA错误,DMA传输完成中断;
  5. LCDC:错误响应,帧结束,帧起始;
  6. SPI:FIFO空满,发送FIFO 下溢,接受FIFO上溢;

可能的外部中断:

  1. 比内部中断复杂,不可控
  2. 通常和GPIO口复用
  3. 中断源触发方式(上升沿,下降沿,高电平,低电平)
  4. 外部中断信号特殊处理(去毛刺,寄存,同步到总线时钟)
  5. 外部中断需要清除

外部中断使用过程

  1. 清除外部中断,在使用中断前,必须先清除之前的中断;
  2. 配置GPIO控制寄存器, a.配置管脚方向为输入b.配置中断触发类型c.配置管脚模式为中断模式)
  3. 配置中断寄存器,设置INTC 屏蔽寄存器的相应位的屏蔽中断,设置INTC相应位以允许该中断源产生中断

ARM 中断向量表

 

 

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

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

相关文章

word文件如何转PDF格式?word转PDF的方法

在当今数字化时代&#xff0c;文档格式的转换已成为日常生活和工作中不可或缺的一部分。其中&#xff0c;将Word文档转换为PDF格式更是受到了广大用户的青睐。本文将详细介绍Word转PDF的方法&#xff0c;帮助读者轻松实现文档格式的转换&#xff0c;并探讨转换过程中的注意事项…

P6技巧:对计划执行纠偏措施

前言 对施工计划的滞后原因分析&#xff0c;通常采取由大到小、由高到低的方法。即首先查看总体进度偏差&#xff0c;再分析其偏差主要来源于哪部分。 项目进度评估与偏差控制 项目实施过程中&#xff0c;项目控制人员应对进度实施情况进行跟踪、采集数据&#xff0c;并根据…

图解Kafka架构学习笔记(二)

kafka的存储机制 https://segmentfault.com/a/1190000021824942 https://www.lin2j.tech/md/middleware/kafka/Kafka%E7%B3%BB%E5%88%97%E4%B8%83%E5%AD%98%E5%82%A8%E6%9C%BA%E5%88%B6.html https://tech.meituan.com/2015/01/13/kafka-fs-design-theory.html https://feiz…

数据可视化基础与应用-04-seaborn库从入门到精通01-02

总结 本系列是数据可视化基础与应用的第04篇seaborn&#xff0c;是seaborn从入门到精通系列第1-2篇。本系列的目的是可以完整的完成seaborn从入门到精通。主要介绍基于seaborn实现数据可视化。 参考 参考:数据可视化-seaborn seaborn从入门到精通01-seaborn介绍与load_datas…

CharacterController.Move called on inactive controller

【问题背景】 Unity3D中开发物体的移动&#xff0c;实现代码如下&#xff1a; public class TargetController : MonoBehaviour {private CharacterController character;private float speedRate 4f;private void Start(){character GetComponent<CharacterController&…

等保测评密评对照:一文看懂两者差异

最近&#xff0c;在去几个客户的办公室交流的方案的时候&#xff0c;都会被重点问到网络安全问题,在方案中“等保”是如何体现和落实的。而且有些客户的领导也会提到“密评”与“等保”如何衔接&#xff0c;是否有先后顺序&#xff0c;可否同时进行测评等问题。 关于“等保”与…

网络原理(7)——以太网数据帧和DNS协议(数据链路层和应用层)

目录 一、以太网数据帧&#xff08;数据链路层&#xff09; 二、DNS协议(域名解析系统&#xff0c;应用层协议) 一、以太网数据帧&#xff08;数据链路层&#xff09; 以太网横跨了数据链路层和物理层&#xff0c;这里只做简单介绍&#xff0c;因为普通程序员用不到这一块&am…

UI自动化_id 元素定位

## 导包selenium from selenium import webdriver import time1、创建浏览器驱动对象 driver webdriver.Chrome() 2、打开测试网站 driver.get("你公司的平台地址") 3、使浏览器窗口最大化 driver.maximize_window() 4、在用户名输入框中输入admin driver.find_ele…

hbase启动错误-local host is“master:XXXX“ destination is:master

博主的安装前提&#xff1a; zookeeper安装完成&#xff0c;且启动成功 hdfs高可用安装&#xff0c;yarn高可用安装&#xff0c;且启动成功 报错原因&#xff1a;端口配置不对 解决方案&#xff1a; 输入&#xff1a;hdfs getconf -confKey fs.default.name 然后把相应的…

WM8978 —— 带扬声器驱动程序的立体声编解码器(7)

接前一篇文章&#xff1a;WM8978 —— 带扬声器驱动程序的立体声编解码器&#xff08;6&#xff09; 十、音频接口 WM8978具有一个标准的音频接口&#xff0c;支持立体声数据在芯片之间的传输。该接口是一个3线标准音频接口&#xff0c;支持多种音频数据格式&#xff0c;包括I…

C++ 简单模拟实现 STL 中的 list 与 queue

目录 一&#xff0c;list 1&#xff0c; list 的节点与迭代器 2&#xff0c;list 的数据结构、一些简单的功能、构造函数 3&#xff0c;list 的对元素操作 4&#xff0c;C 11 的一些功能 5&#xff0c;完整代码&#xff1a; 二&#xff0c;queue 一&#xff0c;list std…

Visual Studio 小更新:改善变量的可见性

在 Visual Studio 2022 17.10 预览版 2 中&#xff0c;我们改善了一些小功能&#xff0c;例如&#xff1a;在调试版本中&#xff0c;变量窗口现已可以显示调用堆栈中任意帧的局部变量。 如需体验此功能&#xff0c;请直接安装最新预览版本&#xff0c;就可以知道是怎么一回事儿…

CSS及javascript

一、CSS简介 css是一门语言&#xff0c;用于控制网页的表现。 cascading style sheet:层叠样式表 二、css的导入方式 css代码与html代码的结合方式 &#xff08;1&#xff09;css导入html有三种方式&#xff1a; 1.内联样式&#xff1a;<div style"color:red&quo…

mac 系统如何生成秘钥

1.打开终端&#xff0c;输入 cd ~/.ssh 进入.ssh目录&#xff0c;输入 ls 检查是否已经存在SSH密钥。如果看到类似 id_rsa.pub 的文件&#xff0c;说明已经有一对公钥和私钥&#xff0c;不用新建&#xff0c;直接查看就可以&#xff0c;如果没有需要生成新的密钥。 2.在终端输…

Unity 视频组件 VideoPlayer

组件添加&#xff1a; 在自己定义的组件下&#xff08;例如&#xff1a;Panel&#xff09; 点击 Inspector 面板中的 AddComponent &#xff0c;输入“VideoPlayer”。 资源 这里 视频资源有两种形式&#xff0c;第一种是 VideoClip &#xff0c;需要将视频文件拖拽到该属性字段…

【C语言】【Leetcode】88. 合并两个有序数组

文章目录 一、题目二、思路再思考 一、题目 链接: link 二、思路 这题属于简单题&#xff0c;比较粗暴的做法就是直接比较两个数组&#xff0c;先把第二个数组加到第一个的后面&#xff0c;如何冒泡排序&#xff0c;这种方法简单粗暴但有效&#xff0c;可是不适用于这题&…

政安晨:【Keras机器学习实践要点】(二)—— 给首次接触Keras 3 的朋友

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎机器学习 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 介绍 Keras 3是一个深度学习框架&#xff0…

牛客网BC-33 统计成绩(数组排序思想)

题目如下 --------------------------------------------------------------------------------------------------------------------------------- 思路&#xff1a;以数组形式输入&#xff0c;并将数组顺序&#xff08;或者逆序&#xff09;排序&#xff0c;最后输出最大值最…

Mysql数据库:日志管理、备份与恢复

目录 前言 一、MySQL日志管理 1、存放日志和数据文件的目录 2、日志的分类 2.1 错误日志 2.2 通用查询日志 2.3 二进制日志 2.4 慢查询日志 2.5 中继日志 3、日志综合配置 4、查询日志是否开启 二、数据备份概述 1、数据备份的重要性 2、备份类型 2.1 从物理与…

2.6 IDE(集成开发环境)是什么

IDE&#xff08;集成开发环境&#xff09;是什么 IDE 是 Integrated Development Environment 的缩写&#xff0c;中文称为集成开发环境&#xff0c;用来表示辅助程序员开发的应用软件&#xff0c;是它们的一个总称。 通过前面章节的学习我们知道&#xff0c;运行 C 语言&…