存档2021年10月29日

内存SPD信息查看与翻译

内存SPD解析

背景:本文主要在于讲解linux系统下 通过I2C解析内存SPD信息,并举例通过内存SPD信息算出内存实际频率。

一、安装i2c-tools工具

  • sudo apt update
  • sudo apt install i2c-tools
  • 安装不了去网站下 地址https://www.kernel.org/pub/software/utils/i2c-tools/
  • tar -xvf i2c-tools-4.1.tar.xz ,  解压工具包
  • make    & make install   //编译和安装
  • cp lib/libi2c.so.0.1.1  /usr/lib/libi2c.so.0

二、通过i2c工具 dump出内存SPD信息

  • 命令 ls /dev/i2c*
  • 在root下使用以下命令
    i2cdetect -y 0:  扫描I2C总线0下挂的设备 SPD由硬件决定内存一般挂在50或51上,由下图可以看出 此次内存挂在50地址上。
    探测I2C设备:

三、dump I2C设备寄存器

root下使用以下命令

i2cdump -f -y 0 0x50  : dump设备地址0x50的芯片寄存器 SPD内容

四、根据SPD计算相应内存频率

通过0x11地址的字节 可得该内存的粗细精度 相应的周期还需要根据 0x12以及0x7d的数据进行计算。

 

下图 其他关于时间的位和粗细精度的时间转

根据上图byte18:0x07       byte125: 0xd6

则周期计算过程为(7*0.125)+(-42*0.001)=0.833ns(1s/0.833ns)*2为该内存相应频率

算出结果:1200,因ddr4 采用双边沿采样,实际频率也就是2400,即可与内存条上面频率进行对比,判定内存是否与标签纸上是否一致。