1.“站的高尿的遠”
GIC為中斷控制器,不要和ARM core的中斷搞混了,這些中斷都是連接到ARM core的IRQ或者FIQ上的。
要了解arm中斷系統,GIC絕對不容錯過,好先付上一張大家都能百度到的圖片。
++和*可以先不用考慮,用于安全模式。
GIC可以用于單核多核系統,這時候要拋開單片機的簡單中斷了,從圖上看有SGI(Software-generated interrupt)、PPI(Private peripheral interrupt )、SPI(Shared peripheral interrupt),顧名思義SGI為軟件可以觸發的中斷,經常用于各個core之間的通信,PPI為每個core的私有外設中斷,SPI為各個core公用的中斷。
SGI:0~15
PPI:16-31
SPI:32~1019
2. follow me
通常把GIC分成兩個部分,分發器(Distributor)和CPU接口。
分發器其實應該叫匯聚器,在IC的后端設計中,layout會把各個模塊引過來的中斷線混接到GIC上(就是上面說的三種中斷),然后把混聚合的中斷接到CPU的irq線上。
這樣core就有觸覺了。
3. 模型
既然是中斷控制器,必不可少的是總的中斷使能,各個子中斷使能,優先級排序,在多核系統中對于SGI還可以指定中斷發往哪個CPU core。
如何才能保證中斷不丟失呢?啊對了就是pending,distributor會把收集來的中斷,先緩存一下,依次交給CPU處理,cpu讀取一個中斷,其實
就是讀取一個寄存器,只不過這個寄存器存放的是中斷號,這時候中斷的狀態由pending轉為active,cpu處理完了以后,將中斷號寫入GIC,告訴
GIC我處理完了,你可以歇歇了。
|