gpt4 book ai didi

bios - 如何在 255(FF) 字节后从 DIMM 读取串行存在检测 (SPD) 数据的一个字节?

转载 作者:行者123 更新时间:2023-12-04 02:02:23 25 4
gpt4 key购买 nike

我有 SMBus 基地址寄存器,并使用 DIMM SMBus 地址 SMBBASE 04h 对 SMBus 传输从属地址寄存器进行编程。

然后使用要读取的 DIMM 的 SPD 数据偏移量 SMBBASE 03h 对 SMBus 主机命令寄存器进行编程。

但是主机命令寄存器(HCMD)—偏移量 3h 是大小:8 位(255/FF),

那么如何读取后面的 255 个字节呢?

例如:DDR4 串行存在检测 (SPD) 表:

字节 320:模块制造商 ID 代码

我需要读取字节 320。

我的代码是这样的

unsigned ReadByte(unsigned SMBase_addr,unsigned i)   
{
unsigned val;

outportb(SMBase_addr,0x1e);

outportb(SMBase_addr 0x04,0xa7);

outportb(SMBase_addr 0x03,i);

outportb(SMBase_addr 0x02,0x48);

while((inportb(SMBase_addr))&0x01){
delay(10);
}

val=inportb(SMBase_addr 0x05);

return val;
}
for(i=0;i<383;i )
{
data=ReadByte(SMBase_addr,i);
printf("%4x",data);
}

我变了outportb(SMBase_addr 0x03,i);

outportw(SMBase_addr 0x03,i);主机状态寄存器返回 0x44,设备错误 (DERR)。

最佳答案

尝试读取 DDR4 SPD?它们有 2 页,每页 256 字节,您需要虚拟写入一个特殊的预定义地址 0x6E 以将所有 SPD 芯片切换到第 1 页(您的字节 320 所在的位置),然后写入 0x6C 将它们切换回第 0 页(以防止在下次引导期间出现 SPD 读取失败)。阅读this datasheet在第 12 页了解更多信息。

关于bios - 如何在 255(FF) 字节后从 DIMM 读取串行存在检测 (SPD) 数据的一个字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35694195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com