04-04-2021, 09:56 PM
我有一台Chromebook Pro ( SAMSUNG XE510C24, 设备代号 Caroline ,谷歌主板代号 Glados) ,奈何 4GB 的运行内存在 Windows 下实在力不从心,遂寻找升级内存的办法
因为 Chromebook 本身依靠 coreboot 引导,甚至可以在 Chromium OS 的 Git 存储库上看到三星开发人员的提交
caroline: Adding SPD table for Samsung K4EBE304EB-EGCG (I11a1a2fc) · Gerrit Code Review (googlesource.com)
但似乎仅仅在 makefile.inc 增加了新的 spd hex 文件
升级板载内存的话,51NB 就曾有人对 XPS 板载的 DDR4 颗粒进行了更换并取得成功
Chromebook Pro 同样有Core M7 + 16GB 的高配版本,虽然很罕见,但的确存在,
还有人在 reddit 上发帖表示刷了 MrChromebox 固件( coreboot 的定制版)并且成功运行 windows
我目前使用的是完全相同的固件
唯一不确定的,就是有说法称部分厂商会使用电阻对 SPD 进行配置
但我觉得,既然 Coreboot 是开源固件,如果有这样的识别配置,也一定可以通过修改源代码来让大容量的 SPD 识别
刚接触C,也不知天高地厚去看源码,然后就晕了
实在是代码新手,如果有任何不对的地方还请见谅
我不太明白的是
src/mainboard/google/glados/variants/caroline/Makefile.inc - coreboot - Gitiles
src/mainboard/google/glados/variants/caroline/variant.c - coreboot - Gitiles
src/mainboard/google/glados/spd/spd.c - coreboot - Gitiles
makefile.inc 决定了哪些型号的内存颗粒的 SPD hex 文件将会被编译成 spd.bin 进而编译进固件中
在 caroline 的 variant.c 的确有 gpio 配置来决定 spd_index 的值
但似乎并没有被内存初始化函数调用(或者是我太菜没看出来)
然后 CBFS 对 spd.bin 的操作也没看懂
但是内存初始化大部分似乎都被 Intel FSP 承担了
至于 DQByte MAPS 部分的话,版主发的 Intel FSP leak 刚好 leak 的是 skylake 平台的
Chromebook Pro 的处理器是 M3 6Y30
里面还正好有内存初始化的部分代码
虽然我的 Chromebook 是 Skylake 的 CoreM,但也算是对应上了
虽然文档里面有提及Memory Reference Code (MRC) 里面的 DQByte MAPS 和 Rcomp resistor
但还是看不懂,尤其是不知道 Rcomp resistor 是不是所谓配置内存的电阻
这个问题归根到底
Coreboot 的内存初始化流程是怎样的?
对于没有外置 SPD EEPROM的板载内存颗粒谁负责了容量、时序,频率的识别?Intel FSP 还是 SPD hex 文件?
Rcomp resistor 和 DQByte MAPS到底是什么?电阻/GPIO 对内存频率,时序,容量的配置是否存在?
修改 SPD Hex 文件能否起到使大容量内存被识别的作用?
( Chromebook 几乎不可能找到硬件电路图 / 原理图,只能寄希望于对 Coreboot 的修改)
因为 Chromebook 本身依靠 coreboot 引导,甚至可以在 Chromium OS 的 Git 存储库上看到三星开发人员的提交
caroline: Adding SPD table for Samsung K4EBE304EB-EGCG (I11a1a2fc) · Gerrit Code Review (googlesource.com)
但似乎仅仅在 makefile.inc 增加了新的 spd hex 文件
升级板载内存的话,51NB 就曾有人对 XPS 板载的 DDR4 颗粒进行了更换并取得成功
Chromebook Pro 同样有Core M7 + 16GB 的高配版本,虽然很罕见,但的确存在,
还有人在 reddit 上发帖表示刷了 MrChromebox 固件( coreboot 的定制版)并且成功运行 windows
我目前使用的是完全相同的固件
唯一不确定的,就是有说法称部分厂商会使用电阻对 SPD 进行配置
但我觉得,既然 Coreboot 是开源固件,如果有这样的识别配置,也一定可以通过修改源代码来让大容量的 SPD 识别
刚接触C,也不知天高地厚去看源码,然后就晕了
实在是代码新手,如果有任何不对的地方还请见谅
我不太明白的是
src/mainboard/google/glados/variants/caroline/Makefile.inc - coreboot - Gitiles
src/mainboard/google/glados/variants/caroline/variant.c - coreboot - Gitiles
src/mainboard/google/glados/spd/spd.c - coreboot - Gitiles
makefile.inc 决定了哪些型号的内存颗粒的 SPD hex 文件将会被编译成 spd.bin 进而编译进固件中
在 caroline 的 variant.c 的确有 gpio 配置来决定 spd_index 的值
但似乎并没有被内存初始化函数调用(或者是我太菜没看出来)
然后 CBFS 对 spd.bin 的操作也没看懂
但是内存初始化大部分似乎都被 Intel FSP 承担了
至于 DQByte MAPS 部分的话,版主发的 Intel FSP leak 刚好 leak 的是 skylake 平台的
Chromebook Pro 的处理器是 M3 6Y30
里面还正好有内存初始化的部分代码
虽然我的 Chromebook 是 Skylake 的 CoreM,但也算是对应上了
虽然文档里面有提及Memory Reference Code (MRC) 里面的 DQByte MAPS 和 Rcomp resistor
但还是看不懂,尤其是不知道 Rcomp resistor 是不是所谓配置内存的电阻
这个问题归根到底
Coreboot 的内存初始化流程是怎样的?
对于没有外置 SPD EEPROM的板载内存颗粒谁负责了容量、时序,频率的识别?Intel FSP 还是 SPD hex 文件?
Rcomp resistor 和 DQByte MAPS到底是什么?电阻/GPIO 对内存频率,时序,容量的配置是否存在?
修改 SPD Hex 文件能否起到使大容量内存被识别的作用?
( Chromebook 几乎不可能找到硬件电路图 / 原理图,只能寄希望于对 Coreboot 的修改)