[U-Boot] skip relocation

Reinhard Meyer u-boot at emk-elektronik.de
Sun Jan 2 22:08:59 CET 2011


Dear Marcel,
> Dear Reinhard,
>
>> Dear Marcel,
>>
>>>> Is there any example that boots from NOR ?
>>
>> looking at the defines below, you are not really booting u-boot from NOR...
>>
>>> #define CONFIG_SKIP_LOWLEVEL_INIT
>>
>> If you do that, you must have an initial boot code before u-boot. See
>> below...
>>
>>> #define CONFIG_SKIP_RELOCATE_UBOOT
>>
>> Not used anymore.
>>
>>> /* SDRAM */
>>> #define CONFIG_NR_DRAM_BANKS		1
>>> #define PHYS_SDRAM			0x70000000
>>> #define PHYS_SDRAM_SIZE			0x08000000	/* 128 megs */
>>
>> Those defines have had their names changed.
>
> These I have changed already. I think they are fine.
>
>>> #define CONFIG_SYS_GBL_DATA_SIZE	128
>>
>> This constant is wrong, use the auto-generated value.
>
> OK
>
>>> /*
>>>
>>>    * Size of malloc() pool
>>>    */
>>>
>>> #define CONFIG_SYS_GBL_DATA_SIZE	128 /* 128 bytes for initial data */
>>
>> This constant is wrong, use the auto-generated value.
>
> OK
>
>>   >  Forgot to mention a few items :
>>   >
>>   >  I flash the NOR at address 0x10020000
>>   >  TEXT_BASE is 0x10020000
>>
>> That really implies you have another boot program running before u-boot.
>> Proably AT91 bootstrap? Is it configured to jumo to 0x1002000, or does it
>> copy u-boot to some SDRAM address and jumps there?
>
> Yes I run AT91 bootstrap. Is there a way to skip this ?

Sure, if you put an u-boot *with low level init* at the begin of NOR and
wire BMS to start from CS0 NOR.

However I am not sure a functional low level init (in u-bbot) exists (yet)
for your board. Even with NOR it is customary to use at91bootstrap which does
the hardware including SDRAM init.

If you touch at91bootstrap, configure it such that it either loads u-boot to
start of SDRAM and jumps there, or directly jumps to the address in NOR where
u-boot is stored. Make sure CONFIG_SYS_TEXT_BASE is correct!

>
> That's a good question if at91bootstrap jumps to the right address. How can I
> tell ? (maybe I find out myself, at least your question got me thinking ! )
> Let's say it does copy u-boot to SDRAM, do I need to set that address as
> TEXT_BASE ?

Exactly. CONFIG_SYS_TEXT_BASE must be the address where u-boot is running before relocation.
If that address is different, relocation will fail.

>
> I tried setting TEXT_BASE to 0x10020000 or 0x73f00000
> If I use another address, AT91bootstrap doesn't do anything, but at both of
> these addresses it behaves the same.

You should have the source of your at91 bootstrap. Without source its near
impossible to tell how it is configured.

>> Have a look at the current implementation for top9000 in u-boot-arm/master
>> and compare your files to it. Any differences to your code that are not
>> board and/or SoC specific probably have to be fixed in your board code or
>> you should be able to reason why it must be different for your board.
>
> Thanks a lot for your reply. I have a few new things to try and read
> (bootstrap)

Reinhard


More information about the U-Boot mailing list