* [U-Boot] [PATCH] powerpc/CoreNet: Allow pbl images to take u-boot images != 512K
@ 2013-05-26 22:51 Chris Packham
2013-05-27 6:18 ` Xie Shaohui-B21989
2013-06-21 20:31 ` [U-Boot] " Andy Fleming
0 siblings, 2 replies; 6+ messages in thread
From: Chris Packham @ 2013-05-26 22:51 UTC (permalink / raw)
To: u-boot
From: Chris Packham <chris.packham@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@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
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] powerpc/CoreNet: Allow pbl images to take u-boot images != 512K
2013-05-26 22:51 [U-Boot] [PATCH] powerpc/CoreNet: Allow pbl images to take u-boot images != 512K Chris Packham
@ 2013-05-27 6:18 ` Xie Shaohui-B21989
2013-05-27 10:15 ` Chris Packham
2013-06-21 20:31 ` [U-Boot] " Andy Fleming
1 sibling, 1 reply; 6+ messages in thread
From: Xie Shaohui-B21989 @ 2013-05-27 6:18 UTC (permalink / raw)
To: u-boot
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@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@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.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] powerpc/CoreNet: Allow pbl images to take u-boot images != 512K
2013-05-27 6:18 ` Xie Shaohui-B21989
@ 2013-05-27 10:15 ` Chris Packham
2013-05-28 6:24 ` Xie Shaohui-B21989
0 siblings, 1 reply; 6+ messages in thread
From: Chris Packham @ 2013-05-27 10:15 UTC (permalink / raw)
To: u-boot
On 27/05/13 18:18, Xie Shaohui-B21989 wrote:
> 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
>
Thanks for the pointer. I did check the main u-boot.git tree but didn't
search the list.
I don't know if it's a concern for u-boot but the patch linked above
assumes something that isn't quite true for my usage. My board uses the
SPI booting option for factory boot-strap. The "normal" method is
booting from NOR. When I build a NOR image I prepend a standalone
application image to the bootloader for convenience of only having to
program one image to NOR. In my case CONFIG_SYS_TEXT_BASE is not the
base address of the binary I'm trying to wrap in a pbl image.
Another advantage of my version is that you don't necessarily have to be
using mkimage/pblimage on the current u-boot configuration. It could be
an externally built image and we're just using mkimage/pblimage to wrap
it into something that we can program into SPI.
> 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@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@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.
>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] powerpc/CoreNet: Allow pbl images to take u-boot images != 512K
2013-05-27 10:15 ` Chris Packham
@ 2013-05-28 6:24 ` Xie Shaohui-B21989
0 siblings, 0 replies; 6+ messages in thread
From: Xie Shaohui-B21989 @ 2013-05-28 6:24 UTC (permalink / raw)
To: u-boot
> On 27/05/13 18:18, Xie Shaohui-B21989 wrote:
> > 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
> >
>
> Thanks for the pointer. I did check the main u-boot.git tree but didn't
> search the list.
>
> I don't know if it's a concern for u-boot but the patch linked above
> assumes something that isn't quite true for my usage. My board uses the
> SPI booting option for factory boot-strap. The "normal" method is booting
> from NOR. When I build a NOR image I prepend a standalone application
> image to the bootloader for convenience of only having to program one
> image to NOR. In my case CONFIG_SYS_TEXT_BASE is not the base address of
> the binary I'm trying to wrap in a pbl image.
>
> Another advantage of my version is that you don't necessarily have to be
> using mkimage/pblimage on the current u-boot configuration. It could be
> an externally built image and we're just using mkimage/pblimage to wrap
> it into something that we can program into SPI.
>
[S.H] OK. I see what is your requirement.
ACK.
Best Regards,
Shaohui Xie
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] powerpc/CoreNet: Allow pbl images to take u-boot images != 512K
2013-05-26 22:51 [U-Boot] [PATCH] powerpc/CoreNet: Allow pbl images to take u-boot images != 512K Chris Packham
2013-05-27 6:18 ` Xie Shaohui-B21989
@ 2013-06-21 20:31 ` Andy Fleming
2013-06-23 21:27 ` chris packham
1 sibling, 1 reply; 6+ messages in thread
From: Andy Fleming @ 2013-06-21 20:31 UTC (permalink / raw)
To: u-boot
On Mon, May 27, 2013 at 10:51:46AM +1200, Chris Packham wrote:
> From: Chris Packham <chris.packham@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@alliedtelesis.co.nz>
I've applied this (thanks), but I'll note it had a warning about unused
variable "size". Because it was unused. Please build-test any patches,
and ensure they are free of warnings.
> + * 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;
This was the variable, for future reference.
> +
> + 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;
> +}
Andy
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] powerpc/CoreNet: Allow pbl images to take u-boot images != 512K
2013-06-21 20:31 ` [U-Boot] " Andy Fleming
@ 2013-06-23 21:27 ` chris packham
0 siblings, 0 replies; 6+ messages in thread
From: chris packham @ 2013-06-23 21:27 UTC (permalink / raw)
To: u-boot
Hi Andy,
>>>On 6/22/2013 at 08:31 AM, Andy Fleming <afleming@freescale.com> wrote:
> On Mon, May 27, 2013 at 10:51:46AM +1200, Chris Packham wrote:
>> From: Chris Packham <chris.packham@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@alliedtelesis.co.nz>
>
> I've applied this (thanks), but I'll note it had a warning about unused
> variable "size". Because it was unused. Please build-test any patches,
> and ensure they are free of warnings.
>> + * 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;
>
> This was the variable, for future reference.
OK I'll keep an eye out in the future. I usually run with CFLAGS+='-Wall -Werror'
so I'm not sure how I missed this.
>> +
>> + 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;
>> +}
>
> Andy
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-06-23 21:27 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-26 22:51 [U-Boot] [PATCH] powerpc/CoreNet: Allow pbl images to take u-boot images != 512K Chris Packham
2013-05-27 6:18 ` Xie Shaohui-B21989
2013-05-27 10:15 ` Chris Packham
2013-05-28 6:24 ` Xie Shaohui-B21989
2013-06-21 20:31 ` [U-Boot] " Andy Fleming
2013-06-23 21:27 ` chris packham
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox