WeHack BBS
ProDesk 400 G3 DM 尝试移植 coreboot 失败 - 可打印的版本

+- WeHack BBS (https://bbs.wehack.space)
+-- 版块: 计算机技术 (https://bbs.wehack.space/forum-5.html)
+--- 版块: 固件技术讨论区 (https://bbs.wehack.space/forum-8.html)
+--- 主题: ProDesk 400 G3 DM 尝试移植 coreboot 失败 (/thread-178.html)



ProDesk 400 G3 DM 尝试移植 coreboot 失败 - vimacs - 08-29-2020

我去年买了个 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 拆下,并重新写入原厂固件,终于恢复了这台机器。


RE: ProDesk 400 G3 DM 尝试移植 coreboot 失败 - shangyatsen - 08-30-2020

我也在尝试给 800 G1 DM移植coreboot。使用autoport,修复了编译错误后简单编译了一个固件,启动4代CPU postcode卡3b。换上5代并且AltDisable ME之后卡02。flash rom日志读回后显示System Agent似乎初始化完成。这个板子也用了定制版的ncpd379,没有手册...


RE: ProDesk 400 G3 DM 尝试移植 coreboot 失败 - vimacs - 08-30-2020

(08-30-2020, 11:40 AM)shangyatsen 提到: 我也在尝试给 800 G1 DM移植coreboot。使用autoport,修复了编译错误后简单编译了一个固件,启动4代CPU postcode卡3b。换上5代并且AltDisable ME之后卡02。flash rom日志读回后显示System Agent似乎初始化完成。这个板子也用了定制版的ncpd379,没有手册...

这就有意思了。出现postcode应该意味着CPU起来了吧。
看了下代码,post_code(0x3b) 是在 sdram_initialize() 返回之后,说明内存初始化已经跑完了。下一个 POST 是 0x3f,就是 romstage 跑完的地方。
此外,Haswell的mrc.bin里面,进入的时候有POST 0x01,结束的时候有POST 0x02,也就是说POST 0x02意味着mrc.bin运行结束了。

NPCD379 可能和 8300 SFF 的 NPCD378 比较相似,可以参考一下 coreboot 文档的说明。

我从HP官方网站下了份EliteDesk 800 G1和G2的固件,的确没在800 G1找到EC固件,但是G2里面有EC固件并且有Sure Start功能。


RE: ProDesk 400 G3 DM 尝试移植 coreboot 失败 - shangyatsen - 08-30-2020

(08-30-2020, 01:35 PM)vimacs 提到:
(08-30-2020, 11:40 AM)shangyatsen 提到: 我也在尝试给 800 G1 DM移植coreboot。使用autoport,修复了编译错误后简单编译了一个固件,启动4代CPU postcode卡3b。换上5代并且AltDisable ME之后卡02。flash rom日志读回后显示System Agent似乎初始化完成。这个板子也用了定制版的ncpd379,没有手册...

这就有意思了。出现postcode应该意味着CPU起来了吧。
看了下代码,post_code(0x3b) 是在 sdram_initialize() 返回之后,说明内存初始化已经跑完了。下一个 POST 是 0x3f,就是 romstage 跑完的地方。
此外,Haswell的mrc.bin里面,进入的时候有POST 0x01,结束的时候有POST 0x02,也就是说POST 0x02意味着mrc.bin运行结束了。

NPCD379 可能和 8300 SFF 的 NPCD378 比较相似,可以参考一下 coreboot 文档的说明。

我从HP官方网站下了份EliteDesk 800 G1和G2的固件,的确没在800 G1找到EC固件,但是G2里面有EC固件并且有Sure Start功能。
感谢提供了这么多有用的信息。开启了SureStart之后的系列,应该是不能使用coreboot了吧,新的机器都没法玩了。


RE: ProDesk 400 G3 DM 尝试移植 coreboot 失败 - vimacs - 08-30-2020

(08-30-2020, 02:59 PM)shangyatsen 提到: 感谢提供了这么多有用的信息。开启了SureStart之后的系列,应该是不能使用coreboot了吧,新的机器都没法玩了。

也不是,HP Sure Start并没有像Intel Boot Guard那么难破解。


RE: ProDesk 400 G3 DM 尝试移植 coreboot 失败 - vimacs - 08-31-2020

(08-30-2020, 11:40 AM)shangyatsen 提到: 我也在尝试给 800 G1 DM移植coreboot。使用autoport,修复了编译错误后简单编译了一个固件,启动4代CPU postcode卡3b。换上5代并且AltDisable ME之后卡02。flash rom日志读回后显示System Agent似乎初始化完成。这个板子也用了定制版的ncpd379,没有手册...

autoport在mainboard.c里面生成的那段Replaying EC dump那段代码应该都删了吧。
其他的可以看一下日志里面有没有内存信息,mrc.bin跑完之后不表明内存初始化就完成了。