[U-Boot] ARM relocation, probably trivial mistake - back to original problem

Heiko Schocher
2010-10-01T08:27:53Z

Hello Reinhard,

Reinhard Meyer wrote:
> it seems, that with relocation enabled, some
> data does not seem to get initialized properly:
>
> w/o relocation:
>
> mmci
> mci: setting clock 194000 Hz, block size 512
> mci: setting clock 194000 Hz, block size 512
> mci: setting clock 194000 Hz, block size 512
> mci: setting clock 194000 Hz, block size 512
> mci: setting clock 24832000 Hz, block size 512
> Device: mci
> Manufacturer ID: 89
> OEM: 303
> Name: NCard
> Tran Speed: 25000000
> Rd Block Len: 512
> SD version 2.0
> High Capacity: No
> Capacity: 2006974464
> Bus Width: 4-bit
>
> with relocation:
>
> mmci
> mci: setting clock 0 Hz, block size 512

Hmm.. mabe something with at91_clock_init()

This is called in arch_cpu_init(), and
at the end, clocks are stored in

arch/arm/cpu/arm926ejs/at91/clock.c

in "static unsigned long" vars ... as this code
runs before relocation, this seems to me as it
could be the reason for your problems ... but I
can;t try it here ... can you check this?

> mci: setting clock 0 Hz, block size 512
> mci: setting clock 0 Hz, block size 512
> mci: setting clock 0 Hz, block size 512
> mci: setting clock 0 Hz, block size 512
> Device: mci
> Manufacturer ID: 89
> OEM: 303
> Name: NCard
> Tran Speed: 25000000
> Rd Block Len: 512
> SD version 2.0
> High Capacity: No
> Capacity: 2006974464
> Bus Width: 4-bit
>
> Do I understand right what the required changes are:
>
> 1. change dram_init

Yep.

> 2. make sure TEXT_BASE is correct as to where u-boot is loaded
> by a preloader and is NOT pointing near top of RAM.

Yep.

> 3. I do not have a board specific .lds - should I now have one?

No.

bye,
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany