* [Buildroot] [git commit] uboot-tools: fix FIT support and make it optional
@ 2016-06-07 21:10 Thomas Petazzoni
0 siblings, 0 replies; only message in thread
From: Thomas Petazzoni @ 2016-06-07 21:10 UTC (permalink / raw)
To: buildroot
commit: https://git.buildroot.net/buildroot/commit/?id=b5d9900842e08e8ac5b9ad43234acf7ec63542ba
branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master
Fix several issues regarding the support for Flat Image Trees (FIT).
- Add a patch to really allow turning FIT support on/off, which was not
possible due to bugs in the code and in the tools Makefile. This patch
has been sent upstream but not applied there, yet.
- Use independent options to control FIT support on host and target
packages.
- Subordinate FIT signature support to the activation of FIT support, in
the target package, not to mkimage installation.
- Add a dependence on the dtc utilities because mkimage needs it when
FIT is enabled; otherwise mkimage fails like this:
$ mkimage -f firmware.its firmware.im
sh: dtc: command not found
- Add BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT to the
Config.in.legacy file.
Signed-off-by: Carlos Santos <casantos@datacom.ind.br>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
Config.in.legacy | 14 ++++
.../0003-Make-FIT-support-really-optional.patch | 93 ++++++++++++++++++++++
package/uboot-tools/Config.in | 27 +++++--
package/uboot-tools/Config.in.host | 16 ++++
package/uboot-tools/uboot-tools.mk | 61 +++++++-------
5 files changed, 177 insertions(+), 34 deletions(-)
diff --git a/Config.in.legacy b/Config.in.legacy
index b73603b..434aa5f 100644
--- a/Config.in.legacy
+++ b/Config.in.legacy
@@ -145,6 +145,20 @@ endif
###############################################################################
comment "Legacy options removed in 2016.08"
+config BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT
+ bool "FIT support in uboot-tools has been refactored"
+ select BR2_LEGACY
+ select BR2_PACKAGE_DTC
+ select BR2_PACKAGE_DTC_PROGRAMS
+ select BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT
+ select BR2_PACKAGE_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT
+ select BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE
+ help
+ This option has been removed in favor of a more fine-grained
+ configuration, which is recommended. Selecting this option
+ enables FIT and FIT signature support for the target packages.
+ It will also select the dtc and openssl packages.
+
config BR2_PTHREADS_OLD
bool "linuxthreads (stable/old)"
select BR2_LEGACY
diff --git a/package/uboot-tools/0003-Make-FIT-support-really-optional.patch b/package/uboot-tools/0003-Make-FIT-support-really-optional.patch
new file mode 100644
index 0000000..5404e4f
--- /dev/null
+++ b/package/uboot-tools/0003-Make-FIT-support-really-optional.patch
@@ -0,0 +1,93 @@
+From ddcd6cd622889a2d74d0a16efae8e3b2d098f717 Mon Sep 17 00:00:00 2001
+From: Carlos Santos <casantos@datacom.ind.br>
+Date: Sun, 8 May 2016 11:11:39 -0300
+Subject: [PATCH] Make FIT support really optional
+
+Due to some mistakes in the source code, it was not possible to really
+turn FIT support off. This commit fixes the problem by means of the
+following changes:
+
+- Enclose "bootm_host_load_image" and "bootm_host_load_images" between
+ checks for CONFIG_FIT_SIGNATURE, in common/bootm.c.
+
+- Enclose the declaration of "bootm_host_load_images" between checks for
+ CONFIG_FIT_SIGNATURE, in common/bootm.h.
+
+- Condition the compilation and linking of fit_common.o fit_image.o
+ image-host.o common/image-fit.o to CONFIG_FIT=y, in tools/Makefile.
+
+Signed-off-by: Carlos Santos <casantos@datacom.ind.br>
+---
+ common/bootm.c | 2 ++
+ include/bootm.h | 2 ++
+ tools/Makefile | 6 ++----
+ 3 files changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/common/bootm.c b/common/bootm.c
+index c965326..ab477ba 100644
+--- a/common/bootm.c
++++ b/common/bootm.c
+@@ -891,6 +891,7 @@ void memmove_wd(void *to, void *from, size_t len, ulong chunksz)
+ memmove(to, from, len);
+ }
+
++#if defined(CONFIG_FIT_SIGNATURE)
+ static int bootm_host_load_image(const void *fit, int req_image_type)
+ {
+ const char *fit_uname_config = NULL;
+@@ -955,5 +956,6 @@ int bootm_host_load_images(const void *fit, int cfg_noffset)
+ /* Return the first error we found */
+ return err;
+ }
++#endif
+
+ #endif /* ndef USE_HOSTCC */
+diff --git a/include/bootm.h b/include/bootm.h
+index 4981377..94d62a1 100644
+--- a/include/bootm.h
++++ b/include/bootm.h
+@@ -41,7 +41,9 @@ void lynxkdi_boot(image_header_t *hdr);
+
+ boot_os_fn *bootm_os_get_boot_func(int os);
+
++#if defined(CONFIG_FIT_SIGNATURE)
+ int bootm_host_load_images(const void *fit, int cfg_noffset);
++#endif
+
+ int boot_selected_os(int argc, char * const argv[], int state,
+ bootm_headers_t *images, boot_os_fn *boot_fn);
+diff --git a/tools/Makefile b/tools/Makefile
+index da50e1b..0a3d279 100644
+--- a/tools/Makefile
++++ b/tools/Makefile
+@@ -54,6 +54,7 @@ mkenvimage-objs := mkenvimage.o os_support.o lib/crc32.o
+ hostprogs-y += dumpimage mkimage
+ hostprogs-$(CONFIG_FIT_SIGNATURE) += fit_info fit_check_sign
+
++FIT_OBJS-$(CONFIG_FIT) := fit_common.o fit_image.o image-host.o common/image-fit.o
+ FIT_SIG_OBJS-$(CONFIG_FIT_SIGNATURE) := common/image-sig.o
+ # Flattened device tree objects
+ LIBFDT_OBJS := $(addprefix lib/libfdt/, \
+@@ -68,18 +69,15 @@ ROCKCHIP_OBS = lib/rc4.o rkcommon.o rkimage.o rksd.o rkspi.o
+ # common objs for dumpimage and mkimage
+ dumpimage-mkimage-objs := aisimage.o \
+ atmelimage.o \
++ $(FIT_OBJS-y) \
+ $(FIT_SIG_OBJS-y) \
+ common/bootm.o \
+ lib/crc32.o \
+ default_image.o \
+ lib/fdtdec_common.o \
+ lib/fdtdec.o \
+- fit_common.o \
+- fit_image.o \
+ gpimage.o \
+ gpimage-common.o \
+- common/image-fit.o \
+- image-host.o \
+ common/image.o \
+ imagetool.o \
+ imximage.o \
+--
+2.7.4
+
diff --git a/package/uboot-tools/Config.in b/package/uboot-tools/Config.in
index 76983f4..c663230 100644
--- a/package/uboot-tools/Config.in
+++ b/package/uboot-tools/Config.in
@@ -7,17 +7,22 @@ config BR2_PACKAGE_UBOOT_TOOLS
if BR2_PACKAGE_UBOOT_TOOLS
-config BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE
- bool "mkimage"
+config BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT
+ bool "Flattened Image Tree (FIT) support"
+ select BR2_PACKAGE_DTC
+ select BR2_PACKAGE_DTC_PROGRAMS
help
- Install the mkimage tool on the target system
+ Enables support for Flattened Image Tree (FIT).
- The mkimage tool from Das U-Boot bootloader, which allows
- generation of U-Boot images in various formats.
+ This option allows to boot the new uImage structrure,
+ Flattened Image Tree. FIT is formally a FDT, which can include
+ images of various types (kernel, FDT blob, ramdisk, etc.)
+ in a single blob. To boot this new uImage structure,
+ pass the address of the blob to the "bootm" command.
-if BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE
+if BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT
-config BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT
+config BR2_PACKAGE_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT
bool "FIT signature verification support"
select BR2_PACKAGE_OPENSSL
help
@@ -40,6 +45,14 @@ config BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT
endif
+config BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE
+ bool "mkimage"
+ help
+ Install the mkimage tool on the target system
+
+ The mkimage tool from Das U-Boot bootloader, which allows
+ generation of U-Boot images in various formats.
+
config BR2_PACKAGE_UBOOT_TOOLS_MKENVIMAGE
bool "mkenvimage"
help
diff --git a/package/uboot-tools/Config.in.host b/package/uboot-tools/Config.in.host
index b5a42d9..406d9ff 100644
--- a/package/uboot-tools/Config.in.host
+++ b/package/uboot-tools/Config.in.host
@@ -7,6 +7,20 @@ config BR2_PACKAGE_HOST_UBOOT_TOOLS
if BR2_PACKAGE_HOST_UBOOT_TOOLS
+config BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT
+ bool "Flattened Image Tree (FIT) support"
+ select BR2_PACKAGE_HOST_DTC
+ help
+ Enables support for Flattened Image Tree (FIT).
+
+ This option allows to boot the new uImage structrure,
+ Flattened Image Tree. FIT is formally a FDT, which can include
+ images of various types (kernel, FDT blob, ramdisk, etc.)
+ in a single blob. To boot this new uImage structure,
+ pass the address of the blob to the "bootm" command.
+
+if BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT
+
config BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT
bool "FIT signature verification support"
help
@@ -24,3 +38,5 @@ config BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT
be verified in this way.
endif
+
+endif
diff --git a/package/uboot-tools/uboot-tools.mk b/package/uboot-tools/uboot-tools.mk
index a6aadeb..4903f66 100644
--- a/package/uboot-tools/uboot-tools.mk
+++ b/package/uboot-tools/uboot-tools.mk
@@ -16,20 +16,25 @@ define UBOOT_TOOLS_CONFIGURE_CMDS
touch $(@D)/include/config/auto.conf
endef
+UBOOT_TOOLS_MAKE_OPTS = CROSS_COMPILE="$(TARGET_CROSS)" \
+ CFLAGS="$(TARGET_CFLAGS)" \
+ LDFLAGS="$(TARGET_LDFLAGS)" \
+ STRIP=$(TARGET_STRIP)
+
+ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT),y)
+UBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT=y
+UBOOT_TOOLS_DEPENDENCIES += dtc
+endif
+
+ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT),y)
+UBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT_SIGNATURE=y
+UBOOT_TOOLS_DEPENDENCIES += openssl host-pkgconf
+endif
+
define UBOOT_TOOLS_BUILD_CMDS
- $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \
- CROSS_COMPILE="$(TARGET_CROSS)" \
- CFLAGS="$(TARGET_CFLAGS)" \
- LDFLAGS="$(TARGET_LDFLAGS)" \
- STRIP=$(TARGET_STRIP) \
- CROSS_BUILD_TOOLS=y \
- CONFIG_FIT_SIGNATURE=$(BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT) \
- tools-only
- $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \
- CROSS_COMPILE="$(TARGET_CROSS)" \
- CFLAGS="$(TARGET_CFLAGS)" \
- LDFLAGS="$(TARGET_LDFLAGS)" \
- STRIP=$(TARGET_STRIP) \
+ $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(UBOOT_TOOLS_MAKE_OPTS) \
+ CROSS_BUILD_TOOLS=y tools-only
+ $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(UBOOT_TOOLS_MAKE_OPTS) \
env no-dot-config-targets=env
endef
@@ -37,10 +42,7 @@ ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE),y)
define UBOOT_TOOLS_INSTALL_MKIMAGE
$(INSTALL) -m 0755 -D $(@D)/tools/mkimage $(TARGET_DIR)/usr/bin/mkimage
endef
-ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT),y)
-UBOOT_TOOLS_DEPENDENCIES += openssl host-pkgconf
-endif # BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT
-endif # BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE
+endif
ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_MKENVIMAGE),y)
define UBOOT_TOOLS_INSTALL_MKENVIMAGE
@@ -76,22 +78,27 @@ define UBOOT_TOOLS_INSTALL_TARGET_CMDS
$(UBOOT_TOOLS_INSTALL_DUMPIMAGE)
endef
-ifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT),y)
-HOST_UBOOT_TOOLS_DEPENDENCIES += host-openssl
-endif
-
define HOST_UBOOT_TOOLS_CONFIGURE_CMDS
mkdir -p $(@D)/include/config
touch $(@D)/include/config/auto.conf
endef
+HOST_UBOOT_TOOLS_MAKE_OPTS = HOSTCC="$(HOSTCC)" \
+ HOSTCFLAGS="$(HOST_CFLAGS)" \
+ HOSTLDFLAGS="$(HOST_LDFLAGS)"
+
+ifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT),y)
+HOST_UBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT=y
+HOST_UBOOT_TOOLS_DEPENDENCIES += host-dtc
+endif
+
+ifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT),y)
+HOST_UBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT_SIGNATURE=y
+HOST_UBOOT_TOOLS_DEPENDENCIES += host-openssl
+endif
+
define HOST_UBOOT_TOOLS_BUILD_CMDS
- $(MAKE1) -C $(@D) \
- CONFIG_FIT_SIGNATURE=$(BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT) \
- HOSTCC="$(HOSTCC)" \
- HOSTCFLAGS="$(HOST_CFLAGS)" \
- HOSTLDFLAGS="$(HOST_LDFLAGS)" \
- tools-only
+ $(MAKE1) -C $(@D) $(HOST_UBOOT_TOOLS_MAKE_OPTS) tools-only
endef
define HOST_UBOOT_TOOLS_INSTALL_CMDS
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2016-06-07 21:10 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-07 21:10 [Buildroot] [git commit] uboot-tools: fix FIT support and make it optional Thomas Petazzoni
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.