Hi Karl, On 18 May 2015 at 16:27, Karl Apsite <karl.aps...@dornerworks.com> wrote: > From: Karl Apsite <karl.aps...@dornerworks.com> > > Added FIT_LOADABLE_PROP, so the user can identify an optional entry > named "loadables" in their .its configuration. "loadables" is a comma > separated list in the .its > > Documentation can be found in doc/uImage.FIT/source_file_format.txt and > doc/uImage.Fit/multi-with-loadables.its > > Signed-off-by: Karl Apsite <karl.aps...@dornerworks.com>
Looks good, just a few nits from me. > --- > > Changes in v3: > - Moved the documentation about the loadables field from the commit > message, to a new example.its file in doc/uImage.FIT/ > doc/uImage.FIT/multi-with-loadables.its > > common/image-fit.c | 17 +++++++ > doc/uImage.FIT/multi-with-loadables.its | 89 > +++++++++++++++++++++++++++++++++ > doc/uImage.FIT/source_file_format.txt | 4 ++ > include/image.h | 1 + > 4 files changed, 111 insertions(+) > create mode 100644 doc/uImage.FIT/multi-with-loadables.its > > diff --git a/common/image-fit.c b/common/image-fit.c > index 4eb4d42..fc9ea1f 100644 > --- a/common/image-fit.c > +++ b/common/image-fit.c > @@ -1436,6 +1436,7 @@ void fit_conf_print(const void *fit, int noffset, const > char *p) > char *desc; > char *uname; > int ret; > + int loadables_index; > > /* Mandatory properties */ > ret = fit_get_desc(fit, noffset, &desc); > @@ -1460,6 +1461,22 @@ void fit_conf_print(const void *fit, int noffset, > const char *p) > uname = (char *)fdt_getprop(fit, noffset, FIT_FDT_PROP, NULL); > if (uname) > printf("%s FDT: %s\n", p, uname); > + > + /* Print out all of the specified loadables */ > + for (loadables_index = 0; > + !fdt_get_string_index(fit, noffset, > + FIT_LOADABLE_PROP, > + loadables_index, > + (const char **)&uname) > 0; > + loadables_index++) > + { > + if (loadables_index == 0) { > + printf("%s Loadables: ", p); > + } else { > + printf("%s ", p); > + } > + printf("%s\n", uname); > + } > } > > static int fit_image_select(const void *fit, int rd_noffset, int verify) > diff --git a/doc/uImage.FIT/multi-with-loadables.its > b/doc/uImage.FIT/multi-with-loadables.its > new file mode 100644 > index 0000000..9baffa6 > --- /dev/null > +++ b/doc/uImage.FIT/multi-with-loadables.its > @@ -0,0 +1,89 @@ > +/* > + * U-boot uImage source file with multiple kernels, ramdisks and FDT blobs U-Boot > + * This example makes use of the 'loadables' field > + */ > + > +/dts-v1/; > + > +/ { > + description = "Configuration to load a Xen Kernel"; > + #address-cells = <1>; > + > + images { > + xen_kernel@1 { > + description = "xen binary"; > + data = /incbin/("./xen"); > + type = "kernel"; > + arch = "arm"; > + os = "linux"; > + compression = "none"; > + load = <0xa0000000>; > + entry = <0xa0000000>; > + hash@1 { > + algo = "md5"; > + }; > + }; > + > + fdt@1 { > + description = "xexpress-ca15 tree blob"; > + data = /incbin/("./vexpress-v2p-ca15-tc1.dtb"); > + type = "flat_dt"; > + arch = "arm"; > + compression = "none"; > + load = <0xb0000000>; > + hash@1 { > + algo = "md5"; > + }; > + }; > + > + fdt@2 { > + description = "xexpress-ca15 tree blob"; > + data = /incbin/("./vexpress-v2p-ca15-tc1.dtb"); > + type = "flat_dt"; > + arch = "arm"; > + compression = "none"; > + load = <0xb0400000>; > + hash@1 { > + algo = "md5"; > + }; > + }; > + > + linux_kernel@1 { > + description = "Linux Image"; > + data = /incbin/("./Image"); > + type = "kernel"; > + arch = "arm"; > + os = "linux"; > + compression = "none"; > + load = <0xa0000000>; > + entry = <0xa0000000>; > + hash@1 { > + algo = "md5"; > + }; > + }; > + }; > + > + configurations { > + default = "config@2"; > + > + config@1 { > + description = "Just plain Linux"; > + kernel = "linux_kernel@1"; > + fdt = "fdt@1"; > + }; > + > + config@2 { > + description = "Xen one loadable"; > + kernel = "xen_kernel@1"; > + fdt = "fdt@1"; > + loadables = "linux_kernel@1"; > + }; > + > + config@3 { > + description = "Xen two loadables"; > + kernel = "xen_kernel@1"; > + fdt = "fdt@1"; > + loadables = "linux_kernel@1", "fdt@2"; > + }; > + }; > +}; > diff --git a/doc/uImage.FIT/source_file_format.txt > b/doc/uImage.FIT/source_file_format.txt > index 427ea49..004acd1 100644 > --- a/doc/uImage.FIT/source_file_format.txt > +++ b/doc/uImage.FIT/source_file_format.txt > @@ -235,6 +235,7 @@ o config@1 > |- kernel = "kernel sub-node unit name" > |- ramdisk = "ramdisk sub-node unit name" > |- fdt = "fdt sub-node unit-name" > + |- loadables = "loadables sub-node unit-name" > > > Mandatory properties: > @@ -249,6 +250,9 @@ o config@1 > "fdt type"). > - setup : Unit name of the corresponding setup binary (used for booting > an x86 kernel). This contains the setup.bin file built by the kernel. > + - loadables : Unit name containing a list of additional binaries to be > loaded at try wrapping to 78 columns at most. > + their given locations. "loadables" is a comma-separated list of strings. > + u-boot will load each binary at its given start-address. U-Boot > > The FDT blob is required to properly boot FDT based kernel, so the minimal > configuration for 2.6 FDT kernel is (kernel, fdt) pair. > diff --git a/include/image.h b/include/image.h > index 60b924a..97b96b3 100644 > --- a/include/image.h > +++ b/include/image.h > @@ -742,6 +742,7 @@ int bootz_setup(ulong image, ulong *start, ulong *end); > #define FIT_KERNEL_PROP "kernel" > #define FIT_RAMDISK_PROP "ramdisk" > #define FIT_FDT_PROP "fdt" > +#define FIT_LOADABLE_PROP "loadables" > #define FIT_DEFAULT_PROP "default" > #define FIT_SETUP_PROP "setup" > > -- > 2.3.7 > Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot