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

Stijn Souffriau stijn.souffriau at essensium.com
Sat Jun 2 17:39:35 CEST 2012


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



More information about the U-Boot mailing list