DDR5内存上的表示内存供电的pwrgood信号未发出来,有谁知道什么原因呢?
在 DDR4 时代,内存供电主要在主板,PWRGOOD 更多是主板 / VR 侧的概念。DDR5 完全不同,PMIC在内存条上,由PMIC驱动PWR_GOOD信号。
因为BIOS是通过i2c/i3c来控制PMIC的,是执行 I2C/SMBus 写操作,拉高 PWR_GOOD. 所以首先要初始化i2c/i3c,而SPD是i2c/i3c的hub,先要初始化SPD,并初始化好Hub下面的device之后,才会开始进入PMIC上电时序。
根据PMIC spec(PMIC 5200),4.2.1 Power Up Sequence节:

当VIN_Bulk(主输入电源)达到最小阈值(不同型号要求不同:PMIC5200为≥3.0V,PMIC5120为≥4.25V,PMIC5000为≥4.25V)并稳定后,PMIC会先 assert PWR_GOOD为低(表示电源未就绪)。随后:
- PMIC执行Power On Sequence Config寄存器(如PMIC5200的Register 0x40~0x43,PMIC5120的Register 0x40~0x42等)配置内部寄存器,并启动所有使能的输出开关稳压器(SWA、SWB等)和LDO(VOUT_1.8V、VOUT_1.0V)。
- 当所有使能的输出调节器稳定,且VIN_Bulk及输出调节器的容差阈值均满足配置要求时,PMIC会在最大tPMIC_PWR_Good_Out时间内释放PWR_GOOD信号。此时外部平台或主机的上拉电阻(1.8V或3.3V)将PWR_GOOD拉高:

如果你有Intel MRC代码,就可以很清楚的看到这个过程。代码在初始化SPD,enable i2c/i3c之后,并获取 DIMM 的厂商信息、容量、颗粒类型以及 PMIC 的相关配置参数;初始化时钟 ( InitClocks ) ;POR 兼容性检查和XMP 检查之后,才会进入PMIC Power On Sequence。
具体是BIOS在SetVdd用PmicEnable,执行 i2c/i3c 写操作,来拉高 PWR_GOOD。
所以出问题的点,应该考虑在这之前的所有步骤,在calltable中寻找相关的内容,尤其是SPD初始化和i2c/i3c通信阶段的步骤。
另外说一下,这里也是一个很好的Power On(Bring Up)服务器主板的一个很好的检查点。通过测量PMIC的PWR_GOOD信号(如果是DDR4时代,就更方便了),可以在串口缺失的情形下,给硬件工程师一个很好的启动过程检查点。
欢迎大家关注本专栏和用微信扫描下方二维码加入微信公众号"UEFIBlog",在那里有最新的文章。关注公众号,留言“资料”,有一些公开芯片资料供下载。
