硬件基础中断

中断方式:

1.定义:能打断当前正在进行的工作,去处理更为紧急的任务,并且在处理完中断任务后,能回到

原先的地方继续工作。

2.流程:

(1)中断源发出中断请求。

(2)CPU检查是否响应中断以及该中断是否被屏蔽。

(3)检查当前产生的中断的中断优先级。

(4)保护现场

(5)执行中断服务函数

(6)恢复现场

1.硬件介绍

(1)两红一黄三个开关,中间是复位按钮,左边低功耗按钮,右边为允许用户独立控制的试验按

键

(2)原理图分析:开关断开高电平,开关按下低电平

2.编写按键代码(轮训方式)

(1)封装代码,注册回调函数

(2)中断模块

(3)GPIO模块封装

extern void gpio_init(GPIO_Type *gpio, int pin, gpio_config_t *config);

extern int gpio_read(GPIO_Type *gpio, int pin);

extern void gpio_write(GPIO_Type *gpio, int pin, int value);

3.中断控制器GIC(通用的中断控制器)

(1)23.page

V2.0设计可以为8个内核提供中断控制服务,但我们使用的IMX6ULL只有一个内核,图中所示只有

processor 0

每个内核能够相应1020个中断源,其中0~15是SGI,16~31是PPI,能够作为外设中断源的是

SPI32~1019

(2)Distributor(分发器):

(1)SGI(Software-generated Interrupt),软件中断:

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

多核之间的通信。

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

GIC 是支持多核的,每个核肯定有自己独有的中断。这些独有的中断肯定是要指定的核心处理,

因此这些中断就叫做私有中断;

(3) SPI(Shared Peripheral Interrupt),共享中断:

相关推荐
Hi202402174 天前
同一个 NMS 算子,两种语言实现:CUDA C 与 Rust 生成 LLVM IR 和 Vortex 汇编的差异
c语言·汇编·rust·gpgpu·vortex·cudac
lhbweilai4 天前
深挖FreeRTOS内核实现(二)
c语言·汇编·stm32·单片机
水饺编程5 天前
第1章:开发环境搭建,在 Windows 中安装 VS 2019
linux·c语言·汇编·visual studio
水饺编程5 天前
第1章:下载 Linux 0.12 内核
linux·c语言·汇编·ubuntu
水饺编程5 天前
第1章:开发环境搭建,在 Windows 中安装 Git
linux·c语言·汇编·git·ubuntu
水饺编程6 天前
第1章:在 Windows 中安装 GCC 套件
c语言·汇编
水饺编程7 天前
第1章,了解乌班图环境,使用浏览器和邮箱
c语言·汇编·ubuntu
水饺编程7 天前
第1章:开发环境搭建,在 Windows 中安装 QEMU
c语言·汇编
AC赳赳老秦7 天前
OpenClaw 数据引用规范自动生成:为公开数据构建可信来源标注与标准引用体系
大数据·开发语言·汇编·数据库·人工智能·deepseek·openclaw
工作10年+,存储芯片行业7 天前
Linux NVMe 中断排查与性能优化:IRQ 优化(原理+排查)
linux·运维·性能优化·ssd·nvme·pcie·中断