
Le 21/09/2011 12:45, Wolfgang Denk a écrit :
Dear "GROYER, Anthony",
In messageBC0A2F434D4F39448D24A68EA6EFFB9F0194DA79@EU-FR-EXBE07.eu.corp.airliquide.com you wrote:
What is the difference between _start and _TEXT_BASE ? I do not see any differences and the former relocation offset calculation was using _TEXT_BASE.
The former is the entry point address, while the latter is the start of the text segment. These may be the same (and on many ARM systems they are), but they have actually no direct relation to each other (and some ARM systems do use an entry point that is not the same as the start of the code).
This would be boards
- where U-Boot boots from Flash without a SPL,
- which boot at FFFF0000,
- and which don't have a tiny piece of code at FFFF0000 which jumps to a fixed location at which _start resides.
Thus, typically boards with a very small FLASH that forces the maintainer to fill the last 64 KB with _start and some code, then put the rest of U-Boot below FFFF0000.
But my edminiv2, with only 512 KB flash, already provides enough space that such a complicated linker mapping is unneeded -- FFFF0000 just has a permanent jump instruction to FFF90000, and U-Boot is linked linearly, with _start at FFF9000.
I wonder which ARM boards we have that still require a complex mapping with _start in the middle of the code.
Amicalement,