This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

help with gdb - bdi2000


Hi All,

I have got a new bdi2000 to help me in debugging linux kernel. I have been able to successfully run u-boot on MPC7455 based custom board. My problem is that I am not able to get bdi2000 to work properly with my system. To help me shortlist candidates for the errors I am getting, I would like your help in understanding what I am doing wrong here.

I reset the processor using bdi command line, the processor remains in halted state until I ask it to "go"

BDI>info
   Target CPU        : MPC7455 Rev.2
   Target state      : debug mode
   Debug entry cause : COP freeze (startup)
   Current PC        : 0xfff00100
   Current CR        : 0x00000000
   Current MSR       : 0x00000000
   Current LR        : 0x00000000
BDI>go

After some secs, I could see U-Boot messages on the serial port on the board. At some point in time, I halt the processor.
BDI>halt
Target CPU : MPC7455 Rev.2
Target state : debug mode
Debug entry cause : COP halt
Current PC : 0x00fe51bc
Current CR : 0x24000000
Current MSR : 0x00000030
Current LR : 0x00fe4f60


Then, on my host machine I startup the gdb, discard the symbol file. U-Boot was linked at 0x1ff0000, after relocation it runs at 0xfe0000. So I reload the symbol file with the offset 0xfe0000.

simpod:[~/develop/u-boot]$ powerpc-linux-gdb u-boot
GNU gdb 6.0
This GDB was configured as "--host=i686-pc-linux-gnu --target=powerpc-linux"...
(gdb) symbol-file
Discard symbol table from `/home/sharad/develop/u-boot/u-boot'? (y or n) y
No symbol file now.
(gdb) add
add-shared-symbol-files add-symbol-file
(gdb) add-symbol-file u
u-boot u-boot.bin u-boot.dump u-boot.map u-boot.memh u-boot.mif u-boot.srec
(gdb) add-symbol-file u-boot 0xfe0000
add symbol table from file "u-boot" at
.text_addr = 0xfe0000
(y or n) y
Reading symbols from u-boot...done.


Case I ->
I attach it to the bdi ... It tells me where exactly is the processor halted. I set the breakpoint at do_bootm ... I say continue to gdb ... go to my serial port on the board, ask it to do "bootm 3000000 4000000" ... but I never see the breakpoint becoming active on gdb .... it just continues loading the linux ...


(gdb) target remote bdi:2001
Remote debugging using bdi:2001
0x00fe51bc in NS16550_getc (com_port=0x60000000) at ns16550.c:53
53              while ((com_port->lsr & LSR_DR) == 0);
(gdb) mon break
Breakpoint mode is SOFT
(gdb) b do_boot
do_bootm         do_bootm_linux   do_bootm_netbsd  do_bootm_rtems
(gdb) b do_bootm
Breakpoint 1 at 0xfe6488: file cmd_bootm.c, line 149.
(gdb) c
Continuing.

Case II ->
In another instance, I get the following error when I insert breakpoint at NS16550_getc routine:


(gdb) target remote bdi:2001
Remote debugging using bdi:2001
0x00fe51c4 in NS16550_getc (com_port=0x60000000) at ns16550.c:53
53              while ((com_port->lsr & LSR_DR) == 0);
(gdb) b NS
NS16550         NS16550_init    NS16550_reinit  NS16550_tstc
NS16550_getc    NS16550_putc    NS16550_t
(gdb) b NS16550_getc
Breakpoint 1 at 0xfe51b8: file ns16550.c, line 53.
(gdb) mon break
Breakpoint mode is SOFT
(gdb) c
Continuing.

Breakpoint 1, NS16550_getc (com_port=0x60000000) at ns16550.c:53
53              while ((com_port->lsr & LSR_DR) == 0);
(gdb) step

Program received signal SIGSTOP, Stopped (signal).
Cannot remove breakpoints because program is no longer writable.
It might be running in another process.
Further execution is probably impossible.
0x00fe51c0 in NS16550_getc (com_port=Cannot access memory at address 0xfbee48
) at ns16550.c:53
53 while ((com_port->lsr & LSR_DR) == 0);
(gdb) step


Program received signal ?, Unknown signal.
Cannot remove breakpoints because program is no longer writable.
It might be running in another process.
Further execution is probably impossible.
0x00fe51c0 in NS16550_getc (com_port=Cannot access memory at address 0xfbee48
) at ns16550.c:53
53 while ((com_port->lsr & LSR_DR) == 0);




What should I do to avoid this error ?
Any help would be highly appreciated.
Thanks
Sharad.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]