GIC驱动的执行流程是什么

驱动流程分析gic驱动的执行流程如下图所示:
首先需要了解一下链接脚本vmlinux.lds,脚本中定义了一个__irqchip_of_table段,该段用于存放中断控制器信息,用于最终来匹配设备;在gic驱动程序中,使用irqchip_declare宏来声明结构信息,包括compatible字段和回调函数,该宏会将这个结构放置到__irqchip_of_table字段中;在内核启动初始化中断的函数中,of_irq_init函数会去查找设备节点信息,该函数的传入参数就是__irqchip_of_table段,由于irqchip_declare已经将信息填充好了,of_irq_init函数会根据arm,gic-400去查找对应的设备节点,并获取设备的信息。中断控制器也存在级联的情况,of_irq_init函数中也处理了这种情况;or_irq_init函数中,最终会回调irqchip_declare声明的回调函数,也就是gic_of_init,而这个函数就是gic驱动的初始化入口函数了;gic的工作,本质上是由中断信号来驱动,因此驱动本身的工作就是完成各类信息的初始化,注册好相应的回调函数,以便能在信号到来之时去执行;set_smp_process_call设置__smp_cross_call函数指向gic_raise_softirq,本质上就是通过软件来触发gic的sgi中断,用于核间交互;cpuhp_setup_state_nocalls函数,设置好cpu进行热插拔时gic的回调函数,以便在cpu热插拔时做相应处理;set_handle_irq函数的设置很关键,它将全局函数指针handle_arch_irq指向了gic_handle_irq,而处理器在进入中断异常时,会跳转到handle_arch_irq执行,所以,可以认为它就是中断处理的入口函数了;驱动中完成了各类函数的注册,此外还完成了irq_chip, irq_domain等结构体的初始化,这些结构在下文会进一步分析;最后,完成gic硬件模块的初始化设置,以及电源管理相关的注册等工作;

体感试衣镜为你打造一个快速、真实、互动的试衣体验
求一种压控振荡器的设计与仿真方案
最畅销科技产品排行榜:iPhone 4S居首
JAC-AP全自动泊车介绍
连拓精密气密性检测仪检测泄漏量时影响测试结果有哪些因素?
GIC驱动的执行流程是什么
锂电池燃烧有毒吗
意法•爱立信开拓性PM3533集成解决方案
印度正在采用比特币来推动其经济的发展
中国移动将继续抢抓全媒体时代的发展机遇以5G+为产业赋能
华为尧权:助力运营商从能源消费者到能源消费者、生产者和使能者
机智云开发者中心迁移变化
英飞凌热泵的结构以及谐波电流解决方案
基于芯海科技CS32F036Q的车身域控制器应用案例
三星屏下指纹识别技术专利曝光
京东方向苹果供应iPhone 12 OLED屏幕面板
详解在Nios Startkit上运行uCLinux的实验
CD4069 COMS定时提醒电路
基于亚马逊自研的 Arm 处理器 Graviton2
设计完美的PCB细节,元器件布局的10条规则