]> git.karo-electronics.de Git - karo-tx-uboot.git/commitdiff
mkimage will now report information about loadable
authorKarl Apsite <karl.apsite@dornerworks.com>
Thu, 21 May 2015 13:52:47 +0000 (09:52 -0400)
committerLothar Waßmann <LW@KARO-electronics.de>
Tue, 8 Sep 2015 20:47:08 +0000 (22:47 +0200)
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>
common/image-fit.c
doc/uImage.FIT/multi-with-loadables.its [new file with mode: 0644]
doc/uImage.FIT/source_file_format.txt
include/image.h

index 4eb4d42655e9bebb0fae767d89961327a100e0c8..fc9ea1f1b243bb4234d48b7b3e678616af28f67f 100644 (file)
@@ -1436,6 +1436,7 @@ void fit_conf_print(const void *fit, int noffset, const char *p)
        char *desc;
        char *uname;
        int ret;
        char *desc;
        char *uname;
        int ret;
+       int loadables_index;
 
        /* Mandatory properties */
        ret = fit_get_desc(fit, noffset, &desc);
 
        /* 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);
        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)
 }
 
 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 (file)
index 0000000..a8545d2
--- /dev/null
@@ -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";
+               };
+       };
+};
index 427ea498b498793f3af51bdad51dbf3ab351349c..029f481893ea06373ec44b4b610ab684c45c766b 100644 (file)
@@ -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"
   |- 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:
 
 
   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.
     "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.
 
 The FDT blob is required to properly boot FDT based kernel, so the minimal
 configuration for 2.6 FDT kernel is (kernel, fdt) pair.
index 60b924a5b6feb43a78a16781699547a8d5485247..97b96b3e240eda796f98d8a6ce39d5c87a1b47c4 100644 (file)
@@ -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_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"
 
 #define FIT_DEFAULT_PROP       "default"
 #define FIT_SETUP_PROP         "setup"