
Dear Alexander Holler,
Am 22.01.2011 07:38, schrieb John Rigby:
On Fri, Jan 21, 2011 at 11:07 PM, Alexander Hollerholler@ahsoftware.de wrote:
Hello,
because I still have problems where I think the problem is the relocation, I've had a look at some timer code.
E.g. in arch/arm/cpu/arm926ejs/kirkwood/timer.c on top there is
struct kwtmr_registers *kwtmr_regs = (struct kwtmr_registers *)KW_TIMER_BASE;
which is used in timer_init().
In arch/arm/cpu/armv7/omap-common/timer.c we have
static struct gptimer *timer_base = (struct gptimer *)CONFIG_SYS_TIMERBASE;
which is used in timer_init() too.
(I assume similiar code is used in more files, I've just had a look at those two.)
timer_init() is called in board_init_f() through init_sequence, that means before relocation.
Did I miss something, or I'm right that this is a problem because those two variables are stored in bss but are accessed before relocation?
These are both initialized data so they do not go in bss.
Correct, I should have a look into u-boot.map before writing this mail. Thanks for the pointer.
But this leads me to the question what happens with the stuff in the data section. Seems I should have again a look at the lowlevel stuff to understand that.
Intuitively (without looking at the code) I would think that CONST DATA is ok, but non const, initialized data cannot work because it is not initialized before relocation...
Best Regards, Reinhard