[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 09:53:47 CEST 2010


Hi Albert,

On Sat, Oct 9, 2010 at 3:43 PM, Albert ARIBAUD <albert.aribaud at free.fr> wrote:
> 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?
>
I am running the code on Marvell aspen soc, which is arm926ejs compatible core.

Best regards,
Lei


More information about the U-Boot mailing list