[DNX#2006040142000151] [U-Boot-Users] Debugging U-Boot on arm920t using B [...]

DENX Support System support at denx.de
Sat Apr 1 00:20:08 CEST 2006


Hello list,

inside the automatic U-Boot patch tracking system a new ticket
[DNX#2006040142000151] was created:

<snip>
> First Question:
> 
> If I have understood everything correctly, u-boot ALWAYS relocates
> itselfs to RAM.
> 
> This is the code in Start.S in cpu/arm920t that makes the relocation.
> 
> relocate:				/* relocate U-Boot to RAM	    */
> 	adr	r0, _start		/* r0 <- current position of code   */
> 	ldr	r1, _TEXT_BASE		/* test if we run from flash or RAM */
> 	cmp     r0, r1                  /* don't reloc during debugaitor
> 
> This is how I get the values that _start and _TEXT_BASE take:
> 
> arm-unknown-linux-gnu-gdb u-boot
> GNU gdb 6.2.1
> Copyright 2004 Free Software Foundation, Inc.
> ...
> This GDB was configured as "--host=i686-pc-linux-gnu
> --target=arm-unknown-linux-gnu"...
> (gdb) info address _start
> Symbol "_start" is at 0x8f00000 in a file compiled without debugging.
> (gdb) info address _TEXT_BASE
> Symbol "_TEXT_BASE" is at 0x8f00040 in a file compiled without
> debugging.
> (gdb) x/1xw 0x8f00040
> 0x8f00040 <_TEXT_BASE>: 0x08f00000
> (gdb)                      
> 
> Both addresses TEXT_BASE & _start are SDRAM. According to this, this
> code will never relocate. Is this correct ?.
> 
> u-boot$ arm-unknown-linux-gnu-objdump -h  u-boot
> u-boot:     file format elf32-littlearm
> Sections:
> Idx Name          Size      VMA       LMA       File off  Algn
>   0 .text         000138a4  08f00000  08f00000  00008000  2**5
> 
> What I conclude is that the binary is prepared to be loaded and executed
> only from SDRAM. In fact, IŽve loaded u-boot in sdram (0x8f00000) using
> bdi2000, I have defined CONFIG_SKIP_LOWLEVEL_INIT and
> CONFIG_SKIP_RELOCATE_UBOOT and I have been able to debug u-boot using
> gdb. I know this is not the right way to debug u-boot.
> 
> In conclusion, there are two things I don't understand:
> 
>  * I think that LMA address of text section should be Flash 0x10000000. 
>  Because the code must be loaded in non-volatile memory. VMA of course, 
> should be SDRAM 0x8f00000.
> 
>  * I think that the code that
> makes the relocation must be loaded and executed from flash.
> VMA 0x10000000 and LMA 0x10000000. 
> 
> Second Question.
> 
> You have told me that:
> 
> > But for that you have to tell the debugger  that  the code is  running    > from  an  address  that is different from the link address). 
> 
> This is what IŽve done:
> 
> iim at viggen:~/.../u-boot-1.1.3$ arm-unknown-linux-gnu-gdb u-boot GNU gdb
> 6.3 ...
> This GDB was configured as "--host=i686-pc-linux-gnu
> --target=arm-unknown-linux-gnu"...
> (gdb) symbol-file
> Discard symbol table from `/.../u-boot-1.1.3/u-boot'? (y or n) y No
> symbol file now.
> (gdb) add-symbol-file u-boot 0x0000
> add symbol table from file "u-boot" at
>         .text_addr = 0x0
> (y or n) y
> Reading symbols from /.../u-boot-1.1.3/u-boot...done.
> (gdb) b _start_armboot
> 
> Breakpoint 1 at 0x8f00394: file /.../u-boot-1.1.3/cpu/arm920t/start.S,
> line 435.
> (gdb) target remote 192.168.1.5:2001
> Remote debugging using 192.168.1.5:2001
> 0x08f001c0 in ?? ()
> (gdb) c
> Continuing.
> 
> But the breakpoint is still in sdram (0x8f00394), and the program
> doesnŽt stop in the breakpoint.
> 
> 
> Regards.
> 
> Ioritz.
> 
> 
> 
> -------------------------------------------------------
> This SF.Net email is sponsored by:
> Power Architecture Resource Center: Free content, downloads,
> discussions,
> and more. http://solutions.newsforge.com/ibmarch.tmpl
> _______________________________________________
</snip>

Your U-Boot support team




More information about the U-Boot mailing list