using openocd + gdb to debug linux kernel on arm926ejs
fachkar.datawind at gmail.com
Wed May 26 16:25:59 EDT 2010
On 05/26/2010 03:46 PM, Kees Jongenburger wrote:
> Hello Ferar,
> On Wed, May 26, 2010 at 9:12 PM, f. achkar <fachkar.datawind at gmail.com> wrote:
>> I'm newbie and have a s3c2450 based board (arm926ejs), I have a working compressed kernel image
>> zImage, this image boots properly via u-boot-1.1.6, however I simply
>> failed to debug remotely the vmlinux (root directory of linux source tree) via openocd-0.4.0 with a j-link segger.
>> is there a good reference on how to properly debug the linux kernel via openocd/gdb for an arm target on a linux hot machine?
> Did you read
> http://elinux.org/DebuggingTheLinuxKernelUsingGdb ?
Yes and many other similar documents! and the steps below are based on
those readings :(
>> 1. let u-boot start the board;
>> 2. I get the u-boot command prompt:
>> 3. halt the target via openocd/telnet;
> If you plan on replacing the kernel using gdb you need really to stop
> at a known location
> The moment you halt the target needs to be after memory initialization
> and prior to the kernel being loaded
yes I halt the target after memory initialization as done by uboot which
also prepares the tagged list required by the kernel @
boot_params = 0x30000100
>> 4. cd to root directory of linux source code and issue:
>> gdb vmlinux
>> GNU gdb (GDB) 126.96.36.19990417
>> Copyright (C) 2009 Free Software Foundation, Inc.
>> License GPLv3+: GNU GPL version 3 or later
>> This is free software: you are free to change and redistribute it.
>> There is NO WARRANTY, to the extent permitted by law. Type "show copying"
>> and "show warranty" for details.
>> This GDB was configured as "--host=i686-pc-linux-gnu
>> For bug reporting instructions, please see:
>> (gdb) target remote localhost:3333
>> Remote debugging using localhost:3333
>> 0xc3e01874 in ?? ()
>> 0xc3e01874: ldr r3, [r0, #16]
> Is this kernel code?
I'm not sure, also not sure why gdb showed that particular memory location!
>> 8. if I do continue (gdb) c, then I don't see any output on the serial
>> console (as normally do during zImage booting process!)
>> where I'm messing up?
> First try just booting and connecting to the target afterwards. All
> you really need is a vmlinuz so don't load the kernel over JTAG
do you mean the following steps:
1. arm-linux-gdb vmlinux
target remote localhost:3333
set remote hardware-breakpoint-limit 2
set remote hardware-watchpoint-limit 2
3. reset the target and let u-boot/zImage finish running until I get the
bash# of busy box then try to insert break points as needed?
many thanks ...
> Hope this helps
More information about the linux-arm-kernel