From f7e65b5ea3ad2336d8808c90aaa76ac63d06639a Mon Sep 17 00:00:00 2001 From: weidongshan Date: Tue, 29 Jun 2021 14:26:38 +0800 Subject: [PATCH] update doc --- .../08_Interrupt/13_GIC驱动程序分析.md | 26 +++++++++++++++++-- .../08_Interrupt/13_GIC驱动程序分析.md | 26 +++++++++++++++++-- 2 files changed, 48 insertions(+), 4 deletions(-) diff --git a/IMX6ULL/doc_pic/08_Interrupt/13_GIC驱动程序分析.md b/IMX6ULL/doc_pic/08_Interrupt/13_GIC驱动程序分析.md index cefe2ff..8489565 100644 --- a/IMX6ULL/doc_pic/08_Interrupt/13_GIC驱动程序分析.md +++ b/IMX6ULL/doc_pic/08_Interrupt/13_GIC驱动程序分析.md @@ -4,6 +4,18 @@ * [linux kernel的中断子系统之(七):GIC代码分析](http://www.wowotech.net/irq_subsystem/gic_driver.html) +* Linux 4.9.88内核源码 + + * `Linux-4.9.88\drivers\irqchip\irq-gic.c` + * `Linux-4.9.88/arch/arm/boot/dts/imx6ull.dtsi` + +* Linux 5.4内核源码 + + * `Linux-5.4\drivers\irqchip\irq-gic.c` + * `Linux-5.4/arch/arm/boot/dts/stm32mp151.dtsi` + + + ### 1. 回顾GIC中断处理流程 使用逐步演进的方法才能形象地理解。 @@ -47,9 +59,19 @@ -### 2. GIC中的重要结构体 +### 2. GIC中的重要函数和结构体 -GIC的功能是什么? +沿着中断的处理流程,GIC涉及这4个重要部分: + +* CPU从异常向量表中调用handle_arch_irq,这个函数指针是有GIC驱动设置的 + * GIC才知道怎么判断发生的是哪个GIC中断 +* 从GIC获得hwirq后,要转换为virq:需要有GIC Domain +* 调用irq_desc[virq].handle_irq函数:这也应该由GIC驱动提供 +* 处理中断时,要屏蔽中断、清除中断等:这些函数保存在irq_chip里,由GIC驱动提供 + + + +从硬件上看,GIC的功能是什么? * 可以使能、屏蔽中断 * 发生中断时,可以从GIC里判断是哪个中断 diff --git a/STM32MP157/doc_pic/08_Interrupt/13_GIC驱动程序分析.md b/STM32MP157/doc_pic/08_Interrupt/13_GIC驱动程序分析.md index cefe2ff..8489565 100644 --- a/STM32MP157/doc_pic/08_Interrupt/13_GIC驱动程序分析.md +++ b/STM32MP157/doc_pic/08_Interrupt/13_GIC驱动程序分析.md @@ -4,6 +4,18 @@ * [linux kernel的中断子系统之(七):GIC代码分析](http://www.wowotech.net/irq_subsystem/gic_driver.html) +* Linux 4.9.88内核源码 + + * `Linux-4.9.88\drivers\irqchip\irq-gic.c` + * `Linux-4.9.88/arch/arm/boot/dts/imx6ull.dtsi` + +* Linux 5.4内核源码 + + * `Linux-5.4\drivers\irqchip\irq-gic.c` + * `Linux-5.4/arch/arm/boot/dts/stm32mp151.dtsi` + + + ### 1. 回顾GIC中断处理流程 使用逐步演进的方法才能形象地理解。 @@ -47,9 +59,19 @@ -### 2. GIC中的重要结构体 +### 2. GIC中的重要函数和结构体 -GIC的功能是什么? +沿着中断的处理流程,GIC涉及这4个重要部分: + +* CPU从异常向量表中调用handle_arch_irq,这个函数指针是有GIC驱动设置的 + * GIC才知道怎么判断发生的是哪个GIC中断 +* 从GIC获得hwirq后,要转换为virq:需要有GIC Domain +* 调用irq_desc[virq].handle_irq函数:这也应该由GIC驱动提供 +* 处理中断时,要屏蔽中断、清除中断等:这些函数保存在irq_chip里,由GIC驱动提供 + + + +从硬件上看,GIC的功能是什么? * 可以使能、屏蔽中断 * 发生中断时,可以从GIC里判断是哪个中断