EC FW - FanControl
Fan Control – 系統風扇控制機制 EC Firmware 對於系統溫度的控管可分為以下三個主要部分: 溫度感測與讀取: 從 CPU 晶片中讀取即時溫度資訊。 風扇控制邏輯: 根據不同系統架構判斷最準確或最高的溫度值,進而調整風扇轉速以達到散熱目的。 風扇運作狀態監控: 定期檢查風扇實際轉速是否落在預期的範圍內,確保硬體正常運作,並在異常時啟動保護機制。 本篇文章將針對上述三個部分的邏輯與實作原理進行詳細說明。 讀取系統溫度:PollingThermal 函式 : PollingThermal 為負責輪詢與監控 CPU 溫度的主要函式,其運作可再細分為以下三個子階段: ReadCPUTemp – 讀取 CPU 溫度: 透過 DTS(Digital Thermal Sensor)或 Thermal Diode 等方式,讀取 CPU 核心或整體封裝的即時溫度。 Validate Temperature – 溫度值檢查: 證所讀取的溫度數據是否有效,包括過熱異常值(如 TJ 限制)、資料未更新、或失效的感測器狀況。 Trigger Notification – 異常或變動處理: 若溫度變化已跨越預設閾值(如上下階級),則需通知系統並觸發風扇控制調整流程。 ReadCPUTemp 函式 – 溫度讀取流程說明 ReadCPUTemp 是 EC Firmware 中負責讀取 CPU 溫度的主要函式。其執行邏輯如下: 建立 Thermal Diode Table: EC Firmware 會預先定義一份 Thermal Diode Table ,該表格中包含所有支援的 Thermal Diode 裝置資訊,例如: SMBus 的 Slave Address 對應的 溫度讀取命令(Command) 查詢與傳送溫度讀取指令: 當 EC 透過 SMBus 介面讀取 CPU 溫度前,會根據目前的 Thermal Index 查詢 Thermal Diode Table,取得對應的 Address 與 Command,並將這些資訊傳送給 Thermal Diode 裝置。 驗證讀取是否成功: 若該組 Slave Address 與 Command 正確 ,將可成功讀取到有效的 CPU 溫度值。 若讀取失敗(如無...