一、gicv2與gicv3
但是在gicv3之前一直都是使用的giv2,這兩者有什么區(qū)別?
最近在做實(shí)驗(yàn)室的版本兼容,很我一直以為這個(gè)gicv2和gicv3版本更新的年代不是很久。最后看了一下gicv2的文章發(fā)現(xiàn)在2016年都有了,為什么現(xiàn)在還有g(shù)icv2,吐槽一下。不過(guò)活還是得干,之前做過(guò)關(guān)于gicv3的東西,但是現(xiàn)在還得整個(gè)gicv2,在基于這個(gè)gicv3上進(jìn)行修改,那么必須對(duì)比一下這兩個(gè)之間的差別。
循序漸進(jìn),先整概念,再看源碼。
二、概念
1、gic概念
gic : general interrupt controller
分類(lèi)
GIC中斷控制器的分類(lèi):gicv1(已棄用),gicv2,gicv3,gicv4
? ?gic400,支持gicv2架構(gòu)版本。
? ?gic500,支持gicv3架構(gòu)版本。
? ?gic600,支持gicv3架構(gòu)版本
核心功能
gic的核心功能,就是對(duì)soc中外設(shè)的中斷源的管理,并且提供給軟件,配置以及控制這些中斷源。
? ?當(dāng)對(duì)應(yīng)的中斷源有效時(shí),gic根據(jù)該中斷源的配置,決定是否將該中斷信號(hào),發(fā)送給CPU。如果有多個(gè)中斷源有效,那么gic還會(huì)進(jìn)行仲裁,選擇最高優(yōu)先級(jí)中斷,發(fā)送給CPU。
? ?當(dāng)CPU接受到gic發(fā)送的中斷,通過(guò)讀取gic的寄存器,就可以知道,中斷的來(lái)源來(lái)自于哪里,從而可以做相應(yīng)的處理。
? ?當(dāng)CPU處理完中斷之后,會(huì)告訴gic,其實(shí)就是訪問(wèn)gic的寄存器,該中斷處理完畢。gic接受到該信息后,就將該中斷源取消,避免又重新發(fā)送該中斷給cpu以及允許中斷搶占
gicv3較gicv2的特點(diǎn)
GICv3架構(gòu)是GICv2架構(gòu)的升級(jí)版,增加了很多東西。變化在于以下:
? ?使用屬性層次(affinity hierarchies),來(lái)對(duì)core進(jìn)行標(biāo)識(shí),使gic支持更多的core
? ?將cpu interface獨(dú)立出來(lái),用戶(hù)可以將其設(shè)計(jì)在core內(nèi)部
? ?增加redistributor組件,用來(lái)連接distributor和cpu interface
? ?增加了LPI,使用ITS來(lái)解析
? ?對(duì)于cpu interface的寄存器,增加系統(tǒng)寄存器訪問(wèn)方式
-
cpu
+關(guān)注
關(guān)注
68文章
10890瀏覽量
212429 -
中斷
+關(guān)注
關(guān)注
5文章
900瀏覽量
41598 -
gic
+關(guān)注
關(guān)注
0文章
14瀏覽量
6280
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論