diff options
author | Karl Apsite <karl.apsite@dornerworks.com> | 2015-05-21 09:52:47 -0400 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2015-05-28 08:18:20 -0400 |
commit | ecf8cd653530acb0ed8217a1d80c93841ec2005e (patch) | |
tree | 326f4617fe516d348c79c10c3d8369b68ec8c73f | |
parent | 15b8973cdf5c772980973d275e3dd781b9dc01e0 (diff) |
mkimage will now report information about loadable
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.Apsite@dornerworks.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
-rw-r--r-- | common/image-fit.c | 17 | ||||
-rw-r--r-- | doc/uImage.FIT/multi-with-loadables.its | 89 | ||||
-rw-r--r-- | doc/uImage.FIT/source_file_format.txt | 4 | ||||
-rw-r--r-- | include/image.h | 1 |
4 files changed, 111 insertions, 0 deletions
diff --git a/common/image-fit.c b/common/image-fit.c index 4eb4d42655e..fc9ea1f1b24 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 00000000000..a8545d245c9 --- /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 + * 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 427ea498b49..029f481893e 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 their given locations. "loadables" is a comma-separated list + of strings. U-Boot will load each binary at its given start-address. 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 60b924a5b6f..97b96b3e240 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" |