嵌入式Linux学习(3)——中断(Interrupt)子系统概念

目录

一. 中断概念与分类

1.1 中断分类

1.2 中断事件的处理流程

1.3 中断号(IRQ number)

1.4 中断源(Interrupt Source)

1.5 中断触发方式

二. 中断子系统架构

2.1 GIC

2.2 中断子系统架构

2.3 GIC与IP

    2.3.1 典型GIC IP

             PLC390

             GIC 400

            GIC 500

REF


一. 中断概念与分类

中断是指 CPU 在执行程序的过程中,出现了某些突发事件急待处理,CPU 必须暂停当前程序的执 行,转去处理突发事件,处理完毕后又返回原程序被中断的位置继续执行。

1.1 中断分类

有的地方也把内部中断和外部中断统称为硬中断。

中断处理:中断类型 | 东芝半导体&存储产品中国官网

1. 软中断是执行中断指令产生的,而硬中断是由外设引发的硬中断的中断号是由中断控制器提供的,软中断的中断号由指令直接指出,无需使用中断控制器。

2. 内部中断的中断源来自 CPU 内部(软件中断指令、溢出、除法错误等,例如,操作系统从用户态切换到内核态需借助 CPU 内部的软件中断),外部中断 的中断源来自 CPU 外部,由外设提出请求。

3. 可屏蔽中断可以通过设置 中断控制器寄存器等方法被屏蔽,屏蔽后,该中断不再得到响应,而不可屏蔽中断不能被屏蔽。

4. 根据中断入口跳转方法的不同,中断可分为向量中断和非向量中断。采用向量中断的 CPU 通常为不同的中断分配不同的中断号,当检测到某中断号的中断到来后,就自动跳转到与该中断号对应的地址执行。不同中断号的中断有不同的入口地址。非向量中断的多个中断共享一个入口地址,进入该入口地址后,再通过软件判断中断标志来识别具体是哪个中断。也就是说,向量中断由硬件提供中断服务程序入口地址,非向量中断由软件提供中断服务程序入口地址。

1.2 中断事件的处理流程

收到中断事件后的处理流程:

1. 抢占当前任务:内核必须暂停正在执行的进程;

2. 执行中断处理函数(ISR):找到对应的中断处理函数,将 CPU 交给它(执行),ISR 位于 Interrupt Vector table,这个 table 位于内存中的固定地址;

3. 中断处理完成之后:第 1 步被抢占的进程恢复执行,在中断处理完成之后,处理器恢复执行被中断的进程(resume the interrupted process)。

1.3 中断号(IRQ number)

1. IRQ number:软中断号,在Linux系统中是唯一的,也是编程的时候需要用到的中断号。

2. HW interrupt ID:也称之为硬件中断号,是中断控制器用来标识外设中断的。

3. IRQ domain:负责实现硬件中断号与软件中断号的映射,通常是由芯片原厂的工程师来映射的,然后他们再将映射后的软中断号告诉我们编程人员。

1.4 中断源(Interrupt Source)

中断源类型中断号ID范围用途

SGI (Software Generated Interrupt)

软件触发中断

0~15用于多核之间的相互通信,SGI通常在Linux内核中被用作 IPI 中断(inter-processor interrupts),并会送达到系统指定的CPU上。

PPI (Private Peripheral Interrupt)

私有外设中断

16~31每个CPU私有的中断,通常会送达到指定的CPU上,应用场景有CPU本地时钟。

SPI (Shared Peripheral Interrupt)

公用外设中断/共享外设中断

32~1019此类中段是由外设触发的中断信号,比如按键、手机触摸屏触发的、串口等中断。
LIP (Locality-specific Peripheral Interrupt)基于消息的边沿中断8192 - MAXGICv3/v4中支持,它们在很多方面与其他类型的中断不同。LPI始终基于消息的中断,它们的配置保存在表中而不是寄存器。像按键/触摸等这些传统的中断都是需要管脚的,而LPI是基于消息的,直接操作寄存器,就不需要占用管脚了。比如PCIe的MSI/MSI-x中断。

1.5 中断触发方式

中断的触发方式可分为边沿触发(上升沿、下降沿)和电平触发(高电平、低电平),两种触发方式的行为有所不同。

触发方式

特点

边沿触发

在检测到上升沿或下降沿后触发中断,此后中断会一直处于触发状态,直到软件应答该中断为止

电平触发

在检测到特定电平后触发中断,电平变化或软件应答都能deassert该中断

二. 中断子系统架构

2.1 GIC

GIC(Generic Interrupt Controller)是ARM公司提供的一个通用的中断控制器,其Architecture Specification目前有V1~V4四个版本,V1很古老了,基本被废弃,V2最多支持8个ARM core,V3/V4支持更多的ARM core。中断控制器就是用来控制中断的,可以通过中断控制器来控制中断的开关和优先级等。

GIC 主要由两部分组成,分别是仲裁单元(Distributor)和CPU接口(Interface)模块。

(1) Distributor 检测各个中断源的状态,使能/屏蔽中断,设置中断优先级,分发各个中断源产生的中断事件分发到指定的一个或者多个 CPU interface 上等。

(2) CPU interface 连接 GIC 和 CPU 处理器。多个CPU interface 就可以连接到多核 CPU 了。

中断控制器是可以级联的,如下图所示。

由后面的 “GIC 400” 小节可知,即使是多核 CPU 也只提供了“4种窗口”,即 IRQ(普通中断模式)、FIQ (快速中断模式)、Virtual IRQ、Virtual FIQ。

2.2 中断子系统架构

如下为中断子系统的架构图,也大概说明了CPU/GIC与Linux驱动开发者的关系。

2.3 GIC与IP

新的版本都是兼容旧版本的。 

SoC(System on Chip) 是一种集成了多个功能组件和外设的芯片,它通常包含一个或多个 CPU 核心,以及其他系统组件,如内存控制器、图形处理器、输入输出接口、中断控制器、外设控制器等。这些组件都集成在同一芯片上,共享同一个物理封装和电源供应。在 ARM 体系结构中,GIC通常与其他外设集成在 SoC 中,用于处理和分发各种中断。

IP(Intellectual Property)也称为 IP 核(Intellectual Property Core),是指芯片中具有独立功能的电路模块的成熟设计。该电路模块设计可以应用在包含该电路模块的其他芯片设计项目中,从而减少设计工作量,缩短设计周期,提高芯片设计的成功率。该电路模块的成熟设计凝聚着设计者的智慧,体现了设计者的知识产权,因此,芯片行业就用 IP 核(Intellectual Property Core)来表示这种电路模块的成熟设计。IP 核也可以理解为芯片设计的中间构件。一般说来,一个复杂的芯片是由芯片设计者自主设计的电路部分和多个外购的 IP 核连接构成的。绝大多数 SOC 厂商都依赖 IP 来设计和生产一款 SOC 芯片,做 SOC 的过程其本质就是寻找,验证及整合 IP 的过程。

在这里可以通俗的理解为 GICv1~v4 都是规范,IP 是对应 GIC 规范实现的一些GIC模块,然后这些 IP 会卖给半导体厂家用来做 SoC。

2.3.1 典型GIC IP
GIC version典型IP

GIC-v2 架构

GIC 400
GIC-v3 架构

GIC 500

GIC-4 架构GIC 600
PLC390

整体框图如下

1. 单核PLC390

2. 多核PLC

GIC 400

多核 GIC 400 

  

GIC 500

GIC v3 支持了更多核这里的 CPU 直接称为 PE 了,SPI 和 PPI 接在了不同的 Distributor 上。

PE(Processing Element):指处理器系统中的一个实体,代表一个可执行指令的核心或线程。在多核处理器系统中,每个核心被视为一个独立的处理元素。每个处理元素都具有自己的寄存器集、执行单元和控制逻辑,能够独立执行指令和处理数据。 

REF

Documentation – Arm Developer

《PrimeCell Generic Interrupt Controller(PL390)》

《CoreLink GIC-400 Generic Interrupt Controller》

《ARM CoreLink GIC-500 Generic Interrupt Controller》

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

输出26个英文字母 C语言xdoj97

描述&#xff1a; 编写一个程序&#xff0c;分别按正向和逆向输出小写字母。 输入说明&#xff1a; 无。 输出说明&#xff1a; 字母间以空格分隔&#xff0c;正向输出完换行&#xff0c;再逆向输出。 输入样例 无。 输出样例 无。 #include <stdio.h>//输出26个英文字…

智能优化算法应用:基于金鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于金鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于金鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.金鹰算法4.实验参数设定5.算法结果6.参考文献7.MA…

flowable-startEvent[开始事件]相关配置[表单、执行监听器]

flowable各个事件、网关、任务的使用详解 既然网上没有合适的教程&#xff0c;那就力求达到先会用&#xff0c;再理解。 当然各个事件有一些功能是重复的&#xff0c;比如事件和任务都有执行监听器&#xff0c;这个等说到任务的时候就会提一下&#xff0c;然后带过。 今天只看“…

【PostgreSQL】从零开始:(六)PostgreSQL-数据库目录文件结构及作用说明

数据库文件目录结构 ├── bin #系统工具目录 │ ├── clusterdb │ ├── createdb │ ├── createuser │ ├── dropdb │ ├── dropuser │ ├…

JVM调优排错专题

JVM调优排错专题 1 打开MAT报错 1 打开MAT报错 下载了linux版本的 MAT 软件&#xff0c;1.15.0版本。 下载地址&#xff1a;https://eclipse.dev/mat/downloads.php 运行时报错了。 错误截图 报错日志 wittasus:/usr/develop/mat$ ./MemoryAnalyzer Unrecognized option:…

springCould-从小白开始【1】

目录 1.说明 2.父工程 3.服务端 4.消费者 5.公共模块 6.RestTemplate 1.说明❤️❤️❤️ 创建三个模块&#xff0c;服务者&#xff0c;消费者&#xff0c;公共api 注&#xff1a;spring boot和spring cloud有版本约束 2.父工程 ❤️❤️❤️ 约定版本号配置 注意&…

Leetcode: 203. 移除链表元素

题目 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 难度&#xff1a;简单 题目链接&#xff1a;203. 移除链表元素 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val …

51单片机LED与无源蜂鸣器模块

IO口的使用1 本文主要对51单片机的LED灯的使用以及蜂鸣器的使用进行介绍&#xff0c;其中包括一些实例分析&#xff1a; 1.实现发光二极管的从左到右的流水点亮 2.左右来回循环的流水灯 3.蜂鸣器以一定频率响 文章目录 IO口的使用1一、LED灯举个栗子一举个栗子二 二、蜂鸣器2.1…

Ebullient第一阶段开发小结

一. 简介 距离Ebullient硬件发布已有一段时间&#xff0c;小一个月吧&#xff0c;在这段时间内在努力的编写代码&#xff0c;现在终于完成了第一阶段的功能设计&#xff0c;算是一个小型的样机吧&#xff0c;基本的代码框架基本确定了&#xff0c;相信后续的会快一点(希望如此…

创建自定义 gym env 教程

gym-0.26.1 pygame-2.1.2 自定义环境 GridWolrdEnv 教程参考 官网自定义环境 &#xff0c;我把一些可能有疑惑的地方讲解下。 首先整体文件结构, 这里省略了wrappers gym-examples/main.py # 这个是测试自定义的环境setup.py gym_examples/__init__.pyenvs/__init__.pygri…

Oracle的学习心得和知识总结(三十一)| ODBC开放式数据库连接概述及应用程序开发

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《Oracle Database SQL Language Reference》 2、参考书籍&#xff1a;《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…

网工内推 | 美团、中通快递,网络运维,最高30K*15薪

01 美团 招聘岗位&#xff1a;网络运维开发工程师 职责描述&#xff1a; 1.负责新零售业务门店/仓库网络的日常运维、故障处理、应急响应&#xff0c;保障网络及相关业务的稳定运行&#xff0c;处理突发事件、对疑难问题进行跟踪并最终解决。 2.负责新零售业务门店/仓库网络的…

Neural Network——神经网络

1.feature reusing——特征复用 1.1 什么是特征复用 回顾我们之前所学习的模型&#xff0c;本质上都是基于线性回归&#xff0c;但却都可以运用于非线性相关的数据&#xff0c;包括使用了如下方法 增加更多的特征产生新的特征&#xff08;多项式回归&#xff09;核函数 在本身…

router全局守卫beforeEach导致infinite redirect in navigation guard 问题

问题背景 路由加了全局守卫之后&#xff0c;报错&#xff1a; 分析原因 内部判断&#xff0c;导致路由产生了死循环 错误代码 router.beforeEach((to, from, next) > {if (store.getters.token) {if (to.path /login) {next(/)} else {next()}} else {next(/login)} })…

MeterSphere files 任意文件读取漏洞复现 (CVE-2023-25573)

0x01 产品简介 MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等功能,全面兼容 JMeter、Selenium 等主流开源标准。 0x02 漏洞概述 MeterSphere /api/jmeter/download/files 路径文件存在文件读取漏洞,攻击者可通过该漏洞读取系统重要…

卸载MySQL——Windows

1. 停止MySQL服务 winR 打开运行&#xff0c;输入 services.msc 点击 “确定” 调出系统服务。 我这里只有一个&#xff0c;只要是以MySQL开头的全部停止 2. 卸载MySQL相关组件 打开控制面板 —> 卸载程序 —> 卸载MySQL相关所有组件 3. 删除MySQL安装目录 一般是C:\P…

win11 wsl2安装

参考视频 微软商店直接下载以后&#xff08;提前打开虚拟化&#xff0c;linux子系统选项&#xff09; 设置为wsl2 wsl --set-default-version 2然后直接打开即可 可能遇到的问题 WSL2 占位程序接收到错误数据。 Error code: Wsl/Service/0x800706f7 管理员权限启动,重启 …

蓝桥杯嵌入式——串口

CUBE里配置成异步模式&#xff0c;设置波特率&#xff0c;打开中断&#xff08;先配置LCD再配置串口&#xff09;&#xff1a; 串口发送 main.c #include "string.h" char temp[20]; sprintf(temp,"Hello World\r\n"); HAL_UART_Transmit(&huart1,(…

AutoSAR(基础入门篇)1.3-AutoSAR的概述

目录 一、到底什么是AutoSAR 1、大白话来讲 2、架构上来讲 应用软件层(APPL) 实时运行环境&#xff08;RTE&#xff09; 基础软件层(BSW) 3、工具链上来讲 二、AutoSAR的目标 一、到底什么是AutoSAR 1、大白话来讲 AUTOSAR 就是AUTomotive Open System ARchitecture的…

文件操作学习总结

磁盘上的⽂件是⽂件。 但是在程序设计中&#xff0c;我们⼀般谈的⽂件有两种&#xff1a; 程序⽂件、数据⽂件 &#xff08;从⽂件功能的⻆度来分类 的&#xff09;。 程序⽂件 &#xff1a; 程序⽂件包括源 程序⽂件&#xff08;后缀为.c&#xff09; , ⽬标⽂件&#xff0…