[U-Boot-Users] FDT intentions in u-boot

Jerry Van Baren gerald.vanbaren at ge.com
Wed Oct 17 19:35:21 CEST 2007


Joakim Tjernlund wrote:
> On Wed, 2007-10-17 at 11:02 -0400, Jerry Van Baren wrote:
>> Zach Sadecki wrote:
>>> I have some confusion about FDT and what the intentions are for its
>>> support and usage in u-boot.
>>>
>>> From what I understand so far, u-boot only supports modifying a FDT
>>> already loaded into memory.  Isn't this kind of an odd usage of a device
>>> tree?  I thought a unique tree should be created for each hardware
>>> implementation (a.k.a. system board) and therefore you shouldn't be
>>> modifying it.  If changes are made a new device tree should be created.
>> You can only _modify_ a blob when it is in RAM.  You can store a blob in 
>> ROM (flash) and copy it to RAM for modification.
>>
>> If you don't need to modify the blob in order to boot linux, there is no 
>> need (that I'm aware of) for loading/copying it to RAM.  *However* it is 
>> unlikely that you (u-boot/linux) will be able to use an unmodified blob. 
>>   For instance, the "chosen" node is (or should be?) generated by the 
>> boot loader (u-boot) to let the kernel know about certain choices that 
>> were made by the boot loader and/or the user.
> 
> OT, but I have always wondered how the chosen node is supposed to be
> used. 

I'm not an expert, I only play on on mail lists.  My understanding is 
that the chosen node indicates to the OS what choices the user (or boot 
loader) made between possible configurations...

> Would it be possible to specify which devices in the device tree
> that should be used by the OS?

...so the answer should be "yes" but that is making the assumption that 
the OS knows enough to look in the chosen node to figure out which 
devices it should use.  *That* part is probably a bad assumption (at the 
moment).

> Supposed I got two boards that are identical, except one of them
> does not have ethernet i/f. Would it be possible use the same device
> tree for both boards, but tell OS that the ethernet i/f isn't present
> on one of the boards?

I believe the theoretical answer is "yes" but the practical answer is 
"no" for doing this via the "chosen" node.

It is simpler and safer to use libfdt to simply delete the unpopulated 
node from the tree.

> I getting a bunch of boards thats are very similiar from the OS point of
> view and I would like to just have one mega devtree and remove some
> devices at runtime or change som properties.
> 
>  Jocke

Hopefully your boards have some method of self-determining what is 
populated or not.  Alternatively, you can use the ability to load 
board-specific FDT blobs to accomplish this.

Wolfgang Grandegger and Delev Zundel actually created a "universal" 
u-boot that was configured *itself* via a FDT blob (OK, it wasn't 
universal, but it sounds so good).  If your board isn't self-aware of 
its configuration, that would be an interesting path to go down.

gvb




More information about the U-Boot mailing list