[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