coretex-A7 中的中断

news/2024/9/22 22:29:49/

一. 操作系统中中断

中断: 指处理机处理程序运行中出现的紧急事件的整个过程.程序运行过程中,系统外部、系统内部或者现行程序本身若出现紧急事件,处理机立即中止现行程序的运行,自动转入相应的处理程序(中断服务程序),待处理完后,再返回原来的程序运行,这整个过程称为程序中断。

二.   Coretex-A7的中断

1. 中断向量表

中断向量表即中断向量的列表。

中断向量表是一个表,这个表里面存放的是中断向量。
中断服务程序的入口地址或存放中断服务程序的首地址成为中断向量,因此中断向量表是一系列中断服务程序入口地址组成的表。
这些中断服务程序(函数)在中断向量表中的位置是由半导体厂商定好的,当某个中断被触发以后就会自动跳转到中断向量表中对应的中断服务程序(函数)入口地址处。中断向量表在整个程 序的最前面。

2. 中断向量偏移

我们说 ARM 处理器都是从地址 0X00000000 开始运行的,但是我们学习 STM32 的时候
代码是下载到 0X8000000 开始的存储区域中。因此中断向量表是存放到 0X8000000 地址处
的,而不是 0X00000000,这样不是就出错了吗?
为了解决这个问题,Cortex-M 架构引入了一个新的概念——中断向量表偏移。
通过中断向量表偏移就可以将中断向量表存放到任意地址处,中断向量表偏移配置在函数 SystemInit 中完成,通过向 SCB_VTOR 寄存器写入新的中断向量表首地址即可。

3. GIC 中断控制器

GIC中断控制器即(Generic Interrupt Controller)

中断系统得有个管理机构,GIC中断控制器就是Cortex-A 内核的中断管理机构。

GIC用于管理 Cortex-A 的中断。GIC 提供了开关中断,设置中断优先级。

4.  Cortex-A7中断向量表

STM32 一样,Cortex-A7 也有中断向量表,中断向量表也是在代码的最前面。Cortex
A7 内核有 8 个异常中断,中断向量表如下

在表 17.1.2.1 中有个 IRQ 中断, Cortex-A 内核 CPU 的所有外部中断都属于这个 IRQ 中断。
当任意一个外部中断发生的时候都会触发 IRQ 中断。在 IRQ 中断服 务函数里面就可以读取指定的寄存器来判断发生的具体是什么中断,进而根据具体的中断做出相应的处理。
这些外部中断和 IRQ 中断的关系如下所示:

 左侧的 Software0_IRQn~PMU_IRQ2_IRQ 这些都是 I.MX6U 的中断,他们都属于 IRQ 中断。当图 17.1.2.1 左侧这些中断中任意一个发生的时候 IRQ 中断都会被触发,所以,我们需要在 IRQ 中断服务函数中判断究竟是左侧的哪个中断发生了,然后再做出具体的处理。

GIC 将众多的中断源分为分为三类:

(1)  SPI中断(Shared Peripheral Interrupt),即共享中断。

顾名思义,所有 Core 共享的中断,这个是最常见的,那些外部中断都属于 SPI 中断(注意!不是 SPI 总线那个中断) 。比如按键中断、串口 中断等等,这些中断所有的 Core 都可以处理,不限定特定 Core

(2)  PPI(Private Peripheral Interrupt),私有中断。

我们说了 GIC 是支持多核的,每个核肯定有自己独有的中断。这些独有的中断肯定是要指定的核心处理,因此这些中断就叫做私有中断。

(3)  SGI(Software-generated Interrupt),软件中断。

由软件触发引起的中断,通过向寄存器 GICD_SGIR 写入数据来触发,系统会使用 SGI 中断来完成多核之间的通信。

IMX6U中断号

IMX6ULL 支持 128 个中断。为了区分不同的中断,引入了中断号。

ID0~ID15 是给 SGI

ID16~ID31 是给 PPI

剩下的 ID32~1019 SPI(Shared Peripheral Interrupt),也就是按键中断、串口中断等等。


http://www.ppmy.cn/news/40350.html

相关文章

基础练习 闰年判断

def is_leap_year(year):if year % 4 0 and year % 100 ! 0 or year % 400 0:print("yes")else:print("no")if __name__ __main__:is_leap_year(int(input()))

鼎捷T100制造之工艺工单实战(线性工艺补充)

文章目录 一、线性工艺1.1 应用场景1.2 系统实操1.2.1 abmm200 产品结构1.2.2 aeci004 作业编号维护1.2.3 料件工艺维护作业aecm2001.2.4 建立工单asft3001.2.5 工艺工单发料1.2.6 第一道工序check in1.2.7 第二道工序check out1.2.8 第三、四道工序 报工1.2.9 完工入库asft340…

C++11:便利的工具

目录1 处理日期和时间的chrono库1.1 记录时长的duration1.2 表示时间点的time point1.3 获取系统时钟的clocks2 数值类型和字符串的相互转换3 宽窄字符转换1 处理日期和时间的chrono库 1.1 记录时长的duration duration表示一段时间间隔,用来记录时间长度&#xf…

【Rust基础】语法知识

系列综述: 💞目的:本系列是个人学习Rust语言整理的,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于b站的Rust中文社群线上学习室和菜鸟教程进行的,每个知识…

个人-计算机操作系统第三章

一、章节习题 1、在分时系统中,进程调度经常采用______算法。 A 先来先服务 B 最大优先权 C 时间片轮转 D 随机 2、进程调度有各种各样的算法,如果算法处理不当,就会出现____现象。 A 颠簸(抖动&a…

什么是水审计

1.1 水审计 水审计即落实水量平衡表,由国际水协专家组团队协助供水企业构建水量平衡表的过程可以帮助供水企业的管理人员认识NRW的大小、来源和成本。 用水量平衡表来计算漏损的每一个构成要素,从而查明漏失的原因。这将决定政策的改变和经营方法的优先…

MLOps : 机器学习运维

文章目录MLOps : 机器学习运维产生背景MLOpos 做了什么事情MLOps : 机器学习运维 产生背景 因为存在如下的背景,所以才有了 MLOps 的需求 第一,跨团队协作难度大。机器学习项目生命周期中涉及业务、数据、算法、研发、运维等多团队,团队间缺…

Win10怎么取消开机密码?这样做就可以!

集美们,我每次开电脑都要输入密码,感觉太麻烦了,想把开机密码取消掉,应该怎么做呀?感谢回答!】 在Windows 10操作系统中,用户可以设置开机密码来保护计算机的安全性。然而,有时候用…