
Hi Karl,
On 18 May 2015 at 16:27, Karl Apsite Karl.Apsite@dornerworks.com wrote:
From: Karl Apsite karl.apsite@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@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@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 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@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
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