From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stijn Souffriau Date: Sat, 02 Jun 2012 17:39:35 +0200 Subject: [U-Boot] [PATCH] Added u-boot header generating functionality to ublimage In-Reply-To: <4FB9E119.3070901@denx.de> References: <1337532786-1374-1-git-send-email-stijn.souffriau@essensium.com> <4FB9E119.3070901@denx.de> Message-ID: <4FCA33B7.1070008@essensium.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 >> #include "ublimage.h" >> >> +#include >> +#include >> +#include >> + >> /* >> * 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