[U-Boot-Users] Ideas on U-Boot configuration with FDT
Wolfgang Grandegger
wg at grandegger.com
Mon May 21 19:08:19 CEST 2007
Timur Tabi wrote:
> Wolfgang Grandegger wrote:
>> Jerry Van Baren wrote:
>>> Timur Tabi wrote:
>>>> Jerry Van Baren wrote:
>>>>
>>>>> Yes, that is what "fdt addr" does today, it tells the u-boot innards
>>>>> where the blob is (sets/changes the blob location). The user can
>>>>> download a new blob and switch to using it via the "fdt addr" command.
>>>> By "change", I thought you meant that "fdt addr" would actually move
>>>> the device tree, since that's technically changing the address.
>>>> Perhaps you meant "set the address"?
>>> Yes.
>>>
>>>>> The user can use the "fdt addr" command to set/change the location
>>>>> of the blob. Moving blobs is not out of scope, it is what "fdt
>>>>> move" does.
>>>> How is "fdt move" different than cp.b followed by another "fdt addr"?
>>> Conceptually the same thing but easier: you don't have to know (guess)
>>> the blob size because fdt_open_into() gets the size from the source blob.
>> Summing up, brainstorming a bit more, here are my revised ideas:
>>
>> The following definitions control the FDT usage in U-Boot:
>>
>> CFG_FDT_ADDR_FLASH:
>> If defined, "fdt" is set to that address at compile time. The
>> FDT can be used from the early beginning of the boot.
>>
>> CFG_FDT_ADDR_BY_ENV:
>> If defined, the env variable "fdtaddr" is looked up early in the
>> boot and "fdt" is set accordingly. This allows to hold more than
>> one blob in FLASH and select one via env setting. This would
>> allow for _one_ combination of images of U-Boot + Linux + Blobs
>> for a _set_ of boards.
>
> If CFG_FDT_ADDR_BY_ENV is *not* defined, should the FDT code then set that variable?
Yes, then the address is set to CFG_FDT_ADDR_XXX at compile time.
>> CFG_FDT_ADDR_RAM:
>> If defined, the blob is moved to RAM after relocation for
>> further preparation or for performance reasons. "fdt" is re-set
>> accordingly. The blob is then ready and in place for booting
>> Linux. If CFG_FDT_ADDR_RAM is set to 0, the blob will be copied
>> to a default location, e.g. before the initrd location.
>
> I think the FDT blob should *always* be copied to RAM.
>
>> A board-specific checkboad function is called as early as possible to
>> verify the FDT.
>>
>> This should also make Timur happy, as he has the choice, e.g. read the
>> FDT solely from FLASH.
>
> I think I may have changed my mind a bit. I'm not so much concerned about read-only FDT
> as I want to automate the process of copying it to RAM.
As a result of discussion, in the meantime I have now also a better idea
on how to implement FDT for U-Boot configuration. Going to make a demo
for my Icecube board a.s.a.p.
Wolfgang.
More information about the U-Boot
mailing list