diff mbox

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

Message ID 1337532786-1374-1-git-send-email-stijn.souffriau@essensium.com
State Changes Requested
Delegated to: Tom Rini
Headers show

Commit Message

Stijn Souffriau May 20, 2012, 4:53 p.m. UTC
---
 tools/ublimage.c |   19 +++++++++++++++++++
 tools/ublimage.h |    2 ++
 2 files changed, 21 insertions(+), 0 deletions(-)

Comments

Mike Frysinger May 20, 2012, 7 p.m. UTC | #1
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
Heiko Schocher May 21, 2012, 6:30 a.m. UTC | #2
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
Stijn Souffriau June 2, 2012, 3:39 p.m. UTC | #3
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
diff mbox

Patch

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)