GIC使用注意事項

2021-06-28 01:12:53 字數 2628 閱讀 2938

一:gic的原理:

gic最大支援8個cpu inte***ce,對於0-31號中斷每個cpu inte***ce都是私有的。spi中斷(32-1019)會經過distributor**給各cpu inte***ce,ditributor和cpu inte***ce都是基於記憶體位址對映的方式訪問。distributor的位址是各cpu共享的,cpu inte***ce的位址是每個cpu core自己私有位址。

1-n模型在多處理器架構中,表示對於某個中斷如果有1個cpu inte***ce處理了這中斷後,它會清除其他的target cpu inte***ce的該中斷的掛起位,該模型保證第乙個獲取中斷的cpu來處理這個中斷,但是對於多個cpu同時檢查到各自的中斷時,需要一定互斥機制,請參考《ihi0048a_gic_architecture_spec_v1_0.pdf》3.3.2節。

二:gic初始化注意事項:

1)關閉gic distributor的中斷使能,操作distributor控制暫存器的使能位。(乙個暫存器)

2)清除distributor的所有中斷使能源,同時把distributor的所有可能掛起中斷源清除。(一組暫存器)

3)配置distributor的target暫存器,把某些中斷分發給指定的cpu,32位暫存器對應4個中斷源。(比較重要)

每個中斷源有8bit,每個bit代表乙個cpu inte***ce,最大為cpu 7(從cpu 0開始),設定值為0x3333,表示4個中斷分別傳送到cpu0和cpu1。

4)配置中斷優先順序暫存器,32位的一組暫存器,基位址為distributor的偏移0x400位址處,32位可以配置4個中斷,每個中斷8bit表示優先順序,最小是16個優先順序,最大為256個優先順序。

特別注意這個優先順序必須cpu inte***ce的優先順序掩碼值要小,因為優先順序的值越小優先順序就越高,系統所有的暫存器都為0,都是最高優先順序的,可根據需要重新配置各中斷的優先順序值。

5)配置distributor的priority mask暫存器,這個暫存器決定gic有多少個中斷優先順序。

總共有256級,128級,64級,32級,16級這5中優先順序可以配置,比如16級中斷優先順序時,低4位為0,高4位從0x0~0xf共16個值,正好16個級別。

記住只有distributor的某個中斷的優先順序配置值(上面第4條中的中斷優先順序暫存器)低於priority mask的值時,distributor才會分發這個中斷到對應的的cpu inte***ce去。

6)最後記得使能gic的distributor的控制暫存器使能位以及cpu inte***ce的使能位。

7)值得一提的是gic的配置暫存器手冊收看是可以讀寫的,實際上很奇怪的有的ic廠家實現時是唯讀的。配置暫存器主要是用來配置各中斷源的觸發方式,比如是電平觸發還是邊沿觸發,這個最好根據系統實際除錯,這個暫存器原則上也很重要。

bit[2f]保留,bit[2f+1] = 1 是邊沿觸發方式;bit[2f+1]=0是電平觸發方式。

三:中斷響應

1)註冊各中斷的處理函式,註冊時需要使能這個中斷。

2)各外設模組中斷配置正確並使能後,比如timer外設,計時到達時產生中斷,系統硬體自動切換到irq模式,並儲存lr和cpsr暫存器到中斷模式下的暫存器,然後跳轉中斷向量表的入口位址(偏移0x18),儲存現場,切換模式svc模式,讀取gic的cpu inte***ce的中斷確認暫存器獲取當前中斷號,根據中斷號呼叫註冊的中斷處理函式,處理函式結束後,必須向cpu inte***ce的中斷結束暫存器(eoi)寫入對應的中斷號表示這個中斷處理結束。

四:軟體中斷(sgi)

典型應用配置值如:

cpu0 寫distributor的reg_sgi = (0x2<<16) | interrupt_id;

表示cpu0向cpu1傳送軟體中斷,中斷號0-15。

五:總結distributor和cpu inte***ce職能

引用英文:

很明顯列舉出了兩者的功能。

LCD使用注意事項

a.lcd使用注意事項 1.確保是在電源關閉的狀態下拔插線纜 2.對液晶屏進行固定安裝時,注意使整個液晶屏保持平整,避免外力導致液晶屏 彎曲 扭曲 3.一定要小心液晶屏的表面偏光片,避免被堅硬物體劃傷 決不能將堅硬物品置於液晶屏之上 4.如果水滴長時間滯留在液晶模組上,可能導致變色或出現汙斑,所以務...

using使用注意事項

在c 的語法中,using關鍵字有幾個作用 一 匯入乙個命名空間,以便於能使用該命名空間下的相關型別定義,如下的例項 中,將匯入system.text下的相關型別定義 二 為乙個命名空間設定別名,這種情況下並不會匯入對應命名空間下的型別定義,如例項 為system.text定義了別名systext,...

LCD使用注意事項

a.lcd使用注意事項 1.確保是在電源關閉的狀態下拔插線纜 2.對液晶屏進行固定安裝時,注意使整個液晶屏保持平整,避免外力導致液晶屏 彎曲 扭曲 3.一定要小心液晶屏的表面偏光片,避免被堅硬物體劃傷 決不能將堅硬物品置於液晶屏之上 4.如果水滴長時間滯留在液晶模組上,可能導致變色或出現汙斑,所以務...