作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 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/
我是一名优秀的程序员,十分优秀!