[U-Boot] [PATCH v3 1/4] mkimage will now report information about loadable
Karl Apsite
Karl.Apsite at dornerworks.com
Tue May 19 00:27:32 CEST 2015
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>
---
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
+ * 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
+ 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.
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
More information about the U-Boot
mailing list