08-29-2020, 09:22 PM
我去年买了个 ProDesk 400 G3 DM,一直没时间研究。最近在其他机器上移植 coreboot 遇到了困难,于是就拿起了这台机器来尝试 coreboot 移植。
从 Skylake 开始,coreboot 就开始使用 FSP. FSP 有大量的选项,有些我也不知道应该设置成什么值,所以我就没有用 autoport,而是学着 X210 的做法,从一个已有的主板开始修改。coreboot 里面有同为 Skylake 桌面平台的 ASRock H110M,于是我就先复制了这份代码,然后开始填入 GPIO, PCIe, USB, SATA, 内存 SPD 地址等数据,至于 GPIO,这台机用的是 Nuvoton NPCD315,我觉得和已经有 coreboot 支持的 HP 台式机 8300 SFF 的 Super I/O 比较相似,于是我在 superiotool 里面加上它,并尝试把所有 LDN 的数据都打出来,找到哪些 LDN 是启用了的,然后写进设备树。
之后就是编译和刷写,问题就在这里出现了。接上电源之后,机器的指示灯不断在闪烁,无法启动机器,看来是这台机器里面有 EC,并且 EC 固件被我破坏了。更麻烦的是,之后用夹子夹上 flash 芯片,也会出现这个现象,说明 EC 被启动了,并且占用了 flash 芯片,使得它无法被访问。
我之后回顾了这个过程,并且检查了原厂固件的内容,发现的确有一份 EC 固件。并且之前用 superiotool 的时候,已经发现有一个 LDN 的 I/O 地址是 0x62,看起来很像 EC,而且 DSDT 里面也有 EC 的出现。当时我以为是 DSDT 里面多写了这些内容,但是结合这些现象,再加上 Super I/O 里面有 EC 设备,可以推断出这个 Super I/O 里面包含了 EC.
最后我还是用风枪和焊台把 flash 拆下,并重新写入原厂固件,终于恢复了这台机器。
从 Skylake 开始,coreboot 就开始使用 FSP. FSP 有大量的选项,有些我也不知道应该设置成什么值,所以我就没有用 autoport,而是学着 X210 的做法,从一个已有的主板开始修改。coreboot 里面有同为 Skylake 桌面平台的 ASRock H110M,于是我就先复制了这份代码,然后开始填入 GPIO, PCIe, USB, SATA, 内存 SPD 地址等数据,至于 GPIO,这台机用的是 Nuvoton NPCD315,我觉得和已经有 coreboot 支持的 HP 台式机 8300 SFF 的 Super I/O 比较相似,于是我在 superiotool 里面加上它,并尝试把所有 LDN 的数据都打出来,找到哪些 LDN 是启用了的,然后写进设备树。
之后就是编译和刷写,问题就在这里出现了。接上电源之后,机器的指示灯不断在闪烁,无法启动机器,看来是这台机器里面有 EC,并且 EC 固件被我破坏了。更麻烦的是,之后用夹子夹上 flash 芯片,也会出现这个现象,说明 EC 被启动了,并且占用了 flash 芯片,使得它无法被访问。
我之后回顾了这个过程,并且检查了原厂固件的内容,发现的确有一份 EC 固件。并且之前用 superiotool 的时候,已经发现有一个 LDN 的 I/O 地址是 0x62,看起来很像 EC,而且 DSDT 里面也有 EC 的出现。当时我以为是 DSDT 里面多写了这些内容,但是结合这些现象,再加上 Super I/O 里面有 EC 设备,可以推断出这个 Super I/O 里面包含了 EC.
最后我还是用风枪和焊台把 flash 拆下,并重新写入原厂固件,终于恢复了这台机器。