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 。 ICU Register