EC - Watchdog
Watchdog Watchdog 是用來偵測 Firmware 是否有正常的工作,沒有因為中斷佔用或者 Dead Loop 而被停止運作,在啟動 Watchdog 之後,Firmware 也需配合修改,在 Watchdog Timeout 之前,定時的 Touch Watchdog (Clear Watchdog Timer).若沒有定時 Touch Watdog 造成 Watchdog Timeout,EC 就會被 Watchdog Reset , 核心處理器被重置,Firmware 由程式的起始點開始執行。 Watchdog 的方塊圖如下: Watchdog Module 是由 EC 系統外掛或內含的 32KHz 或更低頻的振盪器做為 Module 的基本工作頻率,經由一 5 個位元的計時器 Timer 0 ,做為 Firmware 1.0ms 的計時器,產生中斷,提供給 Firmware 週期性偵察裝置或事件的工作時間,Timer0 的輸出訊號,再經由 16 位元的計時器由 T0OUT 傳送到 ICU 由 Firmware 的中斷服務程式來完成 T0OUT 中斷的要求。最後由 Watchdog 計數器 WDCNT 可選擇使用 Timer 0 或 T0OUT 來當計數訊號, 計數 Timeout 後,產生硬體中斷,硬體中斷路徑可以分為 Warm Reset 和 Cold Rest 。 Warm Reset – 清除核心處理器及狀態暫存器和 Power Manager Controller Module 。 Cold Reset – Reset 整個晶片 當系統要填寫 ESCD 或更新 BIOS 時,需要停止 Watchdog 的計數,避免 Watchdog 持續計數,產生 Reset 。停止 Watchdog 計數的方法,以 nuvoton EC 來說明 Watchdog Configuration, 先把 TWCFG 的 WDSDME 位元設為 HIGH , 0x87,0x61,0x63 填入 WDSDM 暫存器即可中斷 Watchdog 的計數。重新啟動計數只要填入 0x87,0x61,0x63 填入 WDSDM 暫存器即可。 TWCFG (Timer and Watchdog Configura