WeHack BBS
[讨论] 如何移植coreboot到Skylake及更新的Intel主板? - 可打印的版本

+- WeHack BBS (https://bbs.wehack.space)
+-- 版块: 计算机技术 (https://bbs.wehack.space/forum-5.html)
+--- 版块: 固件技术讨论区 (https://bbs.wehack.space/forum-8.html)
+--- 主题: [讨论] 如何移植coreboot到Skylake及更新的Intel主板? (/thread-322.html)

页: 1 2 3 4 5


RE: [讨论] 如何移植coreboot到Skylake及更新的Intel主板? - 维格纳朋友 - 02-09-2023

(02-08-2023, 04:25 PM)vimacs 提到:
(02-08-2023, 04:01 PM)维格纳朋友 提到: 首先得编译通过,然而我现在还在编译报错,令人感慨😭
我发现h81没有acpi_tables.c,而生成的文件里有,是不是这玩意也被弃用了?

没有被弃用,但是可以不用,看起来也不太需要。

编译后无法启动。
机器上有个JCOM1口,连上TTL之后终端乱码。


RE: [讨论] 如何移植coreboot到Skylake及更新的Intel主板? - vimacs - 02-09-2023

(02-09-2023, 12:43 AM)维格纳朋友 提到:
(02-08-2023, 04:25 PM)vimacs 提到:
(02-08-2023, 04:01 PM)维格纳朋友 提到: 首先得编译通过,然而我现在还在编译报错,令人感慨😭
我发现h81没有acpi_tables.c,而生成的文件里有,是不是这玩意也被弃用了?

没有被弃用,但是可以不用,看起来也不太需要。

编译后无法启动。
机器上有个JCOM1口,连上TTL之后终端乱码。

确定串口接对了吗,在原厂固件正常使用的时候能不能用这个串口通信?还有,coreboot默认配置的串口波特率是115200.


RE: [讨论] 如何移植coreboot到Skylake及更新的Intel主板? - 维格纳朋友 - 02-09-2023

(02-09-2023, 08:05 PM)vimacs 提到:
(02-09-2023, 12:43 AM)维格纳朋友 提到:
(02-08-2023, 04:25 PM)vimacs 提到:
(02-08-2023, 04:01 PM)维格纳朋友 提到: 首先得编译通过,然而我现在还在编译报错,令人感慨😭
我发现h81没有acpi_tables.c,而生成的文件里有,是不是这玩意也被弃用了?

没有被弃用,但是可以不用,看起来也不太需要。

编译后无法启动。
机器上有个JCOM1口,连上TTL之后终端乱码。

确定串口接对了吗,在原厂固件正常使用的时候能不能用这个串口通信?还有,coreboot默认配置的串口波特率是115200.

查了定义,应该是对的。
PCI诊断卡没用。
我只能去淘宝买块TPM诊断卡看看能不能用。


RE: [讨论] 如何移植coreboot到Skylake及更新的Intel主板? - 维格纳朋友 - 02-10-2023

(02-09-2023, 08:05 PM)vimacs 提到: 确定串口接对了吗,在原厂固件正常使用的时候能不能用这个串口通信?还有,coreboot默认配置的串口波特率是115200.
搞错了,我用TTL接了,说是要用RS232。
找了RS232,能输出LOG了。
代码:
[NOTE ]  coreboot-c4972828-dirty Thu Feb 09 10:31:09 UTC 2023 x86_32 bootblock starting (log level: 7)...
[INFO ]  Timestamp - end of bootblock: 368168045
[INFO ]  Timestamp - starting to load romstage: 385694277
[DEBUG]  FMAP: Found "FLASH" version 1.1 at 0xe50000.
[DEBUG]  FMAP: base = 0xff000000 size = 0x1000000 #areas = 5
[DEBUG]  FMAP: area COREBOOT found @ e50200 (1768960 bytes)
[INFO ]  CBFS: mcache @0xff7c2e00 built for 16 files, used 0x358 of 0x4000 bytes
[INFO ]  CBFS: Found 'fallback/romstage' @0x80 size 0xe848 in mcache @0xff7c2e2c
[INFO ]  Timestamp - finished loading romstage: 521970575
[DEBUG]  BS: bootblock times (exec / console): total (unknown) / 60 ms


[NOTE ]  coreboot-c4972828-dirty Thu Feb 09 10:31:09 UTC 2023 x86_32 romstage starting (log level: 7)...
[DEBUG]  Disabling Watchdog reboot... done.
[DEBUG]  SMBus controller enabled
[DEBUG]  Setting up static northbridge registers... done.
[DEBUG]  Started PEG10 link training.
[DEBUG]  Temporarily hiding PEG10.
[DEBUG]  Initializing IGD...
[DEBUG]  Back from haswell_early_initialization()
[DEBUG]  CPU id(306c3) ucode:00000028 Intel(R) Core(TM) i3-4150 CPU @ 3.50GHz
[DEBUG]  AES supported, TXT NOT supported, VT supported
[DEBUG]  PCH type: B85, device id: 8c50, rev id 5
[INFO ]  Timestamp - before RAM initialization: 776825875
[DEBUG]  Starting UEFI PEI System Agent
[DEBUG]  FMAP: area RW_MRC_CACHE found @ e00000 (65536 bytes)
[NOTE ]  MRC: no data in 'RW_MRC_CACHE'
[DEBUG]  FMAP: area COREBOOT found @ e50200 (1768960 bytes)
[WARN ]  CBFS: 'mrc.bin' not found.
[EMERG]  UEFI PEI System Agent not found.
mrc.bin是必要的吗?
代码:
cd ~/coreboot

make -C util/cbfstool

cd util/chromeos

./crosfirmware.sh peppy

../cbfstool/cbfstool coreboot-*.bin extract -f mrc.bin -n mrc.bin -r RO_SECTION

mv mrc.bin ~/t4/mrc.bin
获取了mrc.bin
代码:
[NOTE ]  coreboot-4.19-392-gbcc9879151 Fri Feb 10 08:28:49 UTC 2023 x86_32 bootblock starting (log level: 7)...
[DEBUG]  FMAP: Found "FLASH" version 1.1 at 0xe10000.
[DEBUG]  FMAP: base = 0xff000000 size = 0x1000000 #areas = 4
[DEBUG]  FMAP: area COREBOOT found @ e10200 (2031104 bytes)
[INFO ]  CBFS: mcache @0xff7c2e00 built for 17 files, used 0x398 of 0x4000 bytes
[INFO ]  CBFS: Found 'fallback/romstage' @0x80 size 0xc7c8 in mcache @0xff7c2e2c
[DEBUG]  BS: bootblock times (exec / console): total (unknown) / 44 ms


[NOTE ]  coreboot-4.19-392-gbcc9879151 Fri Feb 10 08:28:49 UTC 2023 x86_32 romstage starting (log level: 7)...
[DEBUG]  Disabling Watchdog reboot... done.
[DEBUG]  SMBus controller enabled
[DEBUG]  Setting up static northbridge registers... done.
[DEBUG]  Started PEG10 link training.
[DEBUG]  Temporarily hiding PEG10.
[DEBUG]  Initializing IGD...
[DEBUG]  Back from haswell_early_initialization()
[DEBUG]  CPU id(306c3) ucode:00000028 Intel(R) Core(TM) i3-4150 CPU @ 3.50GHz
[DEBUG]  AES supported, TXT NOT supported, VT supported
[DEBUG]  PCH type: B85, device id: 8c50, rev id 5
[DEBUG]  Starting UEFI PEI System Agent
[DEBUG]  FMAP: area RW_MRC_CACHE found @ e00000 (65536 bytes)
[NOTE ]  MRC: no data in 'RW_MRC_CACHE'
[DEBUG]  FMAP: area COREBOOT found @ e10200 (2031104 bytes)
[INFO ]  CBFS: Found 'mrc.bin' @0x18fdc0 size 0x2e6e4 in mcache @0xff7c3114
System Agent: Starting up...
System Agent: Initializing PCH
install_ppi: overwrite GUID {ed097352-9041-445a-80b6-b29d509e8845}
install_ppi: overwrite GUID {908c7f8b-5c48-47fb-8357-f5fd4e235276}
System Agent: Initializing PCH (SMBUS)
System Agent: Initializing PCH (USB)
System Agent: Initializing PCH (SA Init)
System Agent: Initializing PCH (Me UMA)
System Agent: Initializing Memory
System Agent: Done.
Sanity checking heap.
[DEBUG]  MRC Version 1.6.1 Build 2
[EMERG]  Memory controller did not acknowledge raminit.
[EMERG]  MRC raminit failed

但是内存控制器还是初始化失败。
我看人家的MRC似乎也是这个版本。
https://www.mail-archive.com/coreboot@coreboot.org/msg52957.html

https://github.com/daiaji/coreboot_b85m-e45
代码传github了。

有什么点子吗?


RE: [讨论] 如何移植coreboot到Skylake及更新的Intel主板? - vimacs - 02-11-2023

(02-10-2023, 10:40 PM)维格纳朋友 提到:
代码:
[NOTE ]  coreboot-4.19-392-gbcc9879151 Fri Feb 10 08:28:49 UTC 2023 x86_32 bootblock starting (log level: 7)...
[DEBUG]  FMAP: Found "FLASH" version 1.1 at 0xe10000.
[DEBUG]  FMAP: base = 0xff000000 size = 0x1000000 #areas = 4
[DEBUG]  FMAP: area COREBOOT found @ e10200 (2031104 bytes)
[INFO ]  CBFS: mcache @0xff7c2e00 built for 17 files, used 0x398 of 0x4000 bytes
[INFO ]  CBFS: Found 'fallback/romstage' @0x80 size 0xc7c8 in mcache @0xff7c2e2c
[DEBUG]  BS: bootblock times (exec / console): total (unknown) / 44 ms


[NOTE ]  coreboot-4.19-392-gbcc9879151 Fri Feb 10 08:28:49 UTC 2023 x86_32 romstage starting (log level: 7)...
[DEBUG]  Disabling Watchdog reboot... done.
[DEBUG]  SMBus controller enabled
[DEBUG]  Setting up static northbridge registers... done.
[DEBUG]  Started PEG10 link training.
[DEBUG]  Temporarily hiding PEG10.
[DEBUG]  Initializing IGD...
[DEBUG]  Back from haswell_early_initialization()
[DEBUG]  CPU id(306c3) ucode:00000028 Intel(R) Core(TM) i3-4150 CPU @ 3.50GHz
[DEBUG]  AES supported, TXT NOT supported, VT supported
[DEBUG]  PCH type: B85, device id: 8c50, rev id 5
[DEBUG]  Starting UEFI PEI System Agent
[DEBUG]  FMAP: area RW_MRC_CACHE found @ e00000 (65536 bytes)
[NOTE ]  MRC: no data in 'RW_MRC_CACHE'
[DEBUG]  FMAP: area COREBOOT found @ e10200 (2031104 bytes)
[INFO ]  CBFS: Found 'mrc.bin' @0x18fdc0 size 0x2e6e4 in mcache @0xff7c3114
System Agent: Starting up...
System Agent: Initializing PCH
install_ppi: overwrite GUID {ed097352-9041-445a-80b6-b29d509e8845}
install_ppi: overwrite GUID {908c7f8b-5c48-47fb-8357-f5fd4e235276}
System Agent: Initializing PCH (SMBUS)
System Agent: Initializing PCH (USB)
System Agent: Initializing PCH (SA Init)
System Agent: Initializing PCH (Me UMA)
System Agent: Initializing Memory
System Agent: Done.
Sanity checking heap.
[DEBUG]  MRC Version 1.6.1 Build 2
[EMERG]  Memory controller did not acknowledge raminit.
[EMERG]  MRC raminit failed

但是内存控制器还是初始化失败。
我看人家的MRC似乎也是这个版本。
https://www.mail-archive.com/coreboot@coreboot.org/msg52957.html

https://github.com/daiaji/coreboot_b85m-e45
代码传github了。

有什么点子吗?

mrc.bin 应该是对的,内存控制器初始化失败的原因我想不出来。如果让我来调这个的话,我会怀疑到 mb_get_spd_map 的配置上,先查一下单条内存启动的情况。
以前我改过的一个 mrc 可以打一些调试信息(例如SPD)出来。还没合并的 Haswell native raminit 也能打一些调试信息 (https://review.coreboot.org/c/coreboot/+/64183)。


RE: [讨论] 如何移植coreboot到Skylake及更新的Intel主板? - 维格纳朋友 - 02-11-2023

(02-11-2023, 11:06 AM)vimacs 提到: mrc.bin 应该是对的,内存控制器初始化失败的原因我想不出来。如果让我来调这个的话,我会怀疑到 mb_get_spd_map 的配置上,先查一下单条内存启动的情况。
以前我改过的一个 mrc 可以打一些调试信息(例如SPD)出来。还没合并的 Haswell native raminit 也能打一些调试信息 (https://review.coreboot.org/c/coreboot/+/64183)。

https://www.bilibili.com/read/cv14532476
b站这篇文章说似乎内存通道有着奇怪的映射。(感觉也有点怪,理由同下。)
https://doc.coreboot.org/northbridge/intel/haswell/mrc.bin.html
文档这边说是mrc这边要修正地址。
我把0x50改成0xa0了,没啥用。(老实说我觉得这个不太可能,H81的移植我感觉他至少应该自己跑过,而且按照惯例应该也是0x50)
我自己的怀疑是,可能不支持我用的骇客神条。
不管怎么样这种二进制黑盒是真的蚌埠住。
我根本不知道发生了啥。
我打算带点其他的内存条。
我现在只插了一条,地址就是0x50。
Haswell native raminit 现在能用了吗?
好像有人在做ME的原生实现?
原生实现的内存控制器能否让不支持ECC的平台支持ECC?
实际上mrc的逆向完成了有段时间了吧。


RE: [讨论] 如何移植coreboot到Skylake及更新的Intel主板? - vimacs - 02-11-2023

(02-11-2023, 11:47 AM)维格纳朋友 提到:
(02-11-2023, 11:06 AM)vimacs 提到: mrc.bin 应该是对的,内存控制器初始化失败的原因我想不出来。如果让我来调这个的话,我会怀疑到 mb_get_spd_map 的配置上,先查一下单条内存启动的情况。
以前我改过的一个 mrc 可以打一些调试信息(例如SPD)出来。还没合并的 Haswell native raminit 也能打一些调试信息 (https://review.coreboot.org/c/coreboot/+/64183)。

https://www.bilibili.com/read/cv14532476
b站这篇文章说似乎内存通道有着奇怪的映射。(感觉也有点怪,理由同下。)
https://doc.coreboot.org/northbridge/intel/haswell/mrc.bin.html
文档这边说是mrc这边要修正地址。
我把0x50改成0xa0了,没啥用。(老实说我觉得这个不太可能,H81的移植我感觉他至少应该自己跑过,而且按照惯例应该也是0x50)
我自己的怀疑是,可能不支持我用的骇客神条。
不管怎么样这种二进制黑盒是真的蚌埠住。
我根本不知道发生了啥。
我打算带点其他的内存条。
我现在只插了一条,地址就是0x50。
Haswell native raminit 现在能用了吗?
好像有人在做ME的原生实现?
原生实现的内存控制器能否让不支持ECC的平台支持ECC?
实际上mrc的逆向完成了有段时间了吧。

不需要修正地址,这个是很早时候的事了。
native raminit 你需要问一下它的作者,他应该是社区最熟悉 Haswell 平台的人了。
ECC 的支持需要主板同时实现,因为 ECC 需要板子上引出做数据纠错的线路,普通主板应该没有。

https://review.coreboot.org/q/topic:haswell-nri


RE: [讨论] 如何移植coreboot到Skylake及更新的Intel主板? - 维格纳朋友 - 02-11-2023

(02-11-2023, 01:08 PM)vimacs 提到:
(02-11-2023, 11:47 AM)维格纳朋友 提到:
(02-11-2023, 11:06 AM)vimacs 提到: mrc.bin 应该是对的,内存控制器初始化失败的原因我想不出来。如果让我来调这个的话,我会怀疑到 mb_get_spd_map 的配置上,先查一下单条内存启动的情况。
以前我改过的一个 mrc 可以打一些调试信息(例如SPD)出来。还没合并的 Haswell native raminit 也能打一些调试信息 (https://review.coreboot.org/c/coreboot/+/64183)。

https://www.bilibili.com/read/cv14532476
b站这篇文章说似乎内存通道有着奇怪的映射。(感觉也有点怪,理由同下。)
https://doc.coreboot.org/northbridge/intel/haswell/mrc.bin.html
文档这边说是mrc这边要修正地址。
我把0x50改成0xa0了,没啥用。(老实说我觉得这个不太可能,H81的移植我感觉他至少应该自己跑过,而且按照惯例应该也是0x50)
我自己的怀疑是,可能不支持我用的骇客神条。
不管怎么样这种二进制黑盒是真的蚌埠住。
我根本不知道发生了啥。
我打算带点其他的内存条。
我现在只插了一条,地址就是0x50。
Haswell native raminit 现在能用了吗?
好像有人在做ME的原生实现?
原生实现的内存控制器能否让不支持ECC的平台支持ECC?
实际上mrc的逆向完成了有段时间了吧。

不需要修正地址,这个是很早时候的事了。
native raminit 你需要问一下它的作者,他应该是社区最熟悉 Haswell 平台的人了。
ECC 的支持需要主板同时实现,因为 ECC 需要板子上引出做数据纠错的线路,普通主板应该没有。

https://review.coreboot.org/q/topic:haswell-nri
h81也是他移植的,但他并没有回我邮件。


RE: [讨论] 如何移植coreboot到Skylake及更新的Intel主板? - 维格纳朋友 - 02-11-2023

(02-11-2023, 01:08 PM)vimacs 提到: native raminit 你需要问一下它的作者,他应该是社区最熟悉 Haswell 平台的人了。
ECC 的支持需要主板同时实现,因为 ECC 需要板子上引出做数据纠错的线路,普通主板应该没有。

https://review.coreboot.org/q/topic:haswell-nri
Ivy Bridge的支持会更好吧?
native raminit能用吗?
微码也不用吧?
说是按照平台自动生成。

PS:我的猜测是正确的,mb_get_spd_map配置没有问题。
就是mrc.bin的内存兼容性太差了。
1600Mhz 8G的条子不能启动。
太垃圾了。
换了其他的内存。
1333Mhz和1600Mhz的4G条子就能启动。
太垃圾了。

我也没有其他的8G内存。
只能等4代的原生内存控制器搞好了再接着调试了。
先移植B75好了。
看看原生内存控制器能不能兼容这内存条。
代码:
sudo inxi -m
Memory:
 RAM: total: 15.58 GiB used: 1.26 GiB (8.1%)
 Array-1: capacity: 32 GiB slots: 4 EC: None
 Device-1: Channel-0-DIMM-0 type: DDR3 size: 4 GiB speed: 2666 MT/s
 Device-2: Channel-0-DIMM-1 type: DDR3 size: 4 GiB speed: 2666 MT/s
 Device-3: Channel-1-DIMM-0 type: DDR3 size: 4 GiB speed: 2666 MT/s
 Device-4: Channel-1-DIMM-1 type: DDR3 size: 4 GiB speed: 2666 MT/s

代码:
sudo inxi -m
Memory:
 RAM: total: 11.64 GiB used: 1.12 GiB (9.6%)
 Array-1: capacity: 32 GiB slots: 4 EC: None
 Device-1: Channel-0-DIMM-0 type: DDR3 size: 4 GiB speed: 3200 MT/s
 Device-2: Channel-0-DIMM-1 type: DDR3 size: 4 GiB speed: 3200 MT/s
 Device-3: Channel-1-DIMM-0 type: DDR3 size: 4 GiB speed: 3200 MT/s



RE: [讨论] 如何移植coreboot到Skylake及更新的Intel主板? - 维格纳朋友 - 02-12-2023

代码:
make
Updating git submodules.
    SCONFIG    mainboard/msi/b75a-ie35/devicetree.cb
ERROR: Unable to find device reference echi2
make: *** [Makefile.inc:638: build/mainboard/msi/b75a-ie35/static.c] Error 1
B75A-IE35的一些编译错误。
貌似是设备树的问题。
咋修啊?
https://github.com/daiaji/coreboot