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

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

3天内不再提示

Linux中断子系统Arch-speicific代码分析

麦辣鸡腿堡 来源:LoyenWang 作者:LoyenWang 2023-09-28 15:27 次阅读

Arch-speicific代码分析

  • 中断也是异常模式的一种,当外设触发中断时,处理器会切换到特定的异常模式进行处理,而这部分代码都是架构相关的;ARM64的代码位于arch/arm64/kernel/entry.S
  • ARM64处理器有四个异常级别Exception Level:0~3,EL0级对应用户态程序,EL1级对应操作系统内核态,EL2级对应Hypervisor,EL3级对应Secure Monitor;
  • 异常触发时,处理器进行切换,并且跳转到异常向量表开始执行,针对中断异常,最终会跳转到irq_handler中;

代码比较简单,如下:

/*
 * Interrupt handling.
 */
	.macro	irq_handler
	ldr_l	x1, handle_arch_irq
	mov	x0, sp
	irq_stack_entry
	blr	x1
	irq_stack_exit
	.endm

来张图:

图片

  • 中断触发,处理器去异常向量表找到对应的入口,比如EL0的中断跳转到el0_irq处,EL1则跳转到el1_irq处;
  • 在GIC驱动中,会调用set_handle_irq接口来设置handle_arch_irq的函数指针,让它指向gic_handle_irq,因此中断触发的时候会跳转到gic_handle_irq处执行;
  • gic_handle_irq函数处理时,分为两种情况,一种是外设触发的中断,硬件中断号在16 ~ 1020之间,一种是软件触发的中断,用于处理器之间的交互,硬件中断号在16以内;
  • 外设触发中断后,根据irq domain去查找对应的Linux IRQ中断号,进而得到中断描述符irq_desc,最终也就能调用到外设的中断处理函数了;
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5068

    文章

    19019

    浏览量

    303299
  • Linux
    +关注

    关注

    87

    文章

    11229

    浏览量

    208927
  • 子系统
    +关注

    关注

    0

    文章

    109

    浏览量

    12385
  • 代码
    +关注

    关注

    30

    文章

    4748

    浏览量

    68356
收藏 人收藏

    评论

    相关推荐

    如何在Arch Linux系统中安装Cutefish桌面环境

    现在你可以在 Arch Linux 中体验 Cutefish 桌面了。本文概述了在 Arch Linux 系统中安装 Cutefish 桌面
    的头像 发表于 04-19 17:05 6119次阅读

    Linux LED子系统详解

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

    Linux时间子系统之ARM generic timer驱动代码分析

    郭健 Linux时间子系统之ARM generic timer驱动代码分析
    发表于 07-17 09:30

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

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

    Arch Linux教程详解

    最近在评论区看到很多人对Linux开始感到兴趣,身为一个精通各种系统开关机,各种发行版安装与卸载的老司机,我觉得我有必要站出来为大家安利一下Arch Linux了。
    发表于 09-21 16:15 0次下载
    <b class='flag-5'>Arch</b> <b class='flag-5'>Linux</b>教程详解

    Arch Linux 有何优缺点?

    Arch Linux 于 2002 年发布,由 Aaron Grifin 领头,是当下最热门的 Linux 发行版之一。从设计上说,Arch Lin
    的头像 发表于 08-05 08:52 1.2w次阅读

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

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

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

    Linux的通用中断子系统的一个设计原则就是把底层的硬件实现尽可能地隐藏起来,使得驱动程序的开发人员不用关注底层的实现,要实现这个目标,内核的开发者们必须把硬件相关的内容剥离出来,然后定义一些列标准的接口供上层访问,上层的开发人
    发表于 05-13 10:48 830次阅读

    Manjaro和Arch Linux有什么区别

    Manjaro 还是 Arch Linux?如果说 Manjaro 是基于 Arch 的,那么它和 Arch 又有什么不同呢?请在这篇比较文章中阅读
    的头像 发表于 09-08 14:15 3151次阅读

    更容易设置和使用的基于ArchLinux发行版

    事实上,只是最开始的步骤,安装 Arch Linux 就足以把很多人吓跑。与大多数其他发行版不同,Arch Linux 没有一个易于使用的图形安装程序。安装过程中涉及到的磁盘分区,连接
    的头像 发表于 03-03 14:58 2356次阅读

    Arch Linux 系统迁移的详细介绍

    镜像下载、域名解析、时间同步请点击 阿里巴巴开源镜像站 备份 Arch Linux 系统 安装 pigz 使用 pigz 多线程压缩比使用 tar 单线程压缩速度明显提升多倍 sudo pacman
    发表于 12-16 11:15 892次阅读

    从软件角度分析linux内核USB子系统的热插拔过程

    本文从软件角度分析linux内核USB子系统的热插拔过程,以实际分析思路和过程行文,基于linux内核版本:4.19.4,记录
    的头像 发表于 01-15 09:28 5418次阅读

    龙架构Arch Linux发行版正式发布

    近日,龙架构Arch Linux发行版官方网站宣布结束beta状态,正式支持龙架构。Arch Linux是一种轻量级、可定制、灵活的Linux
    的头像 发表于 07-18 11:16 900次阅读

    Linux Led子系统代码框架分析

    代码框架分析 led-class.c (led 子系统框架的入口) 维护 LED 子系统的所有 LED 设备,为 LED 设备提供注册操作函数: led_classdev_regist
    的头像 发表于 07-20 10:36 728次阅读

    Linux中断子系统硬件架构

    中断子系统硬件架构 一个完整的设备中,与中断相关的硬件可以划分为3类,它们分别是:设备、中断控制器和CPU本身。 设备:设备是发起中断的源,
    的头像 发表于 09-28 14:09 491次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>中断</b><b class='flag-5'>子系统</b>硬件架构