Debugging U-Boot after relocation

My ~/.gdbinit

target remote 192.168.11.200:2001
monitor reset halt

Type in gdb:

(gdb)monitor reset halt
(gdb)continue

Output in terminal:

U-Boot 2013.04-rc3-dirty (Apr 16 2013 - 14:33:48)

OMAP36XX/37XX-GP ES1.2, CPU-OPP2, L3-165MHz, Max CPU Clock 1 Ghz
OMAP3 Tricorder + LPDDR/NAND
I2C: ready
DRAM: 256 MiB
NAND: 512 MiB
MMC: OMAP SD/MMC: 0
*** Warning – bad CRC, using default environment

In: serial
Out: serial
Err: serial
Die ID #065a00229e38000001683b0601020024
Hit any key to stop autoboot: 0
OMAP3 Tricorder #

In U-Boot type:

OMAP3 Tricorder # bdinfo
arch_number = 0x00000BE2
boot_params = 0x80000100
DRAM bank = 0x00000000
-> start = 0x80000000
-> size = 0x10000000
DRAM bank = 0x00000001
-> start = 0x90000000
-> size = 0x00000000
baudrate = 115200 bps
TLB addr = 0x8FFF0000
relocaddr = 0x8FF67000
reloc off = 0x0FE67000
irq_sp = 0x8FE66F38
sp start = 0x8FE66F28
OMAP3 Tricorder #

So we get the relocation address of U-Boot: 0x8FF67000
And in gdb we can load the symbol-file:

Program received signal SIGSTOP, Stopped (signal).
0x8ff90554 in ?? ()
(gdb) add-symbol-file u-boot 0x8ff67000
add symbol table from file "u-boot" at
.text_addr = 0x8ff67000
(y or n) y
Reading symbols from /home/tweber/build/tricorder/u-boot/u-boot...done.
(gdb)

Simple test, set breakpoint @ do_version:

(gdb) b do_bdinfo
Breakpoint 1 at 0x8ff6a680: file cmd_bdinfo.c, line 373.
(gdb) c
Continuing.

In U-Boot type version:

OMAP3 Tricorder # bdinfo

And in gdb the breakpoint is hit:

Breakpoint 1, do_bdinfo (cmdtp=0x8ffbc048, flag=0, argc=1, argv=0x8fe76090) at cmd_bdinfo.c:373
373 {
(gdb)

Published by

Tom

Embedded firmware developer, sometimes Linux kernel developer.

Leave a Reply

Your email address will not be published. Required fields are marked *