设备驱动-arm64中断-相关

中断硬件相关

arm64 中断分类 sync exception; irq ; fiq ; serror;

arm64 中断处理相关寄存器: SP_EL0,SP_EL1,SPSR_EL1,ELR_EL1,ESR_EL1,VBAR_EL1

硬件处理过程:
a:保存PSTATE到SPSR_EL1;
b:PSTATE中 DAIF 置位;
c:返回地址保存到ELR_EL1;
d:异常原因保存ESR_EL1;
e:异常处理地址到PC;
f:使用SP_EL1;


arm64 中断向量表格式及内容

 

参考这篇文章:

https://blog.csdn.net/jasonactions/article/details/115689462  

 

 

gic_handle_irq 后的高层处理和 softirq 

   GICC_IAR 中获取 hw_irqnr  - 读取GICC_IAR寄存器就是对中断的ACK,会让中断从pending状态进入到active状态 

   irq_enter 

   map hw_irqnr to  irq 

   generic_irq_handle(irq )

           irq_desc *desc = irq to desc

           generic_handle_irq_desc(desc ) ; 

           desc->handle_irq

              handle_irq_event

                     for each action of desc

                              res = action->handler( irq,  action->dev_id ) ; 

   iqr_exit 

            if local softirq pending 

                    invoke  softirq

 

参考这篇文章:

https://blog.csdn.net/jasonactions/article/details/115751815

 

 

注册中断 

request_irq( irq,  handler, flags, char* name, void *dev)

 

参考这篇文章: 

https://blog.csdn.net/jasonactions/article/details/115657310

 

 

中断注册需要的 irq 从dts 中解析出来

上面 注册中断 需要 irq 号,但是 这个 irq 号 从 哪儿来呢 ?

 

参考 这篇文章 -  irq_of_parse_and_map

https://www.freesion.com/article/88611328271/ 

 

posted @   张志伟122  阅读(169)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示