[U-Boot-Users] FDT intentions in u-boot
Jerry Van Baren
gerald.vanbaren at ge.com
Thu Oct 18 21:29:28 CEST 2007
Zach Sadecki wrote:
> 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.
[snip]
>>> What is the intent for future support? Creation of a device tree from
>>> scratch? That seems to be what the original (open firmware) intention
>>> of FDTs were. (Allowing a bootloader to pass a implementation specific
>>> hardware list up to an operating system.) And the current Linux
>>> implementation is a little backwards from that (let kernel compiler give
>>> you a device tree which you then have to give to the bootloader to pass
>>> back up to the kernel during boot). It would seem to make more sense
>>> (in my limited understanding of FDT) to allow the bootloader to be able
>>> to generate this itself without dependence on a prior kernel compilation
>>> for that particular hardware...
>>
>> There is no intention to create blobs from scratch in the boot loader
>> (u-boot). If you look at some of the SOC (8[3456]xx) blobs, you would
>> see that that would be a nightmare, your fingers would be bloody stubs
>> by the time you typed it all in, and then you would find you had a
>> syntax error and have to start all over.
>> <http://pez.multiply.com/journal/item/75/Computer_Frustration>
>> (I think that is the link, the filters at work don't let me browse it.)
> What I meant was not typing it in by hand, but setting it up in your
> board.h file so that it can be generated during compile or during boot.
> But if you can embed it into the u-boot image itself, maybe this is
> unnecessary. It seems as I look deeper into the code it does support
> this to some extent (ft_build.c), but I think that it might not be as
> thorough as it would need to be to work.
Hmmm /me thinks you are confusing libfdt and The Other Way of supporting
FDT blobs with the reference to ft_build.c. While it is theoretically
true that you could generate the blob from nothing, modifying and
augmenting a static initial blob makes more sense.
I would not advocate embedding the FDT blob in u-boot but, if I were to
do so, I would use the dtc to generate an assembly language output
(actually, a lot of define byte statements) and then compile that in the
u-boot build.
A better approach IMHO (subject to change) is to burn the FDT blob into
a separate flash area so it can be updated later without rebuilding
u-boot or downloading it via TFTP. Obviously, this would be an
engineering tradeoff and /your/ best choice for your situation is quite
likely different from someone else's choice for their (different) situation.
>> On the other hand, 98% of the typical FDT blob (to make up a
>> statistic) is static. The intent of u-boot FDT support is to
>> externally (via the dtc) generate a blob with the 98% already filled
>> in and have u-boot configure the 2% that is board-specific or user
>> selected.
>>
>> The blob can be baked into u-boot, stored in flash separately from
>> u-boot, or loaded as part of the kernel (baked into the kernel image
>> in ROM, tftped separately from the kernel, tftped as part of the
>> kernel image).
>>
>> We are in the tool business, how to use the tool is up to the user. ;-)
>>
>>> If the plans aren't for u-boot to have the ability to generate a device
>>> tree would it be reasonable to create one and embed it in the u-boot
>>> binary somehow? (so that another unique binary wouldn't have to be
>>> loaded into another separate flash partition)
>>>
>>> Thanks,
>>> Zach
>>
>> That option is already there as a multi-image boot image, one part of
>> the image being a FDT blob.
> I've seen a little info on using mkimage to add an initrd, but nothing
> specifically with fdt (or dtb). I've seen no info on 'baking it into
> u-boot' that you mentioned above... Is there any documentation on how
> to do either of these?
>
> Thanks,
> Zach
I haven't tried to make a multi-image linux/FDT blob/RAM disk an may
have misspoke about it being an option. What I was recalling is
something Timur did which was using mkimage to wrap a standalone blob.
<http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/28207/focus=28242>
Baking in - explained above, use dtc to generate assembly and link it in
with u-boot. It may make sense in places, but I would think hard about
if it made sense before doing it.
gvb
More information about the U-Boot
mailing list