
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.