手动修了波内存SPD
说,今天尝试编译新路由固件的时候(之后再说这个破事……),发现内存居然不够;仔细一看,居然只有16GB?还说只有一条内存条?我当初明明买了 2x16GB啊…… 进BIOS一看,好家伙,48GB内存…… 有一条内存居然变成了32GB。当然,内存不会白白变大,Windows应该是机智地发现了这个问题,只用了另一条…… 用一些软件(例如CPU-Z)读取内存信息,好消息是另一条内存还能读出来,坏消息是数据略微乱七八糟,比如说变成了32GB啦,序列号乱七八糟啦,牌子变成了奇怪的牌子啦,等等…… 其实 SPD 信息损坏倒不是啥新闻,我倒是早就知道这些 SPD 有问题,原因应该就是刚买来没多久折腾 OpenRGB 搞的。根本来说这是个 race condition:OpenRGB 尝试控制内存的 RGB(选择 RGB 控制器地址并写入),而同时另一个程序,例如 HWINFO64,可能会尝试访问内存 SPD(选择 SPD 地址并读取)。这俩如果混一起,那可能就会变成“选择 SPD 地址并写入”,就可能会损坏 SPD…… 然而我之前只记得这货好像损坏了 XMP Profile 和内存信息,但是基本上还能用。这次一看,坏了不少的位置…… 当然,运气还行,毕竟还有一条基本一样的内存还能用。但是,另一条SPD其实也有损坏,只是恰好没损坏到重要部分…… 修复方面嘛,主要是使用了 SPD RW 这个工具(https://github.com/1a2m3/SPD-Reader-Writer)。这货一开始我以为只能用Arduino,所以还找了别的工具,例如Thaiphoon Burner,然而那货不但卖钱,还倒闭了没法买…… 但是之后发现其实 SPD RW 可以直接跑 SMBus,于是就拿来把两边先读出来,然后对照 DDR5 SPD 格式资料(https://github.com/edlf/DDRXMPEditor/blob/main/DDR5SPD/DDR5_SPD.cs),以及某人贴出来的另一条类似内存的SPD(https://www.reddit.com/r/overclocking/comments/1f1d2i4/looking_for_team_group_tforce_vulcan_ddr55600_32/),基本上把SPD的前面一半改对了(后面一半是 XMP 数据 )。之后,再把改完的 SPD 写回去重启,另外的 16GB 就又回来了…… 剩下的事情嘛,包括 反正姑且算是抢救回来了…… 这个事情告诉我们,OpenRGB 的内存光效控制非常危险,用的话至少一定要记得把 BIOS …