中断控制器和Linux中断子系统

本文深入探讨中断在CPU中的关键作用,从硬件连接层到软件架构,详细阐述中断体系架构,重点分析GIC中断控制器的硬件模块和中断控制器驱动流程。同时,介绍了Linux中断子系统如何屏蔽硬件差异,提升驱动复用性。
摘要由CSDN通过智能技术生成

中断对于cpu来说扮演着举足轻重的角色,从软硬件层面涉及面广,因此流程相对也比较复杂。硬件层面涉及到arm的gic中断控制器以及CPU内部扩展的gpio中断控制器,外设利用中断资源硬件设备,软件层面涉及和架构强相关的异常处理代码,linux为屏蔽硬件涉及差异搞出来的中断子系统。以下从各个层面对中断进行展开讨论。

一.中断体系架构

在这里插入图片描述

中断从软硬件上来分层大致可以分成四层,概述如下:
1.硬件连接层:普通外设连接到中断控制器,中断控制器连接到处理器核的IRQ和FIQ脚,对于处理器来说,中断控制器和普通外设一样,都是外设,所不同的是中断控制器电路是集成在了处理器内部。
2.架构代码:中断对于处理器来说属于异常模式,当中断来临的时候,处理器需要切换到异常模式,执行处理异常的代码,就是上图中的arch code,这一块代码和处理器的体系架构相关,arm64的代码路径位于:kernel\arch\arm64\kernel\entry.S。其次就是中断控制器的驱动代码,ARM中断控制器是ARM用来管理外设中断的硬件电路,分为四个版本GIC_V1/GIC_V2/GIC_V3/GIC_V4/
3.中间层:和硬件无关,对于所有体系架构来说都是一样,是linux用来屏蔽硬件架构差异做的一个通用层;
4.应用层:各种外设驱动,调用中间层提供的通用接口来设置自己的中断和中断服务程序

二.中断控制器
2.1:GIC中断控制器硬件模块介绍
首先需要了解一下中断控制器这个硬件模块。中断控制器是帮助处理器管理繁杂外设中断的硬件电路,让处理器可以专心的做一件事情:机械的根据PC指针来执行对应代码段。从arm发布的GIC_V3规格书来看支持如下功能:

— The Armv8 architecture. —>arm8架构
— Locality-specific Peripheral Interrupts (LPIs). —>特殊外设中断(INTID:8192-)
— Private Peripheral Interrupts (PPIs). —>CPU私有外设中断(INTID:16-31)
— Software Generated Interrupts (SGIs). —>软中断,用于核间通信(INTID:0-15)
— Shared Peripheral Interrupts (SPIs). —>共享外设中断,用于普通外设(INTID:32-1019)
— Inter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值