中断处理
中断处理
爱洋葱
One battle, one person
展开
-
Linux 中断 —— GIC (中断生命周期)
经过前面的分析可以看出一个中断从产生、执行,到最终结束的流程。这里我们用树形代码路径来简要分析一下一个中断的生命周期:vector_irq()->vector_irq()->__irq_svc() ->svc_entry()-------------------------------------------------------------------------...转载 2019-05-30 22:02:56 · 1242 阅读 · 0 评论 -
Linux 中断 —— GIC (中断注册)
目录1. 中断模型2. 中断注册2.1 标志位2.1.1IRQF_* 类型2.1.2IRQS_*类型2.1.3IRQD_*类型2.2注册接口Linux 中断子系统为各个外设驱动提供注册中断的接口。但如果希望更好的用这些接口进行内核代码的编写,则需要先了解相关的一些内容。1. 中断模型在所有关于 CPU 的底层编程中,无一例外的,都要求,...转载 2019-05-30 21:56:34 · 3452 阅读 · 3 评论 -
Linux 中断 —— GIC (高层中断处理)
目录1. 跳转入口2. 内核空间中断处理3. 高层中断处理3.1 基本中断流程3.2 唤醒中断内核线程3.3 中断上下文在前面,系统初始化阶段 GIC (对应的表达为 irq_domain) 初始化完毕,在驱动层,将对应的中断初始化完毕,为每个需要中断的驱动分配好了 irq_desc,以及相关的结构初始化完毕,下面来看看中断处理的流程。中断处理流程,首先需要分析 A...转载 2019-05-30 00:34:58 · 2827 阅读 · 0 评论 -
Linux 中断 —— GIC (数据结构 irq_domain/irq_desc/irq_data/irq_chip/irqaction)
前面两篇文章简述了 GIC 的初始化和中断号的匹配过程,这里有必要在了解一下中断相关的数据结构,以及他们之间的关系。目录1. 中断描述符 irq_desc2. 响应函数 irqaction3. 中断数据 irq_data4. 操作合集 irq_chip5. 对应关系6. 相关数据结构初始化1. 中断描述符 irq_desc在 Linux kernel 中,...转载 2019-05-29 00:54:42 · 3989 阅读 · 1 评论 -
Linux 中断 —— GIC (中断号映射)
一、概述在linux kernel中,我们使用下面两个ID来标识一个来自外设的中断:1、IRQ number。CPU需要为每一个外设中断编号,我们称之IRQ Number。这个IRQ number是一个虚拟的interrupt ID,和硬件无关,仅仅是被CPU用来标识一个外设中断。2、HW interrupt ID。对于interrupt controller而言,它收集了多个外设的i...转载 2019-05-28 00:05:18 · 9660 阅读 · 1 评论 -
Linux 中断 —— GIC 初始化
GIC-V2在 Linux 层的初始化分析1、GIC 的 device node和GIC irq chip driver的匹配过程(1)irq chip driver中的声明在drivers\irqchip\irqchip.h文件中定义了 IRQCHIP_DECLARE :#define IRQCHIP_DECLARE(name, compat, fn) OF_DECL...转载 2019-05-26 23:52:40 · 3634 阅读 · 0 评论 -
Linux 中断 —— ARM GIC 中断控制器
GIC(Generic Interrupt Controller)是ARM公司提供的一个通用的中断控制器,其architecture specification目前有四个版本,V1~V4(V2最多支持8个ARM core,V3/V4支持更多的ARM core,主要用于ARM64服务器系统结构)。目前在ARM官方网站只能下载到Version 2的GIC architecture specificat...转载 2019-05-23 00:14:54 · 7524 阅读 · 2 评论 -
Linux中断(interrupt)子系统之五:软件中断(softIRQ)(转)
文章转自:https://blog.csdn.net/DroidPhone/article/details/7518428 。感谢作者的分享 软件中断(softIRQ)是内核提供的一种延迟执行机制,它完全由软件触发,虽然说是延迟机制,实际上,在大多数情况下,它与普通进程相比,能得到更快的响应时间。软中断也是其他一些内核机制的基础,比如tasklet,高分辨率timer等。 1. ...转载 2019-01-17 19:28:50 · 545 阅读 · 0 评论 -
Linux中断(interrupt)子系统之四:驱动程序接口层 & 中断通用逻辑层(转)
文章转自:https://blog.csdn.net/DroidPhone/article/details/7497787 。感谢作者的分享在本系列文章的第一篇:Linux中断(interrupt)子系统之一:中断系统基本原理,我把通用中断子系统分为了4个层次,其中的驱动程序接口层和中断通用逻辑层的界限实际上不是很明确,因为中断通用逻辑层的很多接口,既可以被驱动程序使用,也可以被硬件封装层使用...转载 2019-01-17 19:17:06 · 1055 阅读 · 0 评论 -
Linux中断(interrupt)子系统之三:中断流控处理层(转)
文章转自:https://blog.csdn.net/DroidPhone/article/details/7489756 。感谢作者的分享 1. 中断流控层简介早期的内核版本中,几乎所有的中断都是由__do_IRQ函数进行处理,但是,因为各种中断请求的电气特性会有所不同,又或者中断控制器的特性也不同,这会导致以下这些处理也会有所不同:何时对中断控制器发出ack回应; mask...转载 2019-01-17 17:54:44 · 1181 阅读 · 0 评论 -
Linux中断(interrupt)子系统之二:arch相关的硬件封装层(转)
文章转自:https://blog.csdn.net/DroidPhone/article/details/7467436 。感谢作者的分享Linux的通用中断子系统的一个设计原则就是把底层的硬件实现尽可能地隐藏起来,使得驱动程序的开发人员不用关注底层的实现,要实现这个目标,内核的开发者们必须把硬件相关的内容剥离出来,然后定义一些列标准的接口供上层访问,上层的开发人员只要知道这些接口即可完成对...转载 2019-01-17 17:04:10 · 563 阅读 · 0 评论 -
Linux中断(interrupt)子系统之一:中断系统基本原理(转)
文章转自:https://blog.csdn.net/DroidPhone/article/details/7445825 。感谢作者的分享这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于ARM这一体系架构,其他架构的原理其实也差不多,区别只是其中的硬件抽象层。内核版本基于3.3。虽然内核的版本不断地提升,不过自从上一次变更到当前的通用中断子系统后,大的框架性的东...转载 2019-01-17 16:45:44 · 1486 阅读 · 0 评论 -
Linux 中断之中断控制
中断使能/禁止IRQ 的控制在内核代码很多地方都有使用,主要是中断的禁止和使能的几组函数:local_irq_enable() local_irq_disable()这两个通常以单个汇编指令实现,用于禁止/使能当前处理器的本地中断。针对 ARM 处理器:include/linux/irqflags.harch/arm/include/asm/irqflags.h#de...原创 2019-01-17 16:03:06 · 2269 阅读 · 0 评论 -
Linux 中断之中断处理浅析
1. 中断的概念中断是指在CPU正常运行期间,由于内外部事件或由程序预先安排的事件引起的 CPU 暂时停止正在运行的程序,转而为该内部或外部事件或预先安排的事件服务的程序中去,服务完毕后再返回去继续运行被暂时中断的程序。Linux中通常分为外部中断(又叫硬件中断)和内部中断(又叫异常)。软件对硬件进行配置后,软件期望等待硬件的某种状态(比如,收到了数据),这里有两种方式,一种是轮询(pol...原创 2019-01-17 14:15:09 · 21204 阅读 · 3 评论