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

Lei Wen adrian.wenl at gmail.com
Sat Oct 9 07:50:21 CEST 2010


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


More information about the U-Boot mailing list