public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Heiko Schocher <hs@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 3/6] SPL: Port SPL framework to powerpc
Date: Fri, 24 Aug 2012 12:17:58 +0200	[thread overview]
Message-ID: <503754D6.1050405@denx.de> (raw)
In-Reply-To: <50373883.5090601@denx.de>

Hello Stefan

On 24.08.2012 10:17, Stefan Roese wrote:
> Hi Tom,
>
> On 08/23/2012 09:31 PM, Tom Rini wrote:
>>>>> @@ -89,7 +106,11 @@ void spl_parse_image_header(const struct image_header *header)
>>>>>   		spl_image.size = __be32_to_cpu(header->ih_size) + header_size;
>>>>>   		spl_image.entry_point = __be32_to_cpu(header->ih_load);
>>>>>   		/* Load including the header */
>>>>> +#ifdef CONFIG_ARM
>>>>>   		spl_image.load_addr = spl_image.entry_point - header_size;
>>>>> +#else
>>>>> +		spl_image.load_addr = __be32_to_cpu(header->ih_load);
>>>>> +#endif
>>>>
>>>> This isn't an ARM-ism but is instead because spl_nor.c isn't offsetting
>>>> where the header is like mmc/nand/ymodem do, yes?  Would it be possible
>>>> to make spl_nor.c behave like the others?  One of the reasons I ask is
>>>> I'm looking at a NOR chip on my desk...
>>>
>>> I was wondering about this line as well. Please explain: Why can't ARM
>>> just use header->ih_load as load_addr?
>>
>> Off the top of my head, I believe what goes on is that we read things
>> into SDRAM such that the header is taken into account and we don't need
>> to relocate the payload (U-Boot or Linux).
>
> Hmmm. So for example, when ih_load is set to 0x100000, then you load the
> image to (0x100000 - 0x40) = 0xfffc0? Is this correct?
>
> This can't work for powerpc. As here for Linux both load-address and
> entry-point are set to 0. So when loading the image (e.g. from NOR flash)
> can't copy the image header in front of the image.
>
> Another thing I'm wondering about: Why is only ih_load from the mkimage
> header used and not ih_ep (entry-point)?
>
> I suggest that we switch to copying the "real" image (payload) to the load
> address, skipping the header. Then "ih_load" and "ih_ep" can be used
> without modification.

Yep, this seems a good idea to me.

> BTW: There also seems to be a bug in some of the SPL loaders:
>
> For example in drivers/mtd/nand/nand_spl_load.c:
>
> 		...
> 		if (header->ih_os == IH_OS_LINUX) {
> 			/* happy - was a linux */
> 			nand_spl_load_image(CONFIG_SYS_NAND_SPL_KERNEL_OFFS,
> 				spl_image.size, (void *)spl_image.load_addr);
>
> The problem here is that the last 64 bytes of the image are not
> copied to SDRAM. Since the header is copied which is not included
> in the spl_image.size variable. With my idea of only copying
> the payload (skipping the header) this would be:
>
> 			nand_spl_load_image(CONFIG_SYS_NAND_SPL_KERNEL_OFFS +
> 				sizeof(struct image_header),
> 				spl_image.size, (void *)spl_image.load_addr);
>
> What do you think? Should we switch to this way of loading images?
> Seems more logical to me. And we don't run into problems where the
> load address is 0.

Yes, that should be the way to go ... @Simon: Do you see here some
reason for not switching to copy the real payload?

bye,
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

  reply	other threads:[~2012-08-24 10:17 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-23  8:12 [U-Boot] [PATCH 0/6] SPL: Port SPL framework to powerpc Stefan Roese
2012-08-23  8:12 ` [U-Boot] [PATCH 1/6] SPL: Add NOR flash booting support Stefan Roese
2012-08-23 15:07   ` Tom Rini
2012-08-23 15:19     ` Stefan Roese
2012-08-23  8:12 ` [U-Boot] [PATCH 2/6] powerpc: Extract EPAPR_MAGIC constants into processor.h Stefan Roese
2012-08-23  8:12 ` [U-Boot] [PATCH 3/6] SPL: Port SPL framework to powerpc Stefan Roese
2012-08-23 17:10   ` Tom Rini
2012-08-23 18:16     ` Stefan Roese
2012-08-23 19:31       ` Tom Rini
2012-08-24  8:17         ` Stefan Roese
2012-08-24 10:17           ` Heiko Schocher [this message]
2012-08-24 10:56             ` Stefan Roese
2012-08-24 11:13               ` Stefan Roese
2012-08-24 11:49                 ` Daniel Schwierzeck
2012-08-24 14:11                   ` Stefan Roese
2012-08-24 15:29                     ` Daniel Schwierzeck
2012-08-24 16:06                     ` Stefan Roese
2012-08-24 16:42                       ` Daniel Schwierzeck
2012-08-24 17:24                         ` Stefan Roese
2012-08-24 22:13                           ` Daniel Schwierzeck
2012-08-24 19:15                 ` Tom Rini
2012-08-25  8:48                   ` Stefan Roese
2012-08-23 21:39   ` Tom Rini
2012-08-24  7:01     ` Stefan Roese
2012-08-24 15:55       ` Tom Rini
2012-08-24 16:07         ` Stefan Roese
2012-08-24 16:19           ` Tom Rini
2012-08-24 17:21             ` Stefan Roese
2012-08-23 21:52   ` Tom Rini
2012-08-24  7:03     ` Stefan Roese
2012-08-23  8:12 ` [U-Boot] [PATCH 4/6] env: Extract getenv_f() into separate source file Stefan Roese
2012-08-23  8:12 ` [U-Boot] [PATCH 5/6] mpc5200: Add SPL support Stefan Roese
2012-08-23  8:12 ` [U-Boot] [PATCH 6/6] mpc5200: Add a3m071 board support Stefan Roese
2012-08-23 21:53 ` [U-Boot] [PATCH 0/6] SPL: Port SPL framework to powerpc Tom Rini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=503754D6.1050405@denx.de \
    --to=hs@denx.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox