[U-Boot] [PATCH] mkimage: add option for adding dtc binary path via argument

Luka Perkov luka at openwrt.org
Sun May 5 21:09:30 CEST 2013


Add option for configuring path to dtc binary in mkimage command. The
dtc binary might not always be located in $PATH.

Signed-off-by: Luka Perkov <luka at openwrt.org>
---
 doc/mkimage.1     |  4 ++++
 tools/fit_image.c |  3 ++-
 tools/mkimage.c   | 14 +++++++++++---
 tools/mkimage.h   |  5 +++--
 4 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/doc/mkimage.1 b/doc/mkimage.1
index 39652c8..8cf5686 100644
--- a/doc/mkimage.1
+++ b/doc/mkimage.1
@@ -82,6 +82,10 @@ Set XIP (execute in place) flag.
 .B Create FIT image:
 
 .TP
+.BI "\-B [" "dtc bin" "]"
+Set path to the device tree compiler binary.
+
+.TP
 .BI "\-D [" "dtc options" "]"
 Provide special options to the device tree compiler that is used to
 create the image.
diff --git a/tools/fit_image.c b/tools/fit_image.c
index 76bbba1..cd4db58 100644
--- a/tools/fit_image.c
+++ b/tools/fit_image.c
@@ -82,7 +82,8 @@ static int fit_handle_file (struct mkimage_params *params)
 
 	/* dtc -I dts -O dtb -p 500 datafile > tmpfile */
 	sprintf (cmd, "%s %s %s > %s",
-		MKIMAGE_DTC, params->dtc, params->datafile, tmpfile);
+		params->dtc_bin, params->dtc_options, params->datafile,
+		tmpfile);
 	debug ("Trying to execute \"%s\"\n", cmd);
 	if (system (cmd) == -1) {
 		fprintf (stderr, "%s: system(%s) failed: %s\n",
diff --git a/tools/mkimage.c b/tools/mkimage.c
index e43b09f..ac4ced7 100644
--- a/tools/mkimage.c
+++ b/tools/mkimage.c
@@ -37,7 +37,8 @@ struct mkimage_params params = {
 	.arch = IH_ARCH_PPC,
 	.type = IH_TYPE_KERNEL,
 	.comp = IH_COMP_GZIP,
-	.dtc = MKIMAGE_DEFAULT_DTC_OPTIONS,
+	.dtc_bin = MKIMAGE_DTC,
+	.dtc_options = MKIMAGE_DEFAULT_DTC_OPTIONS,
 	.imagename = "",
 	.imagename2 = "",
 };
@@ -189,10 +190,15 @@ main (int argc, char **argv)
 					genimg_get_comp_id (*++argv)) < 0)
 					usage ();
 				goto NXTARG;
+			case 'B':
+				if (--argc <= 0)
+					usage ();
+				params.dtc_bin = *++argv;
+				goto NXTARG;
 			case 'D':
 				if (--argc <= 0)
 					usage ();
-				params.dtc = *++argv;
+				params.dtc_options = *++argv;
 				goto NXTARG;
 
 			case 'O':
@@ -623,7 +629,9 @@ usage ()
 			 "          -d ==> use image data from 'datafile'\n"
 			 "          -x ==> set XIP (execute in place)\n",
 		params.cmdname);
-	fprintf (stderr, "       %s [-D dtc_options] -f fit-image.its fit-image\n",
+	fprintf (stderr, "       %s [-B dtc_bin] [-D dtc_options] -f fit-image.its fit-image\n",
+			 "           -B ==> set path to the dtc binary\n",
+			 "           -D ==> set options that will be passed to dtc\n",
 		params.cmdname);
 	fprintf (stderr, "       %s -V ==> print version information and exit\n",
 		params.cmdname);
diff --git a/tools/mkimage.h b/tools/mkimage.h
index ea45f5c..1c3b1e1 100644
--- a/tools/mkimage.h
+++ b/tools/mkimage.h
@@ -46,7 +46,7 @@
 #define MKIMAGE_MAX_TMPFILE_LEN		256
 #define MKIMAGE_DEFAULT_DTC_OPTIONS	"-I dts -O dtb -p 500"
 #define MKIMAGE_MAX_DTC_CMDLINE_LEN	512
-#define MKIMAGE_DTC			"dtc"   /* assume dtc is in $PATH */
+#define MKIMAGE_DTC			"dtc"
 
 /*
  * This structure defines all such variables those are initialized by
@@ -65,7 +65,8 @@ struct mkimage_params {
 	int arch;
 	int type;
 	int comp;
-	char *dtc;
+	char *dtc_bin;
+	char *dtc_options;
 	unsigned int addr;
 	unsigned int ep;
 	char *imagename;


More information about the U-Boot mailing list