大家好,又到了每日學(xué)習(xí)的時(shí)間了,今天我們來(lái)聊一聊英特爾 Altera系列 cyclone V HPS GIC.
一、CYCLONE V GIC配置
Cyclone v使用雙核ARM CORTEX A9硬核處理器,MPU系統(tǒng)框圖如下:
由上面圖可以看出,雙核CORTEXA9共同使用一個(gè)GIC,pl390。PL390實(shí)現(xiàn)了180個(gè)中斷源,包括了專(zhuān)用的FPGA中斷。每個(gè)核都有16個(gè)一組的軟件中斷(SGI)及16個(gè)一組的私有中斷(PPI)。這32個(gè)中斷占用了GIC的0-31中斷號(hào),也稱(chēng)為interrupt ID。但是這32個(gè)中斷采用了中斷與寄存器分區(qū)抽像。關(guān)于這個(gè)中斷與寄存器分區(qū),后面講講。具體的中斷映射,請(qǐng)參照cyclone v HPS手冊(cè)。
PL390負(fù)責(zé)收集所有的中斷信號(hào),并對(duì)這些中斷信號(hào)進(jìn)行管理,包括中斷行為,中斷路由及安全擴(kuò)展等。具體如下:
l ARM安全擴(kuò)展,這部分內(nèi)容需要了解ARM TRUSTZONE技術(shù)。
l 使能,關(guān)閉及生成外圍中斷。
l 生成軟件中斷。
l 中斷門(mén)限及優(yōu)先級(jí)設(shè)置。
l 多處理器環(huán)境中的路由。
PL330支持三種中斷類(lèi)型,PPI,SPI,SGI。
l PPI中斷為CPU核私有中斷,只連接到指定CPU核。
l SPI由PL330路由到相應(yīng)的CPU核。
l SGI由軟件編程PL330直接生成,用與核間通信。
PL390支持兩中中斷模型:
l 1:N:只讓一個(gè)CPU核處理中斷。軟件通過(guò)系統(tǒng)編程GIC實(shí)現(xiàn)中斷路由,讓指定CPU核處理該中斷。
l N:N:每個(gè)處理器都會(huì)收到中斷,它們獨(dú)立處理這些中斷。這種方式在SGI上使用,用于CPU核間通信。
二、MPU GIC
PL390提供一個(gè)AMBA總線接口給SOC系統(tǒng)訪問(wèn)其內(nèi)部寄存器,可以進(jìn)行可尋址配置及訪問(wèn),同時(shí)還可以提供最多8個(gè)CPU接口,也就是說(shuō)可以最多為8個(gè)CPU提供中斷服務(wù)。
整個(gè)GIC被分成兩個(gè)部分,distributor(中斷分配器)與多個(gè)CPU接口。再看下面一張圖。
這張圖中,紅色箭頭直接穿過(guò)distributor,分配到FIQ與IRQ,這就是bypass模式,也稱(chēng)為旁路模式,這種模式下,所有中斷被直接分配到了相應(yīng)的CPU核。而橙色箭頭方向表示GIC提供了一個(gè)AXI接口,可以用于訪問(wèn)distributor,對(duì)GIC進(jìn)行配置。藍(lán)色表示軟件可以通過(guò)CPU接口直接編程GIC,產(chǎn)生中斷,該中斷具有廣播性質(zhì)。
通用GIC系統(tǒng)框圖如下所示:
由上圖可以看到GIC明顯分成了Distributor與cpu接口兩部分。所有的中斷都經(jīng)過(guò)Distributor,SGI中斷只是能edge觸發(fā)。
三、GIC編程模型
CPU接口寄存器如下圖所示,在CYCLONE V中的偏移地址是0xfffec000。
GICC_CTRL(CPU接口控制寄存器)
Enable= 1來(lái)轉(zhuǎn)發(fā)中斷。
中斷優(yōu)先級(jí)屏蔽寄存器(GICC_PMR)
用來(lái)設(shè)置一個(gè)優(yōu)先級(jí),低于該優(yōu)先級(jí)的中斷不會(huì)送到CPU。如果設(shè)置成0,那就意味著所有中斷都屏蔽了,都不會(huì)送到ARM核。
GICC_BPR(二進(jìn)制點(diǎn)寄存器)
優(yōu)先級(jí)值被分成組優(yōu)先級(jí)與子優(yōu)先級(jí),跟IP地址掩碼相似。這樣設(shè)置后,有相同組優(yōu)先級(jí)的中斷被認(rèn)為有相同的等級(jí)。這樣就分成兩種情況,如果一個(gè)中斷要搶占一個(gè)正在活動(dòng)的中斷,那么該中斷必須有一個(gè)比活動(dòng)中斷小的優(yōu)先級(jí)。如果沒(méi)有活動(dòng)中斷情況下,相同組的中斷比較子優(yōu)先級(jí),產(chǎn)生一個(gè)。
GICC_IAR(中斷確認(rèn)寄存器)
當(dāng)接收到中斷時(shí),讀取該寄存器并讀取中斷ID及SGI中產(chǎn)生中斷的CPUID,通知gic中斷處理程序已被確認(rèn)。
中斷結(jié)束寄存器(GICC_EOIR)
當(dāng)中斷服務(wù)程序(ISR)中的中斷處理完成時(shí),記錄相應(yīng)的中斷ID,并通知gic已執(zhí)行eoi處理。寫(xiě)該寄存器通過(guò)GIC中斷處理完畢。
-
英特爾
+關(guān)注
關(guān)注
61文章
9949瀏覽量
171692 -
Altera
+關(guān)注
關(guān)注
37文章
781瀏覽量
153920
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論