首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux系统中断硬件框架

资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...查看中断状态、清中断 3.3.3 GIC ARM体系结构定义了通用中断控制器(GIC),该控制器包括一组用于管理单核或多核系统中的中断硬件资源。...它使软件能够屏蔽,启用和禁用来自各个中断源的中断,以(在硬件中)对各个中断源进行优先级排序和生成软件触发中断。它还提供对TrustZone安全性扩展的支持。...判断中断状态、清中断 3.4.2 GIC ARM体系结构定义了通用中断控制器(GIC),该控制器包括一组用于管理单核或多核系统中的中断硬件资源。...它使软件能够屏蔽,启用和禁用来自各个中断源的中断,以(在硬件中)对各个中断源进行优先级排序和生成软件触发中断。它还提供对TrustZone安全性扩展的支持。

4.5K40

Linux中断机制:硬件处理,初始化和中断处理

来源: CSDN | phenix_lord的专栏 硬件处理 最近解决一个关于Linux中断的问题,把相关机制整理了一遍,记录在此。...在linux中可以通过/proc/interrupts查看当前系统中所有中断的统计信息,在/proc/irq/xxx(中断)下面,可以看到该中断的详细信息。...针对X86中断控制器硬件linux对这些硬件的初始化,在《interrupt in linux》中有很详细的描述。...;完成EOI等硬件相关操作;并完成中断处理的相关控制。...4、 在外设/驱动中断处理函数层次往往也有中断使能的功能,比如启用了NAPI的网卡,在中断处理函数开始执行的时候,往往会通过硬件功能关闭该中断,要在对应的软中断完成处理后才通过硬件功能使能该中断

8K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux BSP实战课(中断篇):中断控制器的硬件实现

    这里对中断在系统中的介绍会包括硬件原理、中断驱动解析、上半部与下半部、以及softirq, tasklet, workqueue等机制。...中断控制器 GIC 硬件原理 GIC,Generic Interrupt Controller。是ARM公司提供的一个通用的中断控制器。...主要作用为: 接受硬件中断信号,并经过一定处理后,分发给对应的CPU进行处理。 当前GIC 有四个版本,GIC v1~v4, 本文主要介绍GIC v3控制器。...SPI (Shared Peripheral Interrupt):公用的外部设备中断,也定义为共享中断中断产生后,可以分发到某一个CPU上。比如按键触发一个中断,手机触摸屏触发的中断。...中断类型 硬件中断 SGI 0-15 PPI 16-31 SPI 32-1019 reserved ...... LPI 8192-MAX

    36110

    Linux 多核下绑定硬件中断到不同 CPU

    硬件设备主动打扰 CPU 的现象就可称为硬件中断。...所以中断硬件主动的方式,比轮询(CPU 主动)更有效一些。 好了,这里又有了一个问题,每个硬件设备都中断,那么如何区分不同硬件呢? 不同设备同时中断如何知道哪个中断是来自硬盘、哪个来自网卡呢?...同样的,系统上的每个硬件设备都会被分配一个 IRQ ,通过这个唯一的 IRQ 就能区别张三和李四了。...光有高级可编程中断控制器的硬件支持还不够,Linux 内核还必须能利用到这些硬件特质,所以只有 kernel 2.4 以后的版本才支持把不同的硬件中断请求(IRQs)分配到特定的 CPU 上,这个绑定技术被称为...更多介绍请参看 Linux 内核源代码自带的文档:linux-2.6.31.8/Documentation/IRQ-affinity.txt 如何使用 先看看系统上的中断是怎么分配在 CPU 上的,很显然

    5.5K83

    Linux中断 - IDT

    中断描述符项定义 当中断发生,cpu获取到中断向量后,查找IDT中断描述符表得到相应的中断描述符,再根据中断描述符记录的信息来作权限判断,运行级别转换,最终调用相应的中断处理程序; 这里涉及到Linux...idt3.jpg 硬件中断的实现 硬件中断的IDT初始化和调用流程 这里我们不讲解具体的代码细节,只关注流程 。...硬件中断相关IDT的初始化也是在Linux启动时完成,在start_kernel中通过调用init_IRQ完成,我们来看一下: void __init init_IRQ(void) { int...,然后跳转到common_interrupt执行,可以看到这个common_interrupt是硬件中断的通用处理函数,它里面最主要的就是调用do_IRQ: __visible unsigned int...VECTOR_UNUSED); } } exiting_irq(); set_irq_regs(old_regs); return 1; } 首先根据中断向量获取到对应的中断描述符

    6.6K10

    Linux中断处理

    中断处理 - 上半部(硬中断) 由于 APIC中断控制器 有点小复杂,所以本文主要通过 8259A中断控制器 来介绍Linux中断的处理过程。...handler: 类型为 hw_interrupt_type 结构,表示IRQ线对应的硬件相关处理函数,比如 8259A中断控制器 接收到一个中断信号时,需要发送一个确认信号才会继续接收中断信号的,发送确认信号的函数就是...action: 类型为 irqaction 结构,中断信号的处理入口。由于一条IRQ线可以被多个硬件共享,所以 action 是一个链表,每个 action 代表一个硬件中断处理入口。...,handler 的第一个参数是中断,第二个参数是设备对应的ID,第三个参数是中断发生时由内核保存的各个寄存器的值。...next: 每个硬件中断处理入口对应一个 irqaction 结构,由于多个硬件可以共享同一条IRQ线,所以这里通过 next 字段来连接不同的硬件中断处理入口。

    6.6K20

    Linux 中断处理浅析

    最近在研究异步消息处理, 突然想起linux内核的中断处理, 里面由始至终都贯穿着”重要的事马上做, 不重要的事推后做”的异步处理思想....于是整理一下~ 第一阶段 获取中断 每个CPU都有响应中断的能力, 每个CPU响应中断时都走相同的流程. 这个流程就是内核提供的中断服务程序....将中断压入栈中; (不同中断中断对应不同的中断服务程序入口) 2....(另外, 这里如果开中断, 正在处理的这个中断一般也是会被阻塞的. 因为正在处理某个中断的时候, 硬件中断控制器上的这个中断并未被ack, 硬件不会发起下一次相同的中断.)...在软中断机制中, 为每个CPU维护了一个若干位的掩码集, 每位掩码代表一个中断.

    7.4K80

    Linux内核硬中断中断的原理和实现

    linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。...(3)中断嵌套 Linux下硬中断是可以嵌套的,但是没有优先级的概念,也就是说任何一个新的中断都可以打断正在执行的中断,但同种中断除外。软中断不能嵌套,但相同类型的软中断可以在不同CPU上并行执行。...(5)硬中断和软中断的区别 软中断是执行中断指令产生的,而硬中断是由外设引发的。 硬中断中断是由中断控制器提供的,软中断中断由指令直接指出,无需使用中断控制器。...= TASK_RUNNING) wake_up_process(tsk); } 在下列地方,待处理的软中断会被检查和执行: a. 从一个硬件中断代码处返回时 b....中断处理程序执行硬件设备的相关操作,然后触发相应的软中断,最后退出。内核在执行完中断处理程序以后,马上就会调用do_softirq(),于是软中断开始执行中断处理程序完成剩余的任务。

    22.4K21

    Linux内核17-硬件如何处理中断和异常

    在上一篇文章中,我们已经了解了中断和异常的一些概念,对于中断和异常也有了大概的理解。那么,系统中硬件到底是如何处理中断和异常的呢?本文我们就以常见的X86架构为例,看看中断和异常的硬件工作原理。...当一个CPU想给另一个CPU发送中断时,它就会把目标CPU的私有APIC的标识符和中断存储到自己APIC的中断命令寄存器(ICR)中。...然后通过APIC总线发送给目标APIC,该APIC就会给自己的CPU发送一个相应的中断。 CPU间的中断(简称IPI)是多核系统一个重要组成部分。Linux有效地利用它们,在CPU之间传递消息。...对于某些异常,CPU控制单元也会产生硬件错误码,并将其压入内核态栈,然后再启动异常处理函数。 下表是异常列表,列出了异常,名称,类型等等。更多信息请参考Intel技术手册。...其实对于Linux来说,只使用了supervisor和user两种特权等级。所以中断应该都是在supervisor特权等级下运行。

    2.1K10

    Linux 中断子系统(二):GIC 中断控制器

    比如按键中断、串口中断等等,这些中断所有的 Core 都可以处理,不限定特定 Core。...分发器收集所有的中断源,可以控制每个中断的优先级,它总是将优先级最高的中断事件发送到 CPU 接口端。分发器端要做的主要 工作如下: ①、全局中断使能控制。 ②、控制每一个中断的使能或者关闭。...GIC-v3 GIC-v3 架构有改变,中断也变多了,不过还是向后兼容 GIC-v2 的。...寄存器分布,不同东西的寄存器开头不一样: GIC-v 3的中断规定如下,来源于ARM官方文档。 最主要的区别就是增加了 LPI 这个中断类型,是基于消息的中断。...LPI 不一样,它是基于消息的机制,写寄存器就会发一个消息中断,是 ARM 在为未来布局,以后会出一些 server 的产品,独享中断

    6K20

    linux内核缺页中断处理

    缺页中断处理一般流程: 1.硬件陷入内核,在堆栈中保存程序计数器,大多数当前指令的各种状态信息保存在特殊的cpu寄存器中。 2.启动一个汇编例程保存通用寄存器和其他易丢失信息,以免被操作系统破坏。...3.当操作系统发现缺页中断时,尝试发现需要哪个虚拟页面。通常一个硬件寄存器包含了这些信息,如果没有的话操作系统必须检索程序计数器,取出当前指令,分析当前指令正在做什么。...9.调度引发缺页中断的进程,操作系统返回调用他的汇编例程 10.该例程恢复寄存器和其他状态信息,返回到用户空间继续执行,就好像缺页中断没有发生过。...linux内核对缺页异常的处理流程很复杂,但是基本思想和上述流程差不多。...下面看linux的基本处理流程: 内核处理缺页异常的主函数就是do_page_fault: /* * 缺页异常处理函数 * pt_regs 各个寄存器的值 * error_code,由硬件产生:

    10.8K22

    Linux中断虚拟化(一)

    著有畅销书《深度探索Linux操作系统》(2013年出版)。 谢广军 计算机专业博士,毕业于南开大学计算机系。资深技术专家,多年的IT行业工作经验。...本文内容节选自《深度探索Linux虚拟化技术》,已获得机械工业出版社华章公司授权。...因此,在本章中,我们简单介绍硬件中断的基本原理,然后结合中断的基本原理讨论如何虚拟化中断芯片。...最后,我们讨论了为了提高效率,Intel是如何从硬件层面对虚拟化中断进行支持的,以及KVM是如何使用他们的。...图4 硬件虚拟化支持下的中断虚拟化过程 Intel从硬件层面对虚拟化进行了支持,实现了一个处于Guest模式的用于存储中断相关寄存器的virtual-APIC page。

    6.4K30

    Linux中断机制分析

    中断分析最近工作繁忙,没有时间总结内核相关的一些东西。上次更新博客到了linux内核中断子系统。这次总结一下软中断,也就是softirq。之后还会总结一些tasklet、工作队列机制。...这样的后果会造成有可能丢失外部中断。于是,linux内核设计出了一种架构,中断函数需要处理的任务分为两部分,一部分在中断处理函数中执行,这时系统关闭中断。...只有在进入了软中断处理过程中之后才会开启硬件中断,如果在软件中断处理过程中有硬件中断嵌套,也不会再次调用软中断,because硬件中断是软件中断处理过程中再次进入的,此时preempt_count已经记录了软件中断...对于其它架构的CPU,有可能在触发调用软件中断前,也就是还在处理硬件中断的时候,就已经开启了硬件中断,可能会发生中断嵌套,在中断嵌套中是不允许调用软件中断处理的。Why?...Linux内核就中断方面就必须考虑平衡这三个方面的问题。而下面我要分析的__do_softirq函数就恰似在这三者之间打太极,游刃有余,面面俱到!

    8.7K91

    linux 中断机制《Rice linux 学习笔记》

    这篇文章以按键为例子讲解linux中断原理,中断的架构,中断的实现。 在我们的开发中,检测按键是否触发,无非就两种方法—轮询和中断。作者认为两种方法最大的区别就是CPU的利用率。...Linux中断原理: 中断:处理器异常的一种,它是一种特殊的电信号,用硬件发给处理器,处理器接收到中断后,会马上向操作系统反映此信号的到来,然后就由操作系统负责处理这些新到来的数据。...,CPU为每一个外设的中断编号,是一个虚拟的interrupt ID,与硬件无关,给CPU用来标识一个外设中断。...Linux中断实现: 这里例子采用等待队列的方式实现(也就是上述的第二种方法)。...其中:IRQ_EINT0:按键对应引脚的中断。与加载的中断一致。

    4.8K10

    Linux内核笔记之中断映射

    中断和虚拟中断Linux 内核笔记之高层中断处理一文中,介绍了ARM gic中断控制器对于硬中断的处理过程。...gic的中断处理程序是从ack一个硬件中断开始的, 在gic的中断处理过程中,会根据中断的映射去寻找对应的虚拟中断, 再去进行后续的中断处理。...对于软件工程师而言,我们不需要care是中断哪个中断控制器的第几个中断, 因此linux kernel提供了一个虚拟中断的概念。...irq_domain 接下来讨论硬件中断是如何映射到虚拟中断linux kernel提供irq_domain的管理框架, 将hwirq映射到虚拟中断上。...映射硬件中断到虚拟中断 +-> irq_domain_alloc_descs // 分配一个虚拟中断 从allocated_irq位图中取第一个空闲的bit位作为虚拟中断 +->

    5.1K30

    Linux中断下半部实现机制

    中断上、下半部产生背景 由于内核中中断不允许嵌套,在程序进入中断后,系统会关闭中断接收,这段时间内,其他中断都无法处理导致中断无法响应,因此需要当前进入的中断子服务函数越快越好。...tasklet是以软中断形式实现的,软中断的优先级仅次于硬件中断,在进入软件中断时,硬件中断会被打开,因此软件中断可被硬件中断打断。 使用: 软中断实现服务子函数,优先级高,影响系统执行效率。 a....在硬件中断服务函数,调度: tasklet_schedule(&kpd_keymap_tasklet); d....在硬件中断调度 schedule_work(&my_work); //工作完成后会自动销毁 注意: 也可以自定义工作队列,实现任务调度,这里不作介绍。...在程序中调用request_threaded_irq 原型: /* irq: 中断 * handler: 中断服务子函数 * thread_fn: 中断线程化 * irqflags: 中断触发标志位

    3.2K10
    领券