newbie questions regarding some config options.
As per the README file:
Subscribe to u-boot mailing list;
if (clueless)
email("Hi, I am new to U-Boot, how do I get started?");
I'm messing around with uboot and QEMU (qemu-system-arm -M realview-pbx-a9 -kernel u-boot.bin), things are going pretty well in the sense that I'm not having too much trouble reading most of the code and creating a new board. I have some questions that I can't figure out by reading the code. What is the CONFIG_SYS_TEXT_BASE variable and how can I figure out what it should be?
I randomly set it to 0x0...then tried to debug u-boot under qemu, but when stepping in the start.S file it was instantly clear that it wasn't really working because gdb said the code ran right though the _start: b reset
instruction and qemu eventually crashed with the following output:
qemu: fatal: Trying to execute code outside RAM or ROM at 0xfeb70cdc
R00=00000000 R01=ffff0000 R02=00000000 R03=000108ac R04=ffff0000 R05=ffbedf70 R06=ffff0000 R07=00000010 R08=00001000 R09=ffff0000 R10=000108ac R11=00000000 R12=00001078 R13=ffbedf60 R14=00000960 R15=feb70cdc PSR=600001d3 -ZC- A svc32
Aborted
Apart from that everything is pretty clear to me, but I want to make sure I'm getting this points right:
Is the environment the set of variables that can be modified with setenv?
How can I determine the "size of the environment"? Is it the number of characters including variable names?
Also, is there anything special I need to do with gdb to get it to follow relocating code?
thanks,
-Chris
Hi Christopher,
Quoted 2 lines
What is the
CONFIG_SYS_TEXT_BASEvariable and how can
I figure out what it should be?
U-boot is typically stored in flash and one of the first things it does when executed is relocate to ram. CONFIG_SYS_TEXT_BASE is the relocation address. Typically, u-boot global data, heap and then stack is stored just below this.
Since u-boot is used to load some other program like the kernel, you need the u-boot relocation address to be out of the way of this. So, for the boards I have seen (not arm), CONFIG_SYS_TEXT_BASE is set to the top of ram - 256KB, i.e. enough room for the u-boot image.
I am sure more experienced u-boot developers will correct me if I am wrong :)
Regards
Phil
Am 13.06.2011 15:09, schrieb PHIL.EDWORTHY at renesas.com:
Quoted 7 lines
Hi Christopher,
Quoted 2 lines
What is the
CONFIG_SYS_TEXT_BASEvariable and how can
I figure out what it should be?U-boot is typically stored in flash and one of the first things it does when executed is relocate to ram.
CONFIG_SYS_TEXT_BASEis
the relocation
Quoted 1 line
address. Typically, u-boot global data, heap and then stack is stored just below this.
On ARM, CONFIG_SYS_TEXT_BASE is typically the base address of the image in flash. This is, on a system booting from NOR, the address of the first instruction which is fetched from the CPU.
Quoted 2 lines
Since u-boot is used to load some other program like the kernel, you need the u-boot relocation address to be out of the way of this. So, for the boards I have seen (not arm),
CONFIG_SYS_TEXT_BASEis set to the top of ram - 256KB, i.e. enough room for the u-boot image.
The relocation address is dynamically calculated from a couple of (runtime) information and has nothing to do with CONFIG_SYS_TEXT_BASE. This is true for ARM and AFAIK for PPC.
Matthias
Hi Matthias,
Quoted 11 lines
Quoted 4 lines
Quoted 2 lines
What is the
CONFIG_SYS_TEXT_BASEvariable and how can
I figure out what it should be?U-boot is typically stored in flash and one of the first things it does when executed is relocate to ram.
CONFIG_SYS_TEXT_BASEisthe relocation
Quoted 1 line
address. Typically, u-boot global data, heap and then stack is stored just below this.
On ARM,
CONFIG_SYS_TEXT_BASEis typically the base address of the image in flash. This is, on a system booting from NOR, the address of the first instruction which is fetched from the CPU.
Quoted 6 lines
Quoted 2 lines
Since u-boot is used to load some other program like the kernel, you need the u-boot relocation address to be out of the way of this. So, for the boards I have seen (not arm),
CONFIG_SYS_TEXT_BASEis set to the top of ram - 256KB, i.e. enough room for the u-boot image.The relocation address is dynamically calculated from a couple of (runtime) information and has nothing to do with
CONFIG_SYS_TEXT_BASE. This is true for ARM and AFAIK for PPC.
Thanks for the additional info - SH is a little different then!
Phil
Quoted 22 lines · PHIL.EDWORTHY at renesas.com
Hi Matthias,
Quoted 20 lines
Quoted 4 lines
Quoted 2 lines
What is the
CONFIG_SYS_TEXT_BASEvariable and how can
I figure out what it should be?U-boot is typically stored in flash and one of the first things it
does when executed is relocate to ram.
CONFIG_SYS_TEXT_BASEisQuoted 2 lines
the relocation
address. Typically, u-boot global data, heap and then stack isstored just below this.
On ARM,
CONFIG_SYS_TEXT_BASEis typically the base address of the image
in flash. This is, on a system booting from NOR, the address of the first instruction which is fetched from the CPU.Quoted 1 line
Since u-boot is used to load some other program like the kernel,
you need the u-boot relocation address to be out of the way of this. So, for the
Quoted 1 line
boards I have seen (not arm),
CONFIG_SYS_TEXT_BASEis set to thetop of ram - 256KB, i.e. enough room for the u-boot image.
Quoted 8 lines
Quoted 4 lines
The relocation address is dynamically calculated from a couple of (runtime) information and has nothing to do with
CONFIG_SYS_TEXT_BASE.
This is true for ARM and AFAIK for PPC.Thanks for the additional info - SH is a little different then!
Phil
Thanks for the information. Since CONFIG_SYS_TEXT_BASE seems to be a critical value and isn't something that can be ignored, maybe it deserves an entry in the already helpful README. I'd write it myself but I'm not qualified.
-Chris
Dear PHIL.EDWORTHY at renesas.com,
Quoted 5 lines · In message <OF460D0558.A844A780-ONC12578AE.0047905C-802578AE.00482EFA@eu.necel.…
U-boot is typically stored in flash and one of the first things it does when executed is relocate to ram.
CONFIG_SYS_TEXT_BASEis the relocation address. Typically, u-boot global data, heap and then
This is completely wrong. The relocation address is determined dynamically, depending on RAM size and a number of coinfigured options.
CONFIG_SYS_TEXT_BASE is the start address of the text segment when execution starts - on ROM booting systems this is an address in ROM.
Quoted 1 line
I am sure more experienced u-boot developers will correct me if I am wrong :)
Indeed this was necessary.
Best regards,
Wolfgang Denk
Signature · 6 lines
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de A person who is more than casually interested in computers should be well schooled in machine language, since it is a fundamental part of a computer. -- Donald Knuth
Dear PHIL.EDWORTHY at renesas.com,
Quoted 6 lines · In message <OF0DAC137B.B5EC37B0-ONC12578AE.004D7395-802578AE.004D9320@eu.necel.…
Quoted 4 lines
The relocation address is dynamically calculated from a couple of (runtime) information and has nothing to do with
CONFIG_SYS_TEXT_BASE. This is true for ARM and AFAIK for PPC.Thanks for the additional info - SH is a little different then!
Several architectures copied the old ARM model of not performing proper relocation. They all should be fixed...
Best regards,
Wolfgang Denk
Signature · 5 lines
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de Hokey religions and ancient weapons are no substitute for a good blaster at your side. - Han Solo
Dear Christopher Harvey,
Quoted 5 lines · In message <[email protected]> you wrote:
Thanks for the information. Since
CONFIG_SYS_TEXT_BASEseems to be a critical value and isn't something that can be ignored, maybe it deserves an entry in the already helpful README. I'd write it myself but I'm not qualified.
Try it, and others will fill in and/or correct where necessary.
Best regards,
Wolfgang Denk
Signature · 5 lines
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de If a group of N persons implements a COBOL compiler, there will be N-1 passes. Someone in the group has to be the manager. - T. Cheatham
Quoted 4 lines · Wolfgang Denk <wd <at> denx.de> writes:
Dear PHIL.EDWORTHY <at> renesas.com,
In message <OF460D0558.A844A780-ONC12578AE.0047905C-802578AE.00482EFA <at>
Quoted 6 lines · eu.necel.com> you wrote:
Quoted 5 lines
U-boot is typically stored in flash and one of the first things it does when executed is relocate to ram.
CONFIG_SYS_TEXT_BASEis the relocation address. Typically, u-boot global data, heap and then
Quoted 8 lines
This is completely wrong. The relocation address is determined dynamically, depending on RAM size and a number of coinfigured options.
CONFIG_SYS_TEXT_BASEis the start address of the text segment when execution starts - on ROM booting systems this is an address in ROM.Quoted 1 line
I am sure more experienced u-boot developers will correct me if I am
wrong :)
Quoted 7 lines
Indeed this was necessary.
Best regards,
Wolfgang Denk
Hello Wolfgang,
is it safe to say that this is the base address of the flash memory, the CONFIG_SYS_TEXT_BASE? Of course if I boot from flash..
Say if my flash is in 0x10000000 for NCS0 of at91rm9200 as an example, CONFIG_SYS_TEXT_BASE = 0x10000000?
Thanks
Chris