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,最终也就能调用到外设的中断处理函数了;
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4983

    文章

    18286

    浏览量

    288498
  • Linux
    +关注

    关注

    87

    文章

    10990

    浏览量

    206738
  • 子系统
    +关注

    关注

    0

    文章

    100

    浏览量

    12265
  • 代码
    +关注

    关注

    30

    文章

    4556

    浏览量

    66784
收藏 人收藏

    评论

    相关推荐

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

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

    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>教程详解

    基于Linux中断机制以及tasklet、工作队列机制分析

    中断分析最近工作繁忙,没有时间总结内核相关的一些东西。上次更新博客到了linux内核中断子系统。这次总结一下软
    的头像 发表于 01-15 12:55 3669次阅读
    基于<b class='flag-5'>Linux</b> 软<b class='flag-5'>中断</b>机制以及tasklet、工作队列机制<b class='flag-5'>分析</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 1349次阅读

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

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

    Manjaro和Arch Linux有什么区别

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

    全面解读Linux 中断子系统的驱动

    GIC 驱动 这里主要分析 linux kernel 中 GIC v3 中断控制器的代码(drivers/irqchip/irq-gic-v3.c)。 设备树 先来看下一个
    的头像 发表于 09-23 09:25 2766次阅读
    全面解读<b class='flag-5'>Linux</b> <b class='flag-5'>中断</b><b class='flag-5'>子系统</b>的驱动

    Arch Linux 系统迁移的详细介绍

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

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

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

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

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

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

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

    Linux Led子系统代码框架分析

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