[U-Boot] FW: U-boot & x86 & coreboot
Rossier Daniel
Daniel.Rossier at heig-vd.ch
Wed Jul 17 23:20:38 CEST 2013
Hi Simon,
> -----Original Message-----
> From: sjg at google.com [mailto:sjg at google.com] On Behalf Of Simon Glass
> Sent: mercredi 17 juillet 2013 17:43
> To: Rossier Daniel
> Cc: u-boot at lists.denx.de
> Subject: Re: [U-Boot] U-boot & x86 & coreboot
>
> Hi Rossier,
>
> On Wed, Jul 17, 2013 at 2:29 AM, Rossier Daniel <Daniel.Rossier at heig-vd.ch>
> wrote:
> Hi,
>
> I would like to run U-boot on x86 emulated QEMU-based environment. I
> found some info regarding coreboot + U-boot integration, using U-boot as
> payload, etc. but I was unable to start U-boot.
> I'm using the 32-bits i686-pc-linux-gnu toolchain and I successfully cross-
> compiled coreboot and started it on qemu-system-i386.
> I also configured coreboot to use u-boot (ELF) as payload, but coreboot
> performs a reset when U-boot should show up after loading.
> Where could I have some information regarding that?
>
> There are post codes generated in x86 U-Boot which might help with
> diagnosing this. I have not tried this on QEMU. But I suppose in that
> environment it might be possible to watch execution and see where it is
> going wrong.
Actually, I was able to dig into further details during the execution.
U-boot is starting its execution, but in early execution in setup_gdt,
the execution of instruction at 0x1111491 leads to a traps (loading 0x18 to %ds).
(see below for details)
I don't really see an issue to execute this instruction.
(gdb) si
0x01111491 in load_ds (segment=3) at cpu.c:61
61 asm volatile("movl %0, %%ds" : : "r" (segment * X86_GDT_ENTRY_SIZE));
(gdb) info reg
eax 0x18 24
ecx 0x19203f20 421543712
edx 0x20 32
ebx 0x19cf9320 433034016
esp 0x19203f10 0x19203f10
ebp 0x11dff0 0x11dff0
esi 0x7ebdc50 132897872
edi 0x1223b0 1188784
eip 0x1111491 0x1111491 <setup_gdt+135>
eflags 0x2 [ ]
cs 0x10 16
ss 0x18 24
ds 0x18 24
es 0x18 24
fs 0x18 24
gs 0x18 24
(gdb) info reg pc
pc: 0x1111491
(gdb) x/10i 0x1111491
=> 0x1111491 <setup_gdt+135>: mov %eax,%ds
0x1111493 <setup_gdt+137>: mov %eax,%es
0x1111495 <setup_gdt+139>: mov %eax,%gs
0x1111497 <setup_gdt+141>: mov %eax,%ss
0x1111499 <setup_gdt+143>: mov $0x20,%al
0x111149b <setup_gdt+145>: mov %eax,%fs
0x111149d <setup_gdt+147>: add $0x8,%esp
0x11114a0 <setup_gdt+150>: pop %ebx
0x11114a1 <setup_gdt+151>: ret
0x11114a2 <x86_cpu_init_r>: call 0x11109d3 <cpu_init_interrupts>
(gdb) si
0x0000fcb0 in ?? ()
(gdb)
Do you have an idea?
By the way, I'm passing the file u-boot in ELF format directly to coreboot as ELF payload.
Is it better to wrap the file u-boot.bin to get an ELF?
Thanks for your help
Daniel
>
> Furthermore, I'm unable to debug anything remotely with gdb; gdb cannot
> disassemble once connected via "target remote localhost:1234".
>
> Do you mean it cannot find the source files?
>
> Regards,
> Simon
>
>
> Any hints welcome.
> Thanks so much.
>
> Cheers
> Daniel
>
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
More information about the U-Boot
mailing list