EC 的架構 - EC 接腳的功能
EC 的架構
科技的演進,PC系統架構由8位元演進到64位元,處理器和系統裝置的介面也由並列連接改為串列連接。EC和系統的連接介面,也會隨著系統架構變動而改變它的連接介面。因此,在本篇文章以說明EC和系統的連接介面及提供的功能讓初學者更了解EC在系統中扮演的角色。
EC 接腳的功能
EC Pin腳依功能可以分為幾個GROUP -
- LPC interface - 和系統晶片溝通的介面
- Share ROM interface - BIOS/EC式碼的儲存記憶體介面
- KBC interface - 鍵盤控制介面 、
- Power sequence interface - 系統電源管理介面
- Battery control interface - 電池管理介面
- Button function - 開關介面
- External Event function - 週邊裝置的管理介面
- EC power saving function - EC 進入或喚醒深層睡眠的接腳
在詳盡介紹每個Pin的功能之前,先以方塊圖的方式把整個EC所提供的功能列出。
- LPC interface
- lpcLFRAME_L – 用於指示資料傳輸的開始。
- lpcLAD[0:3] – 4 位元寬度的資料傳輸,資料和位址線共同使用此四個位元。
- lpcLCLK – 系統提供給 LPC 的時脈來源 [ 33MHz ]
- lpcLREST_L – PCI Reset 重置訊號。
- lpcSERIRQ – Serialized IRQ 中斷用來通知系統
- lpcCLKRUN_L – 系統軟體要停止某一裝置的CLOCK時使用
- lpcLPCPD_L – 用於硬體要關閉某一裝置使用LPC介面
LPC的Timing圖 –
- Share ROM interface
Share ROM的介面有兩種:一種是ISA介面;另一種是SPI介面。
ISA介面Pin腳簡介
- isaA[0:19] – 位址線。512KB=219需19條位址線A0-A18。1MB=220需20條位址線A0-A19
- isaD[0:7] – Data Lines
- isaCS_L – Chipset enable
- isaRD_L – Read control pin
- isaWR_L – Write control pin
SPI介面Pin腳簡介
- spiMOSI – Data Out
- spiMISO – Data In
- spiCLK – Clock
- spiCS_L – Chipset Select
- KBC interface
KBC Interface含了內部鍵盤按鍵(X軸及Y軸)掃描的功能、PS/2介面、Keyboard的控制燈號、通知Host的訊息腳位。
PS/2 Interface : (以 Phoenix 的 EC Firmware 為定義 )
- ps2PSCLK3 – Touchpad clock
- ps2PSDAT3 – Touchpad data
- ps2PSCLK1 – External PS/2 mouse clock
- ps2PSDAT1 – External PS/2 mouse data
- ps2PSCLK2 – External PS/2 keyboard clock
- ps2PSDAT2 – External PS/2 keyboard data
Keyboard的控制燈號 :
- kbcNUMLED_L – Number lock LED
- kbcCAPSLED_L – Caps lock LED
- kbcSCRLED_L – Scroll lock LED
通知Host的訊息 :
- kbcSMI_L (System Manager Interrupt) – 在 APM Mode 也就是在 DOS 的作業系統之下,EC 有任何需要通知系統的事件時,會使用 SMI_L_OUT 來通知系統來取得事件。
- kbcSCI_L (System configure interrupt) – 在 ACPI Mode 也就是在 Windoes 的作業系統之下,EC 有任何需要通知系統的事件時,會使用 SCI_L_OUT 來通知系統來取得事件。
- kbcSWI_L (System wakeup interrupt) – 當系統進入 Standby 或 Sleep 的情況之下,EC 會使用 SWI_L_OUT 來喚醒系統。
- kbcGA20 – 這是早期系統留下來的,系統晶片使用位址線 A20 來當控處理器可以存取資料定址的空間,當 A20=0,只能定址在 1MB 以下的記憶體空間,也稱為傳統模式。當 A20=1,就可以完整的存取記憶體空間,稱為保護模式。
- kbcRST_L – 由 keyboard 按 Ctrl + Alt + Del 會利用 KBRST_L_OUT 來重置 CPU ,讓 BIOS 由 0xFFFFFFFF 再頭執行,記憶體和周邊沒有完全重置,所以稱暖開機 (Warm Boot)。
Keyboard Matrix 的掃描介面:
- kbcIN[0:7] – 掃描時讀取每一行的接腳狀態
- kbcOUT[0:15] – 選取掃描的行數,被選取時,相對的KBSOUT 會被拉為低電位。
根據上面的 keyboard matrix,硬體上的連接為 -kbcIN0 -> Keyboard pin 4 … kbcIN7 -> Keyboard pin 13kbcOUT0 -> Keyboard pin 1 … kbcOUT15 -> Keyboard pin 24
- Power sequence interface
電源控制Pin腳會隨著不同的南北橋需求或週邊設備而小幅變化,所以針對大部分共有的Pin腳來介紹。
- psqS5_ON – 開關系統由關機狀態被喚醒電源的控制接腳
- psqRSMRST_L – 南橋晶片/系統晶片重置的控制接腳
- psqRAM_ON – 開關系統記憶體電源的控制接腳
- psqRUN_ON – 開關週邊裝置電源的控制接腳
- psqCPU_ON – 開關 CPU 電源的控制接腳
在不同電源狀態下,一般各電源接腳的控制狀態。
AC mode
|
DC mode
| |||||||
Sleep
|
S5
|
S4
|
S3
|
S0
|
S5
|
S4
|
S3
|
S0
|
psqS5_ON
|
ON
|
ON
|
ON
|
ON
|
OFF
|
OFF
|
ON
|
ON
|
psqRAM_ON
|
OFF
|
OFF
|
ON
|
ON
|
OFF
|
OFF
|
ON
|
ON
|
psqRUN_ON
|
OFF
|
OFF
|
OFF
|
ON
|
OFF
|
OFF
|
OFF
|
ON
|
psqCPU_ON
|
OFF
|
OFF
|
OFF
|
ON
|
OFF
|
OFF
|
OFF
|
ON
|
- psqSLEEP_S3_L – 系統晶片用來通知週邊裝置,系統要進入 S3
- psqSLEEP_S4_L – 系統晶片用來通知週邊裝置,系統要進入 S4
- psqSLEEP_S5_L – 系統晶片用來通知週邊裝置,系統要進入 S5。
- psqPOWER_BUTTON_L – 系統電源開關。
- psqAC_PRESENT – 通知系統,AC 電源的狀態。
- psqALL_POWER_GOOD – 所有電源都已經進入穩定狀態。 電源指示LED
- psqPWRLED[0:1] – 用來指示系統現今的電源狀態。
電源方塊圖 :
電源Timing 圖 :
Battery charge/discharge interface
電池介面接腳可分為幾個部分,分別為Selector、Charger及電池介面。Selector是用來選擇那一個電池要接受充放電。Charger控制充電時的充電電壓及充電電流。電池介面 [SMBUS] 用於取得電池的資訊提供給系統去修改指示狀態。
Button function
Battery Charger –
- batCC – 這是早期系統還沒有使用 Smart Charger 前,EC需要使用 DAC 的輸出電壓來控制電池的充雷電流。
- batCV – 這是早期系統還沒有使用 Smart Charger 前,EC需要使用 DAC 的輸出電壓來控制電池的充雷電壓。
- batCELL_SET – 這是早期系統還沒有使用 Smart Charger 前,用來選擇電池為3個CELL串接或者4個CELL串接。
電池介面 -
- batTEMP_BAT_L – 在電池內部會有一個 10K 的熱敏電阻到 Ground,可以拿來偵測電池的溫度,也可以拿來偵測電池是否存在。
- batCLK - 電池和系統連接介面(SMBUS) 的 Clock (同步使用)。
- batDATA - 電池和系統連接介面(SMBUS) 的 Data (資料傳送使用)。
- batLED [0:1] - 用來顯示電池的狀態。
在早期的筆記型電腦上,除了電源按鈕,常可以發現有許多按鈕,做各式各樣的功能。這些按鈕在設計上,通常會使用 EC 內部的 Pull-Up 電阻。依功能可以分為:快速按鈕及裝置控制按鈕。
External Event function
快速按鈕 – 大多是使用 Microsoft 的快速按鈕的按鍵碼來完成功能。
- qsbMAIL_L - 使用 Microsoft 快速按鍵碼啟動 eMail 應用程式。
- qsbMUTE_L - 使用 Microsoft 快速按鍵碼來使系統靜音。
裝置控制按鈕 – 大多需要加入程式碼去控制裝置。
- qsbRFBTN_L - 開關無線裝置的驅動程式。
External Event function
為了讓筆記型電腦的配備多樣化,常會有許多選配的裝置提供插拔,並使用 EC 來管理這些裝置,這些部分的功能都屬External Event。
EC idle function
- evtLID_L - 偵測筆記型電腦螢幕是否閤上。
- evtBLON - 開關電腦螢幕的背光。
- evtPME_L - 偵測由網路啟動電腦的訊號狀態。
- evtAMP_OFF - 開關系統音量,用於消除電源開關造成的bo bo 聲。
- evtMEDIA_L - 偵測Media Bay [CD ROM/DVDROM]的插拔狀態。
- evtDOCK_L - 偵測 Docking 的插拔狀態。
- evtFANSIG - 讀取風扇轉速。
- evtBRIGHTNESS - 控制螢幕的亮度。
筆記型電腦在電源關閉且由電池供應系統電源的情況下,會要求EC進入Deep Sleep以達到最省電的狀況。早期的設計為了讓 Firmware 的負擔小一點,會將所有需要啟動系統的訊號並接起來,只要有任何訊號需啟動,都由同一個啟動中斷點通知EC,再由EC去分別那一個訊號造成啟動,再通系統。
現在的線路如果接腳夠多,是可以考慮將所有需要啟動系統的訊號拉到 EC 的Wake-up Pin上,直接由中斷點即可得知是什麼訊號造成系統啟動。
大大您好 我是ec菜鳥工程師 剛畢業那種 請問有建議新手怎麼學習的模式或流程麻感謝您
回覆刪除Hello 帥哥你好,
刪除我的建議是把 EC Datasheet 和相關 Specification 細分成好幾個單位, 每研讀完一個單位,就嘗試修改一下程式碼, 例如研讀完 GPIO,就嘗試開關 LED 燈. EC 又可分為對晶片組的介面, eSPI/PECI 等,因為這方面需要的知識比較多,建議放在後面再研讀. 另一部分是 EC 當管理者去管理週邊的裝置,像 GPIO/I2C/SPI/ADC/DAC/Watchdog/PWM 可以先把它學會.
好的感謝您
刪除大大您好 目前終於學會smbus pwm gpio 一些基本的 想請問現在是不是已經沒有什麼lpc了都是使用espi為主 如果上面那張架構圖 是否有網址或怎麼找到比較符合現代的結構圖了 那張圖很清楚讓我學習加快 感謝您
回覆刪除