0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux中断子系统硬件架构

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:Jasonangel 2023-09-28 14:09 次阅读

中断子系统硬件架构

一个完整的设备中,与中断相关的硬件可以划分为3类,它们分别是:设备、中断控制器CPU本身。

图片

设备:设备是发起中断的源,当设备需要请求某种服务的时候,它会发起一个硬件中断信号,通常,该信号会连接至中断控制器,由中断控制器做进一步的处理。在现代的移动设备中,发起中断的设备可以位于soc(system-on-chip)芯片的外部,也可以位于芯片的内部,因为目前大多数soc 都集成了大量的硬件 IP,例如 I2C、SPI、Display Controller 等等,就是内部中断源。

中断控制器:中断控制器负责收集所有中断源发起的中断,现有的中断控制器几乎都是可编程的,通过对中断控制器的编程,我们可以控制每个中断源的优先级、中断的电气类型,还可以打开和关闭某一个中断源,在smp系统中,甚至可以控制某个中断源发往哪一个CPU 进行处理。对于 ARM 架构的 soc,使用较多的中断控制器是VIC(Vector Interrupt Controller),进入多核时代以后,GIC(General Interrupt Controller)的应用也开始逐渐变多。STM32单片机的中断控制器叫 NVIC,ARM架构的中断控制器一般为GIC,不同架构有不同的中断控制器。

CPU:最终响应中断的部件,它通过对可编程中断控制器的编程操作,控制和管理者系统中的每个中断,当中断控制器最终判定一个中断可以被处理时,他会根据事先的设定,通知其中一个或者是某几个
cpu 对该中断进行处理,虽然中断控制器可以同时通知数个 cpu 对某一个中断进行处理,实际上,最后只会有一个 cpu 相应这个中断请求,但具体是哪个 cpu进行响应是可能是随机的,中断控制器在硬件上对这一特性进行了保证,不过这也依赖于操作系统对中断系统的软件实现。

为什么需要中断控制器?

CPU 要做的事情主要是运算。一个 CPU 有很多个中断可以使用,他们之间也有优先级。由于中断过多,我们需要中断进入 CPU处理之前,先进入中断控制器,让中断控制器来控制中断的优先级、触发方式、enable 和 disable等,为CPU减轻负担,让CPU专注于运算。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10991

    浏览量

    206736
  • 硬件
    +关注

    关注

    11

    文章

    2922

    浏览量

    64781
  • 子系统
    +关注

    关注

    0

    文章

    100

    浏览量

    12264
  • 系统
    +关注

    关注

    1

    文章

    981

    浏览量

    21036
收藏 人收藏

    评论

    相关推荐

    Linux LED子系统详解

    Linux LED子系统详解
    的头像 发表于 06-10 10:37 987次阅读
    <b class='flag-5'>Linux</b> LED<b class='flag-5'>子系统</b>详解

    linux I2C子系统的相关资料分享

    了 I2C协议相关内容,这里记录一下I2C在linux系统上I2C子系统框架,经过总结,I2C子系统框架可以总结为如下一张图五层(其实是三层,不算应用层和
    发表于 02-10 06:06

    Arm Linux中断子系统先相关资料分享

    1. Arm Linux 中断子系统1.1. 中断硬件系统3个组成部分:外设(
    发表于 05-23 15:21

    基于Linux内核输入子系统的驱动研究

    Linux因其完全开放的特性和稳定优良的性能深受欢迎,当推出了内核输入子系统后,更方便了嵌入式领域的驱动开放。介绍了Linux的设备驱动基础,详细阐述了基于Linux内核输入
    发表于 09-12 16:38 23次下载

    Linux内核输入子系统的驱动研究

    Linux内核输入子系统的驱动研究
    发表于 10-31 14:41 14次下载
    <b class='flag-5'>Linux</b>内核输入<b class='flag-5'>子系统</b>的驱动研究

    需要了解的Linux的IRQ中断子系统

    Linux中断子系统(generic irq)出现之前,内核使用__do_IRQ处理所有的中断,这意味着__do_IRQ中要处理各种类型的中断
    发表于 05-10 10:56 1349次阅读

    Linux中断(interrupt)子系统之一:中断系统基本原理

    设备 设备是发起中断的源,当设备需要请求某种服务的时候,它会发起一个硬件中断信号,通常,该信号会连接至中断控制器,由中断控制器做进一步的处
    发表于 05-13 10:42 597次阅读

    Linux中断(interrupt)子系统之一:arch相关的硬件封装层

    Linux的通用中断子系统的一个设计原则就是把底层的硬件实现尽可能地隐藏起来,使得驱动程序的开发人员不用关注底层的实现,要实现这个目标,内核的开发者们必须把
    发表于 05-13 10:48 712次阅读

    Linux中断(interrupt)子系统之一:中断流控处理层

    通用中断子系统把几种常用的流控类型进行了抽象,并为它们实现了相应的标准函数,我们只要选择相应的函数,赋值给irq所对应的irq_desc结构的handle_irq字段中即可。
    发表于 05-15 11:30 572次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>中断</b>(interrupt)<b class='flag-5'>子系统</b>之一:<b class='flag-5'>中断</b>流控处理层

    linux I2C子系统(及相关程序设计MPU6050)

    了 I2C协议相关内容,这里记录一下I2C在linux系统上I2C子系统框架,经过总结,I2C子系统框架可以总结为如下一张图五层(其实是三层,不算应用层和
    发表于 12-06 13:36 9次下载
    <b class='flag-5'>linux</b> I2C<b class='flag-5'>子系统</b>(及相关程序设计MPU6050)

    openEuler Kernel技术内核中断子系统介绍

    现在把之前的流程具有的部分对比内核中断子系统,可以发现还多出了一个通用中断处理层。因为内核需要支持各种不同的架构与外设,需要解耦架构
    的头像 发表于 04-20 09:06 1288次阅读

    Windows 子系统助力 Linux 2.0

    Windows 子系统助力 Linux 2.0
    的头像 发表于 01-04 11:17 413次阅读

    Linux系统中NFC子系统架构分析

    目前在Linux系统中,每个厂家都使用不同的方式实现NFC驱动,然后自己在应用层上面做适配。但是Linux也已经推出NFC子系统,很多厂家也逐步在统一。
    发表于 01-04 14:01 1395次阅读

    Linux中断情景分析

    在一个系统中,中断时常发生,而且线程调度也是由一个硬件定时器时时刻刻发出中断来支撑的。可以说中断就是li
    发表于 06-23 14:22 361次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>中断</b>情景分析

    Linux clock子系统是什么

    clock子系统 Linux的时钟子系统由CCF(common clock framework)框架管理, CCF向上给用户提供了通用的时钟接口,向下给驱动开发者提供硬件操作的接口 。
    的头像 发表于 09-27 14:25 380次阅读
    <b class='flag-5'>Linux</b> clock<b class='flag-5'>子系统</b>是什么