On 05/30/2014 09:19 PM, Mark C. Mason wrote:
We are bringing up a modified IMB-A180 design, and coreboot appears
to be running off the rails (resets to 0xfffffff0 consistently).
There is only one dimm in the 0 socket, so NUMBER_DIMMS_SUPPORTED
is 1 in buildOpts.c, and devicetree.cb has only i2c address 0xA0.
This appears to work.
There is no superIO, and hence no serial port (yet; I will add a USB
based debugger soon),
and this has been removed from devicetree.cb.
I'm in the process of finding and mapping all the post codes, but
any wisdom from the community would be appreciated at this point.
The post codes are below; it appears to be getting pretty far along
(though I am
new to coreboot and this may be optimistic).
The questions I have are:
- what is going on at the end?
- has dimm memory been successfully configured and is in use?
- should the vga console be functional at this time? (no sign of
life there)
It always resets to 0xfffffff0 at the same point at the end of the post
codes.
Thanks in advance,
Mark Mason
Engineering Design Team
0004600 55 64 e2 e3 65 ab e2 e3 e6 e7 cd ff e2 e3 ce e6
0004620 e6 e6 e7 ec e2 e3 ed e6 e7 b8 cf e6 e7 e4 e4 e5
0004640 e4 e5 9b 9c 9e 9d 7a 7b f8
0004651
Decode the last three with this:
src/include/console/post_codes.h
Seems to be loading and jumping to payload. Note that some payloads
configurations will hit watchdog and reset in 60 seconds if they cannot
find boot media.
You can apply the attached patch as a quick hack I recently made to send
coreboot console text to IO port 0x3f8 without any actual UART hardware.
If necessary, you can also disable any POST displays in menuconfig, and
change this patch to use IO 0x80. But listening on IO 0x3f8 may give you
output from payload too.
I'd recommend the USB debug method for any further serious work.
Kyösti
commit 7991583063dade52130b44243d12ecefbb24ff77
Author: Kyösti Mälkki <[email protected]>
Date: Thu May 29 15:19:55 2014 +0300
debugcon
diff --git a/src/console/Kconfig b/src/console/Kconfig
index 51371bc..eb55439 100644
--- a/src/console/Kconfig
+++ b/src/console/Kconfig
@@ -195,7 +195,7 @@ config CONSOLE_CAR_BUFFER_SIZE
config CONSOLE_QEMU_DEBUGCON
bool "QEMU debug console output"
- depends on BOARD_EMULATION_QEMU_X86
+# depends on BOARD_EMULATION_QEMU_X86
default y
help
Send coreboot debug output to QEMU's isa-debugcon device:
@@ -207,7 +207,7 @@ config CONSOLE_QEMU_DEBUGCON
config CONSOLE_QEMU_DEBUGCON_PORT
hex "QEMU debug console port"
depends on CONSOLE_QEMU_DEBUGCON
- default 0x402
+ default 0x3f8
choice
prompt "Default console log level"
diff --git a/src/drivers/emulation/qemu/qemu_debugcon.c b/src/drivers/emulation/qemu/qemu_debugcon.c
index 9c00585..1ede818 100644
--- a/src/drivers/emulation/qemu/qemu_debugcon.c
+++ b/src/drivers/emulation/qemu/qemu_debugcon.c
@@ -23,12 +23,9 @@
#include <arch/io.h>
#include <arch/early_variables.h>
-static int qemu_debugcon_detected CAR_GLOBAL;
-
void qemu_debugcon_init(void)
{
- int detected = (inb(CONFIG_CONSOLE_QEMU_DEBUGCON_PORT) == 0xe9);
- car_set_var(qemu_debugcon_detected, detected);
+ int detected = 1;
printk(BIOS_INFO, "QEMU debugcon %s [port 0x%x]\n",
detected ? "detected" : "not found",
CONFIG_CONSOLE_QEMU_DEBUGCON_PORT);
@@ -36,6 +33,5 @@ void qemu_debugcon_init(void)
void qemu_debugcon_tx_byte(unsigned char data)
{
- if (car_get_var(qemu_debugcon_detected) != 0)
- outb(data, CONFIG_CONSOLE_QEMU_DEBUGCON_PORT);
+ outb(data, CONFIG_CONSOLE_QEMU_DEBUGCON_PORT);
}
--
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot