CLR_CMOS 后接上电源:主板不能自动上电的实现
级别:一般|类别:唤醒问题
摘要
客户提出明确需求:执行 CLR_CMOS 后,首次接上 AC 电源不得自动上电。排查发现根因在于 PCH 与 SIO 对 RTC 相关复位信号(RTCRST#/SRTCRST#)的响应范围不同,造成两侧寄存器状态 错位,从而触发“来电即自启”。本文说明成因,并给出改造思路:将 G3 网络唤醒的实现路径从 PCH 调整为 SIO,以保证在 CLR_CMOS 后不会误开机,同时保留 G3 网络唤醒能力。
目录
问题起因
(¬_¬) 客户反馈:“**CLR_CMOS ≠ 自动开机!”
(`Д´*)ノ ~┻━┻ “体验优先,严禁来电自启!”
- 需求目标:执行 CLR_CMOS 后,首次接通 AC 不能自动上电。
- 现象对比:
- 跳帽 CLR_CMOS → 首次通电会自启;
- 取电池 CLR_CMOS → 首次通电不会自启。
提示:两种 CLR_CMOS 的电气行为不同,导致 PCH 与 SIO 的寄存器复位范围不一致,从而出现“来电自启”。
唤醒原因(根因分析)
在分析唤醒路径前,先关注几个关键供电与复位信号:
- VCCRTC(RTC 电池):维持 RTC/CMOS 供电。
- RTCRST# / SRTCRST#:RTC/CMOS 相关复位信号。
- PCH 侧寄存器(示例):
R_PMC_PWRM_GEN_PMCON_A(跳帽 CLR_CMOS 会重置)。 - SIO(NCT5585D)侧寄存器(示例):
LDN A, CR[E4h](需要 VRTC 掉电才复位,即取电池或电池耗尽)。
关键差异
跳帽 CLR_CMOS
- PCH:AFTERG3_EN(AG3E)等寄存器被复位(回到默认)。
- SIO:由 VRTC 维持,不会复位(除非取下电池)。
取电池 CLR_CMOS
- PCH 与 SIO:同时归零(SIO 因 VRTC 丢失而复位)。
为什么“来电自启”只发生在跳帽 CLR_CMOS?
以常见的 G3 网络唤醒配置为例:
- 为支持 G3→S0 的网络唤醒,通常会:
- 在 PCH 端设置
AFTERG3_EN = 1(进入 S5); - 在 SIO 端
LDN A, CR[E4h]将 bit5 = 1,表示 Always turn on(当S3#为高时拉低PSON#上电)。
- 在 PCH 端设置
当处于 G3 状态时,如果 发生跳帽 CLR_CMOS(RTCRST# 下降):
- PCH:
AFTERG3_EN等寄存器被复位(PCH 视角回到 S0/默认)。 - SIO:未复位,其
CR[E4h].bit5 = 1仍保持 Always on。 - 错位结果:PCH → S0,SIO → On(保持上电条件)。
- 用户一接通 AC:SIO 仍按“Always on”逻辑触发
PSON#,于是 来电即自启。
而 取电池 CLR_CMOS 会让 SIO 也复位,因此 不会出现来电自启。
解决方案(实现要点)
思路:将 G3 网络唤醒 的“决策点”从 PCH 转移到 SIO,使两侧在 CLR_CMOS 后不会进入“错位状态”。
目标
- 保留 G3 网络唤醒能力;
- 消除 跳帽 CLR_CMOS 后的“来电自启”;
- 统一 复位/清除路径,避免 PCH/SIO 状态不一致。
要点
- 由 SIO 管控 G3 唤醒事件(如使用 GP31 事件线),统一在 SIO 路径产生/清除;
- PEI 阶段主动 清除 SIO 事件位,防止电池电压波动或上一次状态残留;
- 仅在需要时开启 SIO 的事件使能;
- AC Power Loss 行为与 唤醒策略分离:AC 断电恢复策略保持
off(禁止来电自启),网络唤醒由 SIO 事件触发。
关键寄存器与配置对照
| 侧别 | 位置/寄存器 | 用途 | CLR_CMOS 复位方式 | 风险点 |
|---|---|---|---|---|
| PCH | R_PMC_PWRM_GEN_PMCON_A / AFTERG3_EN |
G3 后行为 | 跳帽可复位 | 跳帽后回默认,可能与 SIO 不一致 |
| SIO (NCT5585D) | LDN A, CR[E4h](bit5=1 表示 Always on) |
上电策略/来电自启 | 需 VRTC 掉电(取电池)才复位 | 跳帽不复位,形成错位 |
| SIO (事件) | LDN11/12、FE/E1/E0 等 |
GP31 事件使能/清除 | 由 BIOS 主动清除 | 避免事件残留导致误触发 |
建议:AC Power Loss = Off;网络唤醒仅由 SIO 事件控制,且在 PEI 必要时机进行 清位。
参考代码片段
下述片段展示:在 AC Power Loss=off 条件下,通过开关 SIO GP31 事件来管控 G3 网络唤醒;并在 PEI 阶段主动清除可能残留的事件位。
1 | // AC Power Loss = off 条件下的配置 |
结语
“跳帽 CLR_CMOS 会自启、取电池 CLR_CMOS 不会自启” 的本质,是 PCH/SIO 在不同复位方式下的状态错位;
通过 将 G3 网络唤醒收拢到 SIO 路径、并在 PEI 阶段 清除事件残留,可既满足 “CLR_CMOS 后不自启” 的体验要求,又保留 G3 网络唤醒 功能;
集成落地时,请根据 项目硬件图/寄存器手册 校对 LDN/位定义,并与 电源时序 联调验证。