Skip to contentSkip to conversation

newbie questions regarding some config options.

U-Boot Christopher Harvey 5 participants 9 messages Jun 13, 2011 – Aug 22, 2014

lore
Share & tools
lore
#0 lore raw

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

#1 lore raw

Hi Christopher,

Quoted 2 lines

What is the CONFIG_SYS_TEXT_BASE variable 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

#2 lore raw

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_BASE variable 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

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_BASE is 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

#3 lore raw

Hi Matthias,

Quoted 11 lines
Quoted 4 lines
Quoted 2 lines

What is the CONFIG_SYS_TEXT_BASE variable 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

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 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_BASE is 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

#4 lore raw
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_BASE variable 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

Quoted 2 lines

the relocation
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 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_BASE is set to the

top 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

#5 lore raw

Dear Christopher Harvey,

Quoted 5 lines · In message <[email protected]> you wrote:

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.

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
#6 lore raw
In reply to PHIL.EDWORTHY at renesas.com

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
#7 lore raw
In reply to PHIL.EDWORTHY at renesas.com

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_BASE is 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
#8 lore raw
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_BASE is 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_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 :)

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