驅(qū)動(dòng)流程分析
GIC驅(qū)動(dòng)的執(zhí)行流程如下圖所示:
- 首先需要了解一下鏈接腳本
vmlinux.lds
,腳本中定義了一個(gè)__irqchip_of_table
段,該段用于存放中斷控制器信息,用于最終來(lái)匹配設(shè)備; - 在GIC驅(qū)動(dòng)程序中,使用
IRQCHIP_DECLARE
宏來(lái)聲明結(jié)構(gòu)信息,包括compatible
字段和回調(diào)函數(shù),該宏會(huì)將這個(gè)結(jié)構(gòu)放置到__irqchip_of_table
字段中; - 在內(nèi)核啟動(dòng)初始化中斷的函數(shù)中,
of_irq_init
函數(shù)會(huì)去查找設(shè)備節(jié)點(diǎn)信息,該函數(shù)的傳入參數(shù)就是__irqchip_of_table
段,由于IRQCHIP_DECLARE
已經(jīng)將信息填充好了,of_irq_init
函數(shù)會(huì)根據(jù)arm,gic-400
去查找對(duì)應(yīng)的設(shè)備節(jié)點(diǎn),并獲取設(shè)備的信息。中斷控制器也存在級(jí)聯(lián)的情況,of_irq_init
函數(shù)中也處理了這種情況; or_irq_init
函數(shù)中,最終會(huì)回調(diào)IRQCHIP_DECLARE
聲明的回調(diào)函數(shù),也就是gic_of_init
,而這個(gè)函數(shù)就是GIC驅(qū)動(dòng)的初始化入口函數(shù)了;- GIC的工作,本質(zhì)上是由中斷信號(hào)來(lái)驅(qū)動(dòng),因此驅(qū)動(dòng)本身的工作就是完成各類信息的初始化,注冊(cè)好相應(yīng)的回調(diào)函數(shù),以便能在信號(hào)到來(lái)之時(shí)去執(zhí)行;
set_smp_process_call
設(shè)置__smp_cross_call
函數(shù)指向gic_raise_softirq
,本質(zhì)上就是通過(guò)軟件來(lái)觸發(fā)GIC的SGI中斷
,用于核間交互;cpuhp_setup_state_nocalls
函數(shù),設(shè)置好CPU進(jìn)行熱插拔時(shí)GIC的回調(diào)函數(shù),以便在CPU熱插拔時(shí)做相應(yīng)處理;set_handle_irq
函數(shù)的設(shè)置很關(guān)鍵,它將全局函數(shù)指針handle_arch_irq
指向了gic_handle_irq
,而處理器在進(jìn)入中斷異常時(shí),會(huì)跳轉(zhuǎn)到handle_arch_irq
執(zhí)行,所以,可以認(rèn)為它就是中斷處理的入口函數(shù)了;- 驅(qū)動(dòng)中完成了各類函數(shù)的注冊(cè),此外還完成了
irq_chip
,irq_domain
等結(jié)構(gòu)體的初始化,這些結(jié)構(gòu)在下文會(huì)進(jìn)一步分析; - 最后,完成GIC硬件模塊的初始化設(shè)置,以及電源管理相關(guān)的注冊(cè)等工作;
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
嵌入式
+關(guān)注
關(guān)注
5082文章
19111瀏覽量
304847 -
驅(qū)動(dòng)
+關(guān)注
關(guān)注
12文章
1839瀏覽量
85263 -
Linux
+關(guān)注
關(guān)注
87文章
11296瀏覽量
209353 -
gic
+關(guān)注
關(guān)注
0文章
14瀏覽量
6270
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
ARM之中斷GIC分析
1.“站的高尿的遠(yuǎn)” GIC為中斷控制器,不要和ARM core的中斷搞混了,這些中斷都是連接到ARM core的IRQ或者FIQ上的。 要了解arm中斷系統(tǒng),GIC絕對(duì)不容錯(cuò)過(guò),好先付
發(fā)表于 11-26 13:50
ARM GIC(二)之中斷術(shù)語(yǔ)的定義
ARM在GIC中,對(duì)于中斷,定義了如下的一些術(shù)語(yǔ)。一、中斷狀態(tài)對(duì)于每一個(gè)中斷而言,有以下4個(gè)狀態(tài):?inactive:中斷處于無(wú)效狀態(tài)?pending:中斷處于有效狀態(tài),但是cpu沒(méi)有響應(yīng)該中斷
發(fā)表于 04-06 10:15
ARM GIC電源管理使用手冊(cè)指南
與gic中的redistributor進(jìn)行connect,這樣將來(lái)gic才可以將中斷發(fā)送給core。connection的流程如下所示:GICR_WAKER寄存器上電流程,行為描述
發(fā)表于 05-27 16:41
一文解析ARM GIC中斷線映射與GICD寄存器配置
activate到deactivation均為中斷處理函數(shù)工作內(nèi)容。上幾篇博文已經(jīng)詳細(xì)介紹了GIC 架構(gòu)基礎(chǔ),稍微有些抽象。接下來(lái)嘗試從源碼和寄存器手冊(cè)分解TF-A GIC V3驅(qū)動(dòng)源碼,進(jìn)一步理解arm
發(fā)表于 05-27 17:24
基于GIC的物聯(lián)網(wǎng)的應(yīng)用方案
本文檔內(nèi)容介紹了基于GIC的物聯(lián)網(wǎng)的應(yīng)用方案,供參閱。
發(fā)表于 09-18 15:46
?0次下載
mfc程序執(zhí)行流程小結(jié),MFC程序的執(zhí)行順序
摘要:本文章主要以MFC程序的執(zhí)行流程、執(zhí)行順序等執(zhí)行過(guò)程的剖析做出的結(jié)論,下面一起來(lái)看看原文的具體介紹。
發(fā)表于 12-08 15:48
?9543次閱讀
小電阻器對(duì)治理電網(wǎng)GIC的效果分析
地磁感應(yīng)電流(geomagnetically induced currents,GIC)引起變壓器半波飽和對(duì)電力系統(tǒng)的安全運(yùn)行產(chǎn)生不利影響,甚至引發(fā)大面積停電事故。為了有效治理GIC對(duì)大規(guī)模電力系統(tǒng)
發(fā)表于 01-04 17:03
?7次下載
GIC是什么意思 GIC硬件原理
GIC硬件原理 ARM公司提供了一個(gè)通用的中斷控制器 GIC(Generic Interrupt Controller) , GIC 的版本包括 V1 ~ V4 ,由于本人使用的SoC中的中斷控制器
GIC驅(qū)動(dòng)設(shè)備信息添加
字段:用于與具體的驅(qū)動(dòng)來(lái)進(jìn)行匹配,比如圖片中arm, gic-400,可以根據(jù)這個(gè)名字去匹配對(duì)應(yīng)的驅(qū)動(dòng)程序; interrupt-cells字段:用于指定編碼一個(gè)中斷源所需要的單元個(gè)數(shù),這個(gè)值為3
Linux GIC驅(qū)動(dòng)數(shù)據(jù)結(jié)構(gòu)分析
數(shù)據(jù)結(jié)構(gòu)分析 先來(lái)張圖: GIC驅(qū)動(dòng)中,使用 struct gic_chip_data 結(jié)構(gòu)體來(lái)描述GIC控制器的信息,整個(gè)驅(qū)動(dòng)都是圍繞著該
GIC-600的組件是如何連接的
為了適應(yīng)大規(guī)模的SoC設(shè)計(jì),GIC-600被設(shè)計(jì)成分布式IP。 所謂分布式,GIC-600由幾種組件構(gòu)成,每個(gè)組件可以跟其它相關(guān)模塊在物理設(shè)計(jì)上擺放在一起,并與其擁有共同的電源域;組件之間通過(guò)片上網(wǎng)
GIC-600的內(nèi)部結(jié)構(gòu)組件
接下來(lái)看看每個(gè)組件。 ? 首先是distributor,一個(gè)SoC只有一個(gè)。 ?它的組件只能與distributor通信。所以,可以看出,distributor是GIC-600中的核心,其作用是收集
gic和ARM Core的連接
? ?nVIRQ: 虛擬普通中斷 ? ?nVFIQ: 虛擬快速中斷 (2)gicv3和ARM Core的連接 gicv3 AXI-stream協(xié)議 ? ?gic stream協(xié)議,是基于AXI-stream協(xié)議
bootm命令的執(zhí)行流程
Bootm命令用來(lái)從memory啟動(dòng)內(nèi)核,bootm命令的執(zhí)行流程如下圖所示。 在串口終端輸入bootm命令后,執(zhí)行do_bootm函數(shù)來(lái)完成相應(yīng)的功能。Do_bootm函數(shù)首先
評(píng)論