[U-Boot-Users] Ideas on U-Boot configuration with FDT

Timur Tabi timur at freescale.com
Mon May 21 19:02:49 CEST 2007


Wolfgang Grandegger wrote:
> Timur Tabi wrote:
>> Wolfgang Grandegger wrote:
>>
>>> Then something similar to the ENV could be chosen:
>>>
>>>   CFG_FDT_ADDR
>>>   CFG_FDT_IS_IN_FLASH
>>>   CFG_FDT_IS_IN_xxx
>>
>> We need two addresses:
>>
>> 1) The address where the FDT is stored when the system is powered up
> 
> OK.
> 
>> 2) The address in RAM where the FDT should be placed before Linux is 
>> booted.
> 
> This should be some kind of default address. 

Any default address is most likely board-specific.  It would be nice if U-Boot could 
determine the best address automatically when possible.

> Also be aware, that the 
> blob can be within a uImage created with mkimage. Then the load address 
> defined in the uImage should be used.

Yes.

> You might be right. The _IS_IN_ is used for the ENV, I have to check 
> what the rational behind it is (if there is one at all).

It's handy if you want to use the same macro to represent different types of addresses. 
Personally, I don't see much value in that.  I would rather that a particular macro be 
used to represent only one kind of value.  When I see CFG_FDT_ADDR_RAM, I know that the 
value is a virtual address that the CPU can dereference at any time.

> I'm not sure if you understand the intended purpose. The address of the 
> _initial_ blob could be stored in the env variable "fdtaddr" to select 
> _one_ blob out of many in the FLASH.

Hmm....

I can see value in that, but then that variable can contain completely different addresses 
depending on the type of storage, which I don't like.  Plus, I would rather that we use 
macro commands to set the FDT address, rather than an environment variable.  This gives us 
more flexibility.

> I tend to leave it up to the board specific code where and how to verify 
> the FDT. 

fdt_checkboard() *is* board-specific code.

There are already various entry points like checkboard() or
> misc_init_r().

But this functions don't normally know where the FDT is.  fdt_checkboard() would be 
designed specifically to validate an FDT from a board-specific point-of-view.  It's good 
to have that code isolated from other board-specific code.

-- 
Timur Tabi
Linux Kernel Developer @ Freescale




More information about the U-Boot mailing list