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

中断控制器对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.mzph.cn/news/768821.shtml

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

相关文章

HTTP状态码(3)

HTTP 状态码负责表示客户端 HTTP 请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作 状态码告知从服务器端返回的请求结果 状态码的职责是当客户端向服务器端发送请求时&#xff0c;描述返回的请求结果。借助状态码&#xff0c;用户可以知道服务器端是正常…

AIGC实战——Transformer模型

AIGC实战——Transformer模型 0. 前言1. T52. GPT-3 和 GPT-43. ChatGPT小结系列链接 0. 前言 我们在 GPT (Generative Pre-trained Transformer) 一节所构建的 GPT 模型是一个解码器 Transformer&#xff0c;它逐字符地生成文本字符串&#xff0c;并使用因果掩码只关注输入字…

面试问题——redis——缓存穿透、击穿、雪崩

HR&#xff1a;你在项目中的那些场景用到了redis&#xff1f; 1. 缓存穿透问题 &#xff08;项目中使用的方法&#xff09; 2. 缓存击穿 解决办法1&#xff1a;加互斥锁。大量并发时&#xff0c;先让一个人去查&#xff0c;其他人等着。这样剩下人就可在缓存直接获取值。&#…

Web实现名言生成器:JavaScript DOM基础与实例教程

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

Linux-安装redis

安装指令 sudo apt-get install redis-server 启动服务 sudo systemctl start redis 查找redis路径 find / -name "filename" linux redis修改密码 sudo nano /etc/redis/redis.conf 找到 "requirepass" 这一行&#xff0c;取消注释并设置新的密码&…

跳蚱蜢(蓝桥杯)

文章目录 跳蚱蜢题目描述答案&#xff1a;20bfs 跳蚱蜢 题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 如下图所示&#xff1a; 有 9 只盘子&#xff0c;排成 1 个圆圈。 其中 8 只盘子内装着 8 只蚱蜢&#xff…

包含多个段的程序

文章目录 包含多个段的程序在代码段中使用数据在代码段中使用栈将数据、代码、栈放入不同的段 包含多个段的程序 在代码段中使用数据 考虑这样一个问题&#xff0c;编程计算以下8个数据的和&#xff0c;结果存在ax 寄存器中&#xff1a;0123H&#xff0c;0456H&#xff0c;07…

ctfshow web入门 反序列化

254 分析代码&#xff1a; 如果用户名和密码参数都存在&#xff0c;脚本会创建一个 ctfShowUser 类的实例 $user。 接着&#xff0c;调用 $user->login($username, $password) 方法尝试登录。如果登录成功&#xff08;即用户名和密码与类中的默认值匹配&#xff09;&#…

详解机器学习概念、算法

目录 前言 一、常见的机器学习算法 二、监督学习和非监督学习 三、常见的机器学习概念解释 四、深度学习与机器学习的区别 基于Python 和 TensorFlow 深度学习框架实现简单的多层感知机&#xff08;MLP&#xff09;神经网络的示例代码&#xff1a; 欢迎三连哦&#xff01; 前言…

Spark Map 和 FlatMap 的比较

Spark Map 和 FlatMap 的比较 本节将介绍Spark中map(func)和flatMap(func)两个函数的区别和基本使用。 函数原型 map(func) 将原数据的每个元素传给函数func进行格式化&#xff0c;返回一个新的分布式数据集。 flatMap(func) 跟map(func)类似&#xff0c;但是每个输入项和…

JUC(二)

1、wait notify Owner 线程发现条件不满足&#xff0c;调用 wait 方法&#xff0c;即可进入 WaitSet 变为 WAITING 状态 BLOCKED 和 WAITING 的线程都处于阻塞状态&#xff0c;不占用 CPU 时间片 BLOCKED 线程会在 Owner 线程释放锁时唤醒 WAITING 线程会在 Owner 线程调用 …

Gelato Network的创始人HILMAR ORTH确认出席HackSummit2024区块链开发者大会

随着Web3技术的日新月异&#xff0c;区块链领域正以前所未有的速度席卷全球。在这一变革的浪潮中&#xff0c;备受瞩目的区块链盛会——Hack.Summit() 2024区块链开发者大会&#xff0c;将于2024年4月9日至10日&#xff0c;在香港数码港隆重登场。这一里程碑式的大会不仅标志着…

#Linux系统编程(read,open,close,write综合练习)

&#xff08;一&#xff09;发行版&#xff1a;Ubuntu16.04.7 &#xff08;二&#xff09;记录&#xff1a; &#xff08;1&#xff09;不传参&#xff0c;指定拷贝文件&#xff0c;指定复制到文件 #include <stdio.h> #include <stdlib.h> #include <sys/typ…

大厂校招,已经在「这些平台」里卷起来了!

如今的校招卷内容&#xff0c;更卷渠道。传统的渠道已然无法满足企业的野心&#xff0c;于是他们将目光投向了主流社交平台。无论是在「微信公众号」、「B站」还是「小红书」&#xff0c;我们都不难发现大厂们「开卷」的身影。那么&#xff0c;参考它们的思路&#xff0c;企业该…

Python爬虫-批量爬取星巴克全国门店

前言 本文是该专栏的第22篇,后面会持续分享python爬虫干货知识,记得关注。 本文笔者以星巴克为例,通过Python实现批量爬取目标城市的门店数据以及全国的门店数据。 具体的详细思路以及代码实现逻辑,跟着笔者直接往下看正文详细内容。(附带完整代码) 正文 地址:aHR0cHM…

【前端寻宝之路】JavaScript初学之旅

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-azUa9yH16cRXQUxE {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

解读EPO电梯行业数智化平台功能模块,开启电梯行业智能之旅

在当今的电梯行业中&#xff0c;数字化和智能化已经成为提升运营效率和服务质量的关键。EPO电梯行业数智化运营平台凭借其出色的功能模块&#xff0c;为行业带来了创新和变革。那么我们今天就来讲讲国辰智企的EPO电梯行业数智化运营平台的功能吧。 1、EOS土建出图&#xff1a;这…

贝尔曼最优方程【BOE】

强化学习笔记 主要基于b站西湖大学赵世钰老师的【强化学习的数学原理】课程&#xff0c;个人觉得赵老师的课件深入浅出&#xff0c;很适合入门. 第一章 强化学习基本概念 第二章 贝尔曼方程 第三章 贝尔曼最优方程 文章目录 强化学习笔记一、最优策略二、贝尔曼最优方程(BOE)三…

【linux】进程1 -- 属性

文章目录 进程PCBlinux查看进程 进程属性task_struct结构体一、进程标识符父子进程 二、进程状态磁盘睡眠 -- D 暂停和跟踪暂停 -- T和t僵尸进程 -- Z孤儿进程 三、进程优先级 进程 课本概念&#xff1a;程序的一个执行实例&#xff0c;正在执行的程序&#xff0c;操作系统进行…

反序列化漏洞简单知识

目录&#xff1a; 一、概念&#xff1a; 二、反序列化漏洞原因 三、序列化漏洞的魔术方法&#xff1a; 四、反序列化漏洞防御&#xff1a; 一、概念&#xff1a; 序列化&#xff1a; Web服务器将HttpSession对象保存到文件系统或数据库中&#xff0c;需要采用序列化的…