透过 Intel SMBus Controller 读取 DDR4 SPD

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

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;
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值