(02-08-2023, 11:31 AM)vimacs 提到:(02-08-2023, 11:25 AM)维格纳朋友 提到:(02-08-2023, 11:17 AM)vimacs 提到:那到这一步,移植是已经做完了。(02-08-2023, 10:57 AM)维格纳朋友 提到: 如果superiotool正常工作,大概superio的部分也会被正常生成。
老实说这个状态,感觉开发者可以用SSH直接远程调试。
romstage.c里的void mainboard_config_superio并没有被正常配置。
注释掉就好了吧?
设备树那边用h81m-p33设备树里的
直接换掉生成的代码:chip superio/nuvoton/nct6779d
device pnp 4e.1 off end # Parallel
device pnp 4e.2 on # UART A
io 0x60 = 0x3f8
irq 0x70 = 4
end
device pnp 4e.3 off end # UART B, IR
device pnp 4e.5 on # Keyboard
io 0x60 = 0x60
io 0x62 = 0x64
irq 0x70 = 1
irq 0x72 = 12
end
device pnp 4e.6 off end # CIR
device pnp 4e.7 off end # GPIO6-8
device pnp 4e.8 off end # WDT1, GPIO0, GPIO1
device pnp 4e.108 on end # GPIO0
device pnp 4e.9 off end # GPIO1-8
device pnp 4e.109 off end # GPIO1
device pnp 4e.209 off end # GPIO2
device pnp 4e.309 off end # GPIO3
device pnp 4e.409 off end # GPIO4
device pnp 4e.509 off end # GPIO5
device pnp 4e.609 off end # GPIO6
device pnp 4e.709 off end # GPIO7
device pnp 4e.a on end # ACPI
device pnp 4e.b on # H/W Monitor, FP LED
io 0x60 = 0x290
io 0x62 = 0
irq 0x70 = 0
end
device pnp 4e.d off end # WDT1
device pnp 4e.e off end # CIR Wake-up
device pnp 4e.f off end # Push-pull/Open-drain
device pnp 4e.14 off end # Port 80 UART
device pnp 4e.16 off end # Deep Sleep
end
?代码:subsystemid 0x1462 0x7817
autoport 没有生成 superio 代码的功能,这块还是要自己做。
h81m-p33 的 superio 初始化是在 bootblock.c 的 mainboard_config_superio 实现的,目的是把串口打开,从而可以利用串口获取调试信息。而 devicetree.cb 里面的 superio 是 ramstage 初始化 superio 用的,属于后续细化的操作。
h81m-p33 的 lpc 下面没有 subsystemid 这行,是因为它的 devicetree.cb 在 "device domain 0 on" 那行下面已经有一行 "subsystemid 0x1462 0x7817 inherit", 所以下面节点相同 subsystemid 的那些 "subsystemid 0x1462 0x7817" 都可以省略掉,你可以考虑做相同的简化。“chip superio/nuvoton/nct6779d” 这整块代码的确可以直接贴到 LPC 下,也就是 “device pci 1f.0 on” 这个节点。
剩下的是帮superiotool debug吧。
你先把代码编译通过,把 coreboot 刷到主板的 flash (记得备份原有的flash的内容),看到主板正常启动才叫把移植做完。
debug superiotool 的事是另一个工作。
BIOS之前已经搞挂过了。
me_cleaner然后用BIOS自带的M-FLASH刷,刷挂了。
等了一两天的微星JSPI线,才刷回去。
官网下载的BIOS刷回去可以用。
BIOS芯片里DUMP出来的二进制文件和官网下载的BIOS比有什么区别吗?
superio.asl里还有
代码:
/* SPDX-License-Identifier: GPL-2.0-only */
#include <drivers/pc80/pc/ps2_controller.asl>
看起来是初始化PS2控制器,B85也有PS2口。