[U-Boot] [PATCH v3 1/4] mkimage will now report information about loadable
Simon Glass
sjg at chromium.org
Thu May 21 01:27:14 CEST 2015
Hi Karl,
On 18 May 2015 at 16:27, Karl Apsite <Karl.Apsite at dornerworks.com> wrote:
> From: Karl Apsite <karl.apsite at 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.Apsite at 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 at 1 {
> + description = "xen binary";
> + data = /incbin/("./xen");
> + type = "kernel";
> + arch = "arm";
> + os = "linux";
> + compression = "none";
> + load = <0xa0000000>;
> + entry = <0xa0000000>;
> + hash at 1 {
> + algo = "md5";
> + };
> + };
> +
> + fdt at 1 {
> + description = "xexpress-ca15 tree blob";
> + data = /incbin/("./vexpress-v2p-ca15-tc1.dtb");
> + type = "flat_dt";
> + arch = "arm";
> + compression = "none";
> + load = <0xb0000000>;
> + hash at 1 {
> + algo = "md5";
> + };
> + };
> +
> + fdt at 2 {
> + description = "xexpress-ca15 tree blob";
> + data = /incbin/("./vexpress-v2p-ca15-tc1.dtb");
> + type = "flat_dt";
> + arch = "arm";
> + compression = "none";
> + load = <0xb0400000>;
> + hash at 1 {
> + algo = "md5";
> + };
> + };
> +
> + linux_kernel at 1 {
> + description = "Linux Image";
> + data = /incbin/("./Image");
> + type = "kernel";
> + arch = "arm";
> + os = "linux";
> + compression = "none";
> + load = <0xa0000000>;
> + entry = <0xa0000000>;
> + hash at 1 {
> + algo = "md5";
> + };
> + };
> + };
> +
> + configurations {
> + default = "config at 2";
> +
> + config at 1 {
> + description = "Just plain Linux";
> + kernel = "linux_kernel at 1";
> + fdt = "fdt at 1";
> + };
> +
> + config at 2 {
> + description = "Xen one loadable";
> + kernel = "xen_kernel at 1";
> + fdt = "fdt at 1";
> + loadables = "linux_kernel at 1";
> + };
> +
> + config at 3 {
> + description = "Xen two loadables";
> + kernel = "xen_kernel at 1";
> + fdt = "fdt at 1";
> + loadables = "linux_kernel at 1", "fdt at 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 at 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 at 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
More information about the U-Boot
mailing list