[U-Boot] [PATCH] powerpc/CoreNet: Allow pbl images to take u-boot images != 512K

Xie Shaohui-B21989 B21989 at freescale.com
Mon May 27 08:18:14 CEST 2013


Hi, Chris,

For the init value of "next_pbl_cmd", there was a patch at below link can be used:
http://lists.denx.de/pipermail/u-boot/2013-March/150260.html

this patch with your modification below should can meet your requirement:
> -static unsigned char mem_buf[600000];
> +static unsigned char mem_buf[1000000];


Best Regards, 
Shaohui Xie
> -----Original Message-----
> From: Chris Packham [mailto:judge.packham at gmail.com]
> Sent: Monday, May 27, 2013 6:52 AM
> To: Fleming Andy-AFLEMING
> Cc: Xie Shaohui-B21989; u-boot at lists.denx.de; Chris Packham
> Subject: [PATCH] powerpc/CoreNet: Allow pbl images to take u-boot
> images != 512K
> 
> From: Chris Packham <chris.packham at alliedtelesis.co.nz>
> 
> Instead of assuming that SYS_TEXT_BASE is 0xFFF80000 calculate the
> initial pbl command offset by subtracting the image size from the top of
> the 24-bit address range. Also increase the size of the memory buffer to
> accommodate a larger output image.
> 
> Signed-off-by: Chris Packham <chris.packham at alliedtelesis.co.nz>
> ---
> Hi,
> 
> I was trying to get a SPIFLASH image working for my board based on a
> P2040 and found that the pblimage tool assumes that u-boot.bin is always
> 512K. In my case it's actually larger. This patch is my attempt to allow
> for an arbitrary u-boot.bin image size.
> 
> Thanks,
> Chris
> 
>  tools/pblimage.c |   33 ++++++++++++++++++++++++++-------
>  1 file changed, 26 insertions(+), 7 deletions(-)
> 
> diff --git a/tools/pblimage.c b/tools/pblimage.c index 508a747..3582ada
> 100644
> --- a/tools/pblimage.c
> +++ b/tools/pblimage.c
> @@ -26,18 +26,14 @@
>  #include "pblimage.h"
> 
>  /*
> - * The PBL can load up to 64 bytes at a time, so we split the U-Boot
> - * image into 64 byte chunks. PBL needs a command for each piece, of
> - * the form "81xxxxxx", where "xxxxxx" is the offset. SYS_TEXT_BASE
> - * is 0xFFF80000 for PBL boot, and PBL only cares about low 24-bit,
> - * so it starts from 0x81F80000.
> + * Initialize to an invalid value.
>   */
> -static uint32_t next_pbl_cmd = 0x81F80000;
> +static uint32_t next_pbl_cmd = 0x82000000;
>  /*
>   * need to store all bytes in memory for calculating crc32, then write
> the
>   * bytes to image file for PBL boot.
>   */
> -static unsigned char mem_buf[600000];
> +static unsigned char mem_buf[1000000];
>  static unsigned char *pmem_buf = mem_buf;  static int pbl_size;  static
> char *fname = "Unknown"; @@ -52,6 +48,28 @@ static union
> 
>  #define ENDIANNESS ((char)endian_test.l)
> 
> +/*
> + * The PBL can load up to 64 bytes at a time, so we split the U-Boot
> + * image into 64 byte chunks. PBL needs a command for each piece, of
> + * the form "81xxxxxx", where "xxxxxx" is the offset. Calculate the
> + * start offset by subtracting the size of the u-boot image from the
> + * top of the allowable 24-bit range.
> + */
> +static void init_next_pbl_cmd(FILE *fp_uboot) {
> +	struct stat st;
> +	int fd = fileno(fp_uboot);
> +	size_t size;
> +
> +	if (fstat(fd, &st) == -1) {
> +		printf("Error: Could not determine u-boot image size. %s\n",
> +			strerror(errno));
> +		exit(EXIT_FAILURE);
> +	}
> +
> +	next_pbl_cmd = 0x82000000 - st.st_size; }
> +
>  static void generate_pbl_cmd(void)
>  {
>  	uint32_t val = next_pbl_cmd;
> @@ -80,6 +98,7 @@ static void pbl_fget(size_t size, FILE *stream)
>  /* load split u-boot with PBI command 81xxxxxx. */  static void
> load_uboot(FILE *fp_uboot)  {
> +	init_next_pbl_cmd(fp_uboot);
>  	while (next_pbl_cmd < 0x82000000) {
>  		generate_pbl_cmd();
>  		pbl_fget(64, fp_uboot);
> --
> 1.7.9.5
> 
> 
> NOTICE: This message contains privileged and confidential
> information intended only for the use of the addressee
> named above. If you are not the intended recipient of
> this message you are hereby notified that you must not
> disseminate, copy or take any action in reliance on it.
> If you have received this message in error please
> notify Allied Telesis Labs Ltd immediately.
> Any views expressed in this message are those of the
> individual sender, except where the sender has the
> authority to issue and specifically states them to
> be the views of Allied Telesis Labs.




More information about the U-Boot mailing list