EC - ICU
ICU (Interrupt Control Unit)
本章節在於說明 EC 本身的 Interrupt,只有在 Active 的狀態才有 Interrupt 的功能,本章節的內容會介紹 Interrupt 的優先權、來源、觸發的方式。本章所舉的例子為當 EC Active mode 後,PS2 鍵盤按下任何一個鍵,經由 PS2模組產生中斷訊號,EC 會設定中斷的 Pending Flag 然後進入中斷服務程式,若還有非需立即要完成的事件,就需設定 Service Flag 後,然後清除 Pending Flag 回到主程式,主程式發現在Sericee Flag 就先完成非立即完成事件,再處理其他 Task。
由 ICU 管理所有的中斷方式,每一個中斷訊號都有不同的權限,編號愈高的中斷權限愈高,依照不同的中斷 source 可知道 INTn 是外部還是內部或是由 MULIT-INPUT WAKE-UP 的功能 I/O。在中斷發生時,相對映的 Pending Flag 就會被設為 1,若中斷是Enable的,Processor 就會產生中斷,並執行中斷服務程式。在中斷服務程式完成需清除 Pending Flag。
ICU有 31 個 INT,其來源大致分為內部及外部中斷,內部中斷為 EC 模組中斷如MFT、SMBus…..等,而Power Button是GPIO為外部中斷的方式。
- Non-Maskable Interrupt(NMI) - 全部為 edge-triggered NMI,一般為晶片在執行時發生的硬體問題會造成核心處理器停止運作,需要Reset。ex: External Power Fail(PFAIL) interrupt source。
- Maskable Interrupt - 31個 high-level 和 edge-triggered中斷來源,可enable / disable每一個中斷來源。Maskable Interrupts ICU可以接收31個Level或edge-triggered中斷需求和當有需要時產生中斷CR16x。優先權由高到低則是INT31~INT1。
- ISTAT(Interrupt Status Register)
- ISTAT0 每一個 bit 表示著 Maskable Interrupts INT15~INT0
- ISTAT1 每一個 bit 表示著 Maskable Interrupts INT31~INT16
- INT0~INT31的中斷狀態,0是無中斷發生,1是有中斷發生。
- IENAM (Interrupt Enable and Mask Register)
- IENAM0 每一個 bit 控制著 Maskable Interrupts INT15~INT0 。
- IENAM1 每一個 bit 控制著 Maskable Interrupts INT31~INT16。
- 控制 INT0~INT31 Disable or Enable,0是Disable,1是Enable
- IECLR(Edge Interrupt Clear Register)
- IECLR0每一個 bit 控制著 Maskable Interrupts INT15~INT0 。
- IECLR1每一個 bit 控制著 Maskable Interrupts INT31~INT16。
- INT0~INT31的中斷狀態清除,0是無效值,1 是清除中斷狀態。
留言
張貼留言