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

--- 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)

On Sunday 20 May 2012 12:53:06 Stijn Souffriau wrote:
--- a/tools/ublimage.c +++ b/tools/ublimage.c
+static uint32_t getDataPageSize() {
don't use CamelCase in naming things. use "(void)" not "()". uncuddle the brace with function definitions. -mike

Hello Stijn,
Stijn Souffriau wrote:
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", },
Hmm... what is UBL_MAGIC_UBOOT? Could you explain this?
This list should contain "UBL Signatures and Special Modes" from the UBL descriptor defined in your processor manual (fast looked for the dm368 in sprufg5a.pdf table 110 ... a 0x66 fit to "UBL_MAGIC_PLL" = "With PLL enabled to have higher ARM/DMA clocks")
{-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)
Hmm.. see above comment, and comment in source code ...
please explain here more, what you want to do.
/* Define max UBL image size */ #define UBL_IMAGE_SIZE (0x00003800u)
bye, Heiko

On 05/21/2012 08:30 AM, Heiko Schocher wrote:
Hello Stijn,
Stijn Souffriau wrote:
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", },
Hmm... what is UBL_MAGIC_UBOOT? Could you explain this?
This list should contain "UBL Signatures and Special Modes" from the UBL descriptor defined in your processor manual (fast looked for the dm368 in sprufg5a.pdf table 110 ... a 0x66 fit to "UBL_MAGIC_PLL" = "With PLL enabled to have higher ARM/DMA clocks")
Well I didn't know that, I saw it in all the u-boot headers so I named it accordingly. I can change it to it's proper name to avoid confusion. Thanks!
{-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)
Hmm.. see above comment, and comment in source code ...
please explain here more, what you want to do.
ok
/* Define max UBL image size */ #define UBL_IMAGE_SIZE (0x00003800u)
bye, Heiko
participants (3)
-
Heiko Schocher
-
Mike Frysinger
-
Stijn Souffriau