發表文章

目前顯示的是 6月, 2025的文章

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 溫度值。 若讀取失敗(如無...

EC FW - DTS

圖片
Digital Thermal Sensor(DTS)簡介與運作原理 Digital Thermal Sensor(DTS) 最早應用於 Intel 雙核心處理器架構。由於每個核心可以獨立執行或暫停運作,整體 CPU 晶片的溫度會隨各核心運作狀態而變動。為了更精確地監控並管理溫度,Intel 設計了 DTS,以便即時回報各核心的溫度資訊給系統 BIOS。 當 CPU 溫度變化達到某個門檻時,DTS 會透過 SMI(System Management Interrupt) 觸發中斷,通知系統 BIOS。BIOS 中的 SMI 中斷服務程式會被呼叫,進而讀取各核心的即時溫度。並且設定下一個上限及下限觸發的溫度點 Digital Thermal Sensor(DTS)簡介與運作原理 Digital Thermal Sensor(DTS) 最早應用於 Intel 雙核心處理器架構。由於每個核心可以獨立執行或暫停運作,整體 CPU 晶片的溫度會隨各核心運作狀態而變動。為了更精確地監控並管理溫度,Intel 設計了 DTS,以便即時回報各核心的溫度資訊給系統 BIOS。 當 CPU 溫度變化達到某個門檻時,DTS 會透過 SMI(System Management Interrupt) 觸發中斷,通知系統 BIOS。BIOS 中的 SMI 中斷服務程式會被呼叫,進而讀取各核心的即時溫度。 DTS 的運作流程: 開機階段: 系統 BIOS 會從 EC RAM 中讀取 DTS 對應的每階溫度上升/下降限制值(Threshold)。 溫度變化觸發: 當 CPU 核心的溫度發生變化,DTS 會觸發 SMI 中斷,BIOS 經由中斷服務程式取得各核心的溫度資訊。並且設定下一階段的上限及下限溫度點 比較溫度與限制值: BIOS 會使用多個核心中最高的溫度與 DTS 設定的限制值進行比較。 對應 Thermal Table 處理: 若溫度高於或低於某個限制,BIOS 會依據 Thermal Table 找出對應的控制階數(Thermal Level)。 風扇控制: BIOS 將對應的階數傳給 EC(嵌入式控制器),由 EC 控制風扇的轉速或其他散熱裝置的行為,以達到散熱調節的效果。   EC Firmware 與 BIOS 搭配...

EC - 鍵盤掃描

圖片
Keyboard Matrix  Scan 現今筆記型電腦的鍵盤多採用 104 鍵配置,這意味著至少需要 8 × 13  (104) 個掃描點位,也就是 Y0 至 Y12(共 13 條 MY 線),才能涵蓋所有按鍵。 本章將著重於 Firmware 層面的技術實作,並說明基本硬體如何配置 MXn 與 MYn。若您希望深入了解 Keyboard Scan Module 的運作原理,建議參閱相關技術資料。新一代的 EC 晶片已將原有的 16x8 鍵盤矩陣擴充為 18x8 結構,以支援更多按鍵配置。 所謂 Ghost Key,是指在用戶同時按下如 X0/Y0、X0/Y1 與 X1/Y0 等位置時,掃描邏輯會誤判 X1/Y1(即 MX1/MY1)也被同時按下(電流由 X0/Y1 流到 X0/Y0 再到 X1/Y0 而誤判 X1/Y1 也被按下)。這類未實際觸發卻被錯誤判定的按鍵即稱為 Ghost Key。為避免此類現象,設計鍵盤矩陣時,應對常用作組合鍵的按鍵適當預留空間,避免造成掃描誤判。 Firmware 的鍵盤掃描流程如下: 當 EC 處於待機狀態時,MXn 設為輸入端,而 MYn 則輸出低電位(Low)。當使用者按下某個按鍵時,對應的 MXn 與 MYn 將被導通,使得低電位從 MYn 傳送至 MXn,進而觸發 EC 偵測到中斷。中斷服務程式僅負責記錄該事件(set service flag),並將 EC 設定為禁止掃描狀態(MYn 輸出改為高電位),同時立即釋放中斷資源。 隨後,由 Firmware 的主服務程序負責執行按鍵掃描。掃描過程會依序將 MY0 至 MY17 的每條線由高電位轉為低電位,並讀取 MXn 的輸入狀態,以判定是哪一顆按鍵被觸發。此階段同時會檢查是否產生 Ghost Key,進行消彈跳(Debounce)處理,並判斷該按鍵為 按下(Press) 或 釋放(Release) ,是否需要重複輸出(Repeat)等動作。 最後,根據 Code Set 1 或 Code Set 2 的對應表,Firmware 會將對應的 Scancode 傳送至主系統,以完成鍵盤輸入的傳遞流程。 鍵盤掃描演算法說明 鍵盤掃描的基本流程如下: 初始化掃描迴圈計數器 LoopIndex = 0 。 產生掃描訊號: 將 0x01 ...