Commit ecf8cd65 authored by Karl Apsite's avatar Karl Apsite Committed by Tom Rini
Browse files

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: default avatarKarl Apsite <Karl.Apsite@dornerworks.com>
Reviewed-by: default avatarSimon Glass <sjg@chromium.org>
parent 15b8973c
...@@ -1436,6 +1436,7 @@ void fit_conf_print(const void *fit, int noffset, const char *p) ...@@ -1436,6 +1436,7 @@ void fit_conf_print(const void *fit, int noffset, const char *p)
char *desc; char *desc;
char *uname; char *uname;
int ret; int ret;
int loadables_index;
/* Mandatory properties */ /* Mandatory properties */
ret = fit_get_desc(fit, noffset, &desc); ret = fit_get_desc(fit, noffset, &desc);
...@@ -1460,6 +1461,22 @@ void fit_conf_print(const void *fit, int noffset, const char *p) ...@@ -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); uname = (char *)fdt_getprop(fit, noffset, FIT_FDT_PROP, NULL);
if (uname) if (uname)
printf("%s FDT: %s\n", p, 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)
......
/*
* 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";
};
};
};
...@@ -235,6 +235,7 @@ o config@1 ...@@ -235,6 +235,7 @@ o config@1
|- kernel = "kernel sub-node unit name" |- kernel = "kernel sub-node unit name"
|- ramdisk = "ramdisk sub-node unit name" |- ramdisk = "ramdisk sub-node unit name"
|- fdt = "fdt 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 ...@@ -249,6 +250,9 @@ o config@1
"fdt type"). "fdt type").
- setup : Unit name of the corresponding setup binary (used for booting - setup : Unit name of the corresponding setup binary (used for booting
an x86 kernel). This contains the setup.bin file built by the kernel. 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 The FDT blob is required to properly boot FDT based kernel, so the minimal
configuration for 2.6 FDT kernel is (kernel, fdt) pair. configuration for 2.6 FDT kernel is (kernel, fdt) pair.
......
...@@ -742,6 +742,7 @@ int bootz_setup(ulong image, ulong *start, ulong *end); ...@@ -742,6 +742,7 @@ int bootz_setup(ulong image, ulong *start, ulong *end);
#define FIT_KERNEL_PROP "kernel" #define FIT_KERNEL_PROP "kernel"
#define FIT_RAMDISK_PROP "ramdisk" #define FIT_RAMDISK_PROP "ramdisk"
#define FIT_FDT_PROP "fdt" #define FIT_FDT_PROP "fdt"
#define FIT_LOADABLE_PROP "loadables"
#define FIT_DEFAULT_PROP "default" #define FIT_DEFAULT_PROP "default"
#define FIT_SETUP_PROP "setup" #define FIT_SETUP_PROP "setup"
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment