BIOS 在POST的过程中会透过SMBus 去读取DIMM上的 EEPROM中之 SPD (serial presence detect) 数据来配置內存控制器(memory controller)。不太熟悉 SMBus 可以先参考 初学 SMBus
在DDR4的时候,JEDEC 定义了一种新的非标准 EE1004 类型,SPD大小增加到4-Kbit (4 * 1024 / 8 = 512 Bytes),分为两个Page,各256Bytes。 (可以参考 4-Kbit Serial Presence Detect (SPD) EEPROM compatible with JEDEC EE1004 (st.com))
如果需要读取数据,要采用switch page的方式,使用一个Byte表示要读取的位址。因此
- 读取EEPROM 前256 Bytes的资料,需要切到page0
- 读取EEPROM 后256 Bytes的资料,需要切到page1
如下图,如果要读EEPROM中的offset 0x135的位址,page和要带入的offset关系可以套用以下公式:
#define EE1004_PAGE_SHIFT 8
page = offset >> EE1004_PAGE_SHIFT;
offset &= (1 << EE1004_PAGE_SHIFT) - 1;

本文详细介绍了DDR4内存模块的SPD数据如何通过SMBus进行读取,涉及初始化SMBus、切换页和读取过程,并提供了Linux ee1004驱动和相关规格文档的参考。
最低0.47元/天 解锁文章
2519

被折叠的 条评论
为什么被折叠?



