[U-Boot] new uboot with relocation change cannot boot when download the bin file to different address than TEXT_BASE

Albert ARIBAUD albert.aribaud at free.fr
Sat Oct 9 09:43:38 CEST 2010


Le 09/10/2010 07:50, Lei Wen a écrit :
> Hi,
>
> I recently try to port our board code to new uboot, which has been
> changed to use new relocation scheme.
> But I found a very strange thing, that is if the uboot is loaded to
> the TEXT_BASE address, it could run without
> problem. But if it is loaded to a different place, it fail to boot up...
>
> I check the code, and found that in the board_init_f, it calls the
> init_sequence which is stored as a data sector
> in the u-boot.bin file. While the new scheme use the fPIC, the code
> could locate the GOT table correctly,
> and it seem to forgot what the GOT table stores is context that is
> meaningful in TEXT_BASE, not the loaded base.
> That is to say, if the TEXT_BASE is 0xf00000, and loaded base is
> 0x500000, I found the GOT table also filled
> with 0xf0****, not the 0x50****. This leads the cpu loading wrong
> function address in the init_sequence table, and
> cause pc become invalid...
>
> Am I missing something to switch to the new relocation scheme?
>
> Thanks,
> Lei

Can you indicate which hardware (architecture, cpu, SoC, etc) you're 
running this code on?

Amicalement,
-- 
Albert.


More information about the U-Boot mailing list