内存出厂默认频率的获取
在项目中遇到固件自动将2400的内存条自动超频至2666,从setup界面查看内存频率,也是2666。为此需要从SPD中计算出内存出厂时默认的频率。
1. 安装I2C tool:
apt install i2c-tools //安装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;
2. 查看OS下是否有I2C设备节点
ls /dev/i2c //探测I2C设备:在root下使用以下命令
i2cdetect -y 0: //扫描I2C总线0下挂的设备 SPD由硬件决定内存一般挂在50或51上,由下图可以看出 此次内存挂在50地址上。
3. dump I2C设备寄存器
root下使用以下命令
i2cdump -f -y 0 0x50 : dump设备地址0x50的芯片寄存器 SPD内容.
4. 根据SPD计算相应内存频率
通过0x11地址的字节 可得该内存的粗细精度 相应的周期还需要根据 0x12以及0x7d的数据进行计算。
其他关于时间的位和粗细精度的时间转换
根据上图寄存器对应字节地址数据为
byte18为0x07
byte125为0xd6
则周期计算过程为(70.125)+(-420.001)=0.833ns
(1s/0.833ns)*2为该内存相应频率