[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