diff --git a/cmd/spl.c b/cmd/spl.c index 057764a..1165b78 100644 --- a/cmd/spl.c +++ b/cmd/spl.c @@ -118,6 +118,11 @@ static int spl_export(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) case SPL_EXPORT_FDT: printf("Argument image is now in RAM: 0x%p\n", (void *)images.ft_addr); + env_set_addr("fdtargsaddr", images.ft_addr); + env_set_hex("fdtargslen", fdt_totalsize(images.ft_addr)); + if (fdt_totalsize(images.ft_addr) > + CONFIG_CMD_SPL_WRITE_SIZE) + puts("WARN: FDT size > CMD_SPL_WRITE_SIZE\n"); break; #endif case SPL_EXPORT_ATAGS: diff --git a/doc/README.falcon b/doc/README.falcon index e9f8a75..9a7f0bc 100644 --- a/doc/README.falcon +++ b/doc/README.falcon @@ -118,7 +118,12 @@ after each run of 'spl export'. Unfortunately the position of temporary storage can not be predicted nor provided at commandline, it depends highly on your system setup and your provided data (ATAGS or FDT). However at the end of an succesful 'spl export' run it will print the -RAM address of temporary storage. +RAM address of temporary storage. The RAM address of FDT will also be +set in the environment variable 'fdtargsaddr', the new length of the +prepared FDT will be set in the environment variable 'fdtargslen'. +These environment variables can be used in scripts for writing updated +FDT to persistent storage. + Now the user have to save the generated BLOB from that printed address to the pre-defined address in persistent storage (CONFIG_CMD_SPL_NAND_OFS in case of NAND).