[U-Boot] [PATCH] Added u-boot header generating functionality to ublimage

Stijn Souffriau stijn.souffriau at essensium.com
Sun May 20 18:53:06 CEST 2012


---
 tools/ublimage.c |   19 +++++++++++++++++++
 tools/ublimage.h |    2 ++
 2 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/tools/ublimage.c b/tools/ublimage.c
index d6b4017..527b1a4 100644
--- a/tools/ublimage.c
+++ b/tools/ublimage.c
@@ -36,6 +36,10 @@
 #include <image.h>
 #include "ublimage.h"
 
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
 /*
  * Supported commands for configuration file
  */
@@ -59,6 +63,7 @@ static table_entry_t ublimage_cmds[] = {
  */
 static table_entry_t ublimage_bootops[] = {
 	{UBL_MAGIC_SAFE,	"safe",	"Safe boot mode",	},
+	{UBL_MAGIC_UBOOT,	"uboot", "Make u-boot header",	},
 	{-1,			"",	"Invalid",		},
 };
 
@@ -89,6 +94,18 @@ static void print_hdr(struct ubl_header *ubl_hdr)
 	printf("start page : %08x\n", ubl_hdr->page);
 }
 
+static uint32_t getDataPageSize() {
+	uint32_t size = 0;
+	struct stat buf;
+	int rv = stat(params.datafile, &buf);
+	if (rv == 0) {
+		size = (buf.st_size/UBL_BLOCK_SIZE) + (buf.st_size % UBL_BLOCK_SIZE == 0 ? 0 : 1);
+	} else {
+		fprintf(stderr, "Error: could not stat datafile %s\n", params.datafile);
+	}
+	return size;
+}
+
 static void parse_cfg_cmd(struct ubl_header *ublhdr, int32_t cmd, char *token,
 				char *name, int lineno, int fld, int dcd_len)
 {
@@ -171,6 +188,8 @@ static uint32_t parse_cfg_file(struct ubl_header *ublhdr, char *name)
 		*ptr = 0xff;
 		ptr++;
 	}
+		
+        ublhdr->pages = getDataPageSize();
 
 	/*
 	 * Very simple parsing, line starting with # are comments
diff --git a/tools/ublimage.h b/tools/ublimage.h
index e440625..35dee42 100644
--- a/tools/ublimage.h
+++ b/tools/ublimage.h
@@ -61,6 +61,8 @@ enum ublimage_fld_types {
 #define UBL_MAGIC_DMA_IC            (0x44)
 /* DMA + ICache + Fast EMIF boot mode */
 #define UBL_MAGIC_DMA_IC_FAST       (0x55)
+/* UBOOT header identifier for UBL */
+#define UBL_MAGIC_UBOOT             (0x66)
 
 /* Define max UBL image size */
 #define UBL_IMAGE_SIZE              (0x00003800u)
-- 
1.7.0.4



More information about the U-Boot mailing list