diff mbox

[U-Boot,2/2,v2] Add readme of how to boot from espi flash for p4080ds.

Message ID 1289897403-24602-1-git-send-email-b21989@freescale.com
State Changes Requested
Headers show

Commit Message

shaohui xie Nov. 16, 2010, 8:50 a.m. UTC
Signed-off-by: Shaohui Xie <b21989@freescale.com>
---
 doc/README.espi-boot-p4080ds |   85 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 85 insertions(+), 0 deletions(-)
 create mode 100644 doc/README.espi-boot-p4080ds

Comments

Wolfgang Denk Nov. 16, 2010, 10:34 a.m. UTC | #1
Dear Shaohui Xie,

In message <1289897403-24602-1-git-send-email-b21989@freescale.com> you wrote:
>
> +The P4080 is capable of booting from SPI. The bootup process can be divided into
> +two stages: the first stage will load RCW and write configuration registers to
> +initialize SPI interface, and configure one CPC as 1M SRAM, and loads U-boot image
> +to CPC. The second stage will configure all the hardware and boot up to U-Boot
> +command line.
> +
> +The PBL image contains three parts, the first is RCW, the second is PBI commands
> +performs configuration registers write, the third is the 512KB u-boot image. The
> +PBL image is produced by tool pbl_image_tool.html.

Please explain abbreviations. What's PBI? CPC? 

What is "pbl_image_tool.html"?  I doubt that a HTML page can be used
as tool?

And where can this tool be found?  And why is it not part of the
U-Boot distribution?

> +1. Producing RCW
> +Copy RCW of u-boot dump and paste it to tab "Tools" of the tool and choose
> +"Boot" and change PBI_SRC to "0b0101 - SPI 24b Addressing", change BOOT_LOC to

You really mean one has to go to some web page and manually copy and
paste information there?

To build some image?

May I ask how you do automatic regression testing?

> +2. Producing ACS File

What is ACS?

> +	make P4080DS_PBL_BOOT_INDIRECT_config
> +	make CROSS_COMPILE=powerpc-none-linux-gnuspe- all
> +	xxd u-boot.bin > u-boot.xxd

> +3. Producing PBI commands
> +Switch to tab "PBI" and paste commands below into text field (please note these
> +commands are for CPC1 used as SRAM only, change corresponding register setting
> +if CPC2 need to be used as SRAM), then choose "ACS File (XXD Object Dump)",
> +change Offset to "f80000", and click "Browse" to select the u-boot.xxd file
> +produced in step 2, and click "Add PBI Data", after it finished, paste
> +"09138000 00000000" and "091380c0 00000000" at the end.

This must be a bad joke.

Can you not provide a plain and simple AUTOMATIC way to get this
result? some plain stupid command line tool? Something that works as
a simple "make XXX" ?  So it can be scripted / automatized / used?

Best regards,

Wolfgang Denk
Detlev Zundel Nov. 16, 2010, 4:21 p.m. UTC | #2
Hi Shaohui Xie,

[...]

> Can you not provide a plain and simple AUTOMATIC way to get this
> result? some plain stupid command line tool? Something that works as
> a simple "make XXX" ?  So it can be scripted / automatized / used?

Maybe have a look at "tools/kwbimage.c".  This is a tool for kirkwood
chips to build "wrapped images".

I'm not into this tool, but it sounds like it tries to solve a similar
problem, so maybe you can leverage what's already there?

Cheers
  Detlev
Scott Wood Nov. 16, 2010, 9:54 p.m. UTC | #3
On Tue, 16 Nov 2010 11:34:43 +0100
Wolfgang Denk <wd@denx.de> wrote:

> Dear Shaohui Xie,
> 
> In message <1289897403-24602-1-git-send-email-b21989@freescale.com> you wrote:
> >
> > +The P4080 is capable of booting from SPI. The bootup process can be divided into
> > +two stages: the first stage will load RCW and write configuration registers to
> > +initialize SPI interface, and configure one CPC as 1M SRAM, and loads U-boot image
> > +to CPC. The second stage will configure all the hardware and boot up to U-Boot
> > +command line.
> > +
> > +The PBL image contains three parts, the first is RCW, the second is PBI commands
> > +performs configuration registers write, the third is the 512KB u-boot image. The
> > +PBL image is produced by tool pbl_image_tool.html.
> 
> Please explain abbreviations. What's PBI? CPC? 

PBI is pre-boot initialization.

CPC is corenet platform cache -- a.k.a. L3 cache.

> What is "pbl_image_tool.html"?  I doubt that a HTML page can be used
> as tool?

The html file contains a javascript-based tool.

> And where can this tool be found?  And why is it not part of the
> U-Boot distribution?

It *may* be bundled with the BSP -- not sure.

It would be really nice if it were made generally available, though I
don't know if there are any plans for that.  Certainly we shouldn't be
referring users towards it if it's not publicly available.

> > +1. Producing RCW
> > +Copy RCW of u-boot dump and paste it to tab "Tools" of the tool and choose
> > +"Boot" and change PBI_SRC to "0b0101 - SPI 24b Addressing", change BOOT_LOC to
> 
> You really mean one has to go to some web page and manually copy and
> paste information there?
> 
> To build some image?
> 
> May I ask how you do automatic regression testing?

We usually use xxd to turn a hex dump of an RCW into a binary.  You
only need the tool if you want something interactive to make changes to
the RCW.

The problem with providing such a hexdump here is that it would contain
other settings that may not be appropriate for the board's
configuration.  RCWs on p4080 are a lot more complicated than on older
chips; it's no longer practical to embed a near-universal default
RCW in the U-Boot build.

> > +2. Producing ACS File
> 
> What is ACS?

Don't know, I don't even have a reference to that in my copy of the RCW
tool. :-P

> > +	make P4080DS_PBL_BOOT_INDIRECT_config
> > +	make CROSS_COMPILE=powerpc-none-linux-gnuspe- all
> > +	xxd u-boot.bin > u-boot.xxd
> 
> > +3. Producing PBI commands
> > +Switch to tab "PBI" and paste commands below into text field (please note these
> > +commands are for CPC1 used as SRAM only, change corresponding register setting
> > +if CPC2 need to be used as SRAM), then choose "ACS File (XXD Object Dump)",
> > +change Offset to "f80000", and click "Browse" to select the u-boot.xxd file
> > +produced in step 2, and click "Add PBI Data", after it finished, paste
> > +"09138000 00000000" and "091380c0 00000000" at the end.
> 
> This must be a bad joke.
> 
> Can you not provide a plain and simple AUTOMATIC way to get this
> result? some plain stupid command line tool? Something that works as
> a simple "make XXX" ?  So it can be scripted / automatized / used?

Yes, a simple C tool to take an existing PBL or RCW dump and "espi-ize"
it into a PBL dump would be nice.  The user will still need to acquire
the existing RCW manually.  This only needs to be done once on a board;
it's not part of building a U-Boot image.

-Scott
Wolfgang Denk Nov. 16, 2010, 10:02 p.m. UTC | #4
Dear Scott Wood,

In message <20101116155432.585fa514@udp111988uds.am.freescale.net> you wrote:
>
> > Can you not provide a plain and simple AUTOMATIC way to get this
> > result? some plain stupid command line tool? Something that works as
> > a simple "make XXX" ?  So it can be scripted / automatized / used?
> 
> Yes, a simple C tool to take an existing PBL or RCW dump and "espi-ize"
> it into a PBL dump would be nice.  The user will still need to acquire
> the existing RCW manually.  This only needs to be done once on a board;
> it's not part of building a U-Boot image.

If this only needs to be done once on a board, then why cannot it be
included in U-Boot with the configuration for this specific board?

Best regards,

Wolfgang Denk
Scott Wood Nov. 16, 2010, 10:18 p.m. UTC | #5
On Tue, 16 Nov 2010 23:02:48 +0100
Wolfgang Denk <wd@denx.de> wrote:

> Dear Scott Wood,
> 
> In message <20101116155432.585fa514@udp111988uds.am.freescale.net> you wrote:
> >
> > > Can you not provide a plain and simple AUTOMATIC way to get this
> > > result? some plain stupid command line tool? Something that works as
> > > a simple "make XXX" ?  So it can be scripted / automatized / used?
> > 
> > Yes, a simple C tool to take an existing PBL or RCW dump and "espi-ize"
> > it into a PBL dump would be nice.  The user will still need to acquire
> > the existing RCW manually.  This only needs to be done once on a board;
> > it's not part of building a U-Boot image.
> 
> If this only needs to be done once on a board, then why cannot it be
> included in U-Boot with the configuration for this specific board?

We probably should provide some RCWs as a starting point (we do in the
BSP, outside of the U-Boot component) -- but there are more valid RCWs
than there are U-Bboot configurations.

Besides details about how the board is wired up and where you're
booting from, it depends on what sort of riser cards you have in which
slots, what speed your chip is rated for, etc.

The usual case for NOR flash is a user building U-Boot and flashing
it, while leaving the existing RCW in place -- the RCW is not embedded
in the U-Boot image like it is on 83xx.  This is a fortunate accident
of where the reset vector is located, though.  Other boot sources such
as espi are probably not as lucky.  But even then, you should only need
to create a PBL/RCW once, to be included in all subsequent U-Boot
builds.

-Scott
shaohui xie Nov. 17, 2010, 10:25 a.m. UTC | #6
From: Wood Scott-B07421 
Sent: Wednesday, November 17, 2010 5:55 AM
To: Wolfgang Denk
Cc: Xie Shaohui-B21989; u-boot@lists.denx.de; Gala Kumar-B11780
Subject: Re: [U-Boot] [PATCH 2/2][v2] Add readme of how to boot from
espi flash for p4080ds.

 

On Tue, 16 Nov 2010 11:34:43 +0100
Wolfgang Denk <wd@denx.de> wrote:

> Dear Shaohui Xie,
>
> In message <1289897403-24602-1-git-send-email-b21989@freescale.com>
you wrote:
> >
> > +The P4080 is capable of booting from SPI. The bootup process can be
divided into
> > +two stages: the first stage will load RCW and write configuration
registers to
> > +initialize SPI interface, and configure one CPC as 1M SRAM, and
loads U-boot image
> > +to CPC. The second stage will configure all the hardware and boot
up to U-Boot
> > +command line.
> > +
> > +The PBL image contains three parts, the first is RCW, the second is
PBI commands
> > +performs configuration registers write, the third is the 512KB
u-boot image. The
> > +PBL image is produced by tool pbl_image_tool.html.
>
> Please explain abbreviations. What's PBI? CPC?

PBI is pre-boot initialization.

CPC is corenet platform cache -- a.k.a. L3 cache.

> What is "pbl_image_tool.html"?  I doubt that a HTML page can be used
> as tool?

The html file contains a javascript-based tool.

> And where can this tool be found?  And why is it not part of the
> U-Boot distribution?

It *may* be bundled with the BSP -- not sure.

It would be really nice if it were made generally available, though I
don't know if there are any plans for that.  Certainly we shouldn't be
referring users towards it if it's not publicly available.

> > +1. Producing RCW
> > +Copy RCW of u-boot dump and paste it to tab "Tools" of the tool and
choose
> > +"Boot" and change PBI_SRC to "0b0101 - SPI 24b Addressing", change
BOOT_LOC to
>
> You really mean one has to go to some web page and manually copy and
> paste information there?
>
> To build some image?
>
> May I ask how you do automatic regression testing?

We usually use xxd to turn a hex dump of an RCW into a binary.  You
only need the tool if you want something interactive to make changes to
the RCW.

The problem with providing such a hexdump here is that it would contain
other settings that may not be appropriate for the board's
configuration.  RCWs on p4080 are a lot more complicated than on older
chips; it's no longer practical to embed a near-universal default
RCW in the U-Boot build.

> > +2. Producing ACS File
>
> What is ACS?

Don't know, I don't even have a reference to that in my copy of the RCW
tool. :-P



[Xie Shaohui] I don't know what is the ACS stands for either, but it is
a XXD object dump file used by the tool to produce PBI, for example
after  run "xxd u-boot.bin > u-boot.xxd", the output u-boot.xxd is the
"XXD object dump file". If you take a look at the tool, you will find a
selection labeled with "ACS File (XXD object dump)" in tab "PBI".


> > +   make P4080DS_PBL_BOOT_INDIRECT_config
> > +   make CROSS_COMPILE=powerpc-none-linux-gnuspe- all
> > +   xxd u-boot.bin > u-boot.xxd
>
> > +3. Producing PBI commands
> > +Switch to tab "PBI" and paste commands below into text field
(please note these
> > +commands are for CPC1 used as SRAM only, change corresponding
register setting
> > +if CPC2 need to be used as SRAM), then choose "ACS File (XXD Object
Dump)",
> > +change Offset to "f80000", and click "Browse" to select the
u-boot.xxd file
> > +produced in step 2, and click "Add PBI Data", after it finished,
paste
> > +"09138000 00000000" and "091380c0 00000000" at the end.
>
> This must be a bad joke.
>
> Can you not provide a plain and simple AUTOMATIC way to get this
> result? some plain stupid command line tool? Something that works as
> a simple "make XXX" ?  So it can be scripted / automatized / used?

Yes, a simple C tool to take an existing PBL or RCW dump and "espi-ize"
it into a PBL dump would be nice.  The user will still need to acquire
the existing RCW manually.  This only needs to be done once on a board;
it's not part of building a U-Boot image.




[Xie Shaohui] A simple C tool will make things more complex, the
pbl_image_tool does the same thing and it is irreplaceable, something
like RCW has to be produced manually, and because there is no
near-universal default RCW, this README took a basic assumption that
user already can boot from NOR flash, so user can reuse the RCW dump of
NOR u-boot with change "PBI_SRC" and "BOOT_LOC" only.

This README describes how to build an Image can be used by PBL (pre-boot
loader), building u-boot image is the first step, then RCW, PBI
commands, XXD dump of u-boot.bin, the tool will combine the RCW and PBI
and XXD dump together to produce the PBL XXD file, suppose the PBL XXD
file is saved as x.xxd, we need to run "xxd -r x.xxd > pbl_image.bin" to
produce the final PBL Image. Take a look at the whole process, I see no
way it can be scripted / automatized.

 

Best Regards, 
Shaohui Xie
Detlev Zundel Nov. 17, 2010, 12:42 p.m. UTC | #7
Hi Xie,

[...]

>> What is ACS?
>
> Don't know, I don't even have a reference to that in my copy of the RCW
> tool. :-P
>
> [Xie Shaohui] I don't know what is the ACS stands for either, but it is
> a XXD object dump file used by the tool to produce PBI, for example
> after  run "xxd u-boot.bin > u-boot.xxd", the output u-boot.xxd is the
> "XXD object dump file". If you take a look at the tool, you will find a
> selection labeled with "ACS File (XXD object dump)" in tab "PBI".

From my point of view we simply do not want a U-Boot configuration that
needs to visit an external website to even _compile_ the code.  Let
alone copying stuff to and from, hex dumping it etc.  This is not
acceptable.

>> > +   make P4080DS_PBL_BOOT_INDIRECT_config
>> > +   make CROSS_COMPILE=powerpc-none-linux-gnuspe- all
>> > +   xxd u-boot.bin > u-boot.xxd
>>
>> > +3. Producing PBI commands
>> > +Switch to tab "PBI" and paste commands below into text field
> (please note these
>> > +commands are for CPC1 used as SRAM only, change corresponding
> register setting
>> > +if CPC2 need to be used as SRAM), then choose "ACS File (XXD Object
> Dump)",
>> > +change Offset to "f80000", and click "Browse" to select the
> u-boot.xxd file
>> > +produced in step 2, and click "Add PBI Data", after it finished,
> paste
>> > +"09138000 00000000" and "091380c0 00000000" at the end.
>>
>> This must be a bad joke.
>>
>> Can you not provide a plain and simple AUTOMATIC way to get this
>> result? some plain stupid command line tool? Something that works as
>> a simple "make XXX" ?  So it can be scripted / automatized / used?
>
> Yes, a simple C tool to take an existing PBL or RCW dump and "espi-ize"
> it into a PBL dump would be nice.  The user will still need to acquire
> the existing RCW manually.  This only needs to be done once on a board;
> it's not part of building a U-Boot image.

@Scott: What is meant by "acquiring the existing RCW"?  Can't we have a
tool that is fed with a value for RCW?

> [Xie Shaohui] A simple C tool will make things more complex, the
> pbl_image_tool does the same thing and it is irreplaceable, something

No tool is irreplaceable, ever.

> like RCW has to be produced manually, and because there is no
> near-universal default RCW, this README took a basic assumption that
> user already can boot from NOR flash, so user can reuse the RCW dump of
> NOR u-boot with change "PBI_SRC" and "BOOT_LOC" only.
>
> This README describes how to build an Image can be used by PBL (pre-boot
> loader), building u-boot image is the first step, then RCW, PBI
> commands, XXD dump of u-boot.bin, the tool will combine the RCW and PBI
> and XXD dump together to produce the PBL XXD file, suppose the PBL XXD
> file is saved as x.xxd, we need to run "xxd -r x.xxd > pbl_image.bin" to
> produce the final PBL Image. Take a look at the whole process, I see no
> way it can be scripted / automatized.

I said it once before, look at how kwbimage wraps up u-boot.bin into
such an "augmented" image.  If the Marvell guys can do this for their
platform, I see no reason why this cannot be done for your platform.

Cheers
  Detlev
Wolfgang Denk Nov. 17, 2010, 1:21 p.m. UTC | #8
Dear Xie Shaohui-B21989,

In message <267A3B246C22C34A8E574051858E0770018A64@039-SN1MPN1-003.039d.mgd.msft.net> you wrote:
>
> This README describes how to build an Image can be used by PBL (pre-boot
> loader), building u-boot image is the first step, then RCW, PBI
> commands, XXD dump of u-boot.bin, the tool will combine the RCW and PBI
> and XXD dump together to produce the PBL XXD file, suppose the PBL XXD
> file is saved as x.xxd, we need to run "xxd -r x.xxd > pbl_image.bin" to
> produce the final PBL Image. Take a look at the whole process, I see no
> way it can be scripted / automatized.

You cannot reasonably expect of any of your users to go through
such a pain.  This is plain unacceptable.

Please come up with a simple solution that can be integrated into the
U-Boot build procedure.

Things like hex-dumping images and copy & pasting the hexdumps to
some proprietary tool and then going through the same pain again just
backwards may have been acceptable 20 years ago.  Not so any more.

Best regards,

Wolfgang Denk
Kumar Gala Nov. 17, 2010, 5:19 p.m. UTC | #9
On Nov 16, 2010, at 10:21 AM, Detlev Zundel wrote:

> Hi Shaohui Xie,
> 
> [...]
> 
>> Can you not provide a plain and simple AUTOMATIC way to get this
>> result? some plain stupid command line tool? Something that works as
>> a simple "make XXX" ?  So it can be scripted / automatized / used?
> 
> Maybe have a look at "tools/kwbimage.c".  This is a tool for kirkwood
> chips to build "wrapped images".
> 
> I'm not into this tool, but it sounds like it tries to solve a similar
> problem, so maybe you can leverage what's already there?

How does kwbimage.c work?  Does it just wrap the image generated by mkimage differently?  Can it take any additional input files?

- k
Scott Wood Nov. 17, 2010, 8:12 p.m. UTC | #10
On Wed, 17 Nov 2010 13:42:43 +0100
Detlev Zundel <dzu@denx.de> wrote:

> > Yes, a simple C tool to take an existing PBL or RCW dump and "espi-ize"
> > it into a PBL dump would be nice.  The user will still need to acquire
> > the existing RCW manually.  This only needs to be done once on a board;
> > it's not part of building a U-Boot image.
> 
> @Scott: What is meant by "acquiring the existing RCW"?  Can't we have a
> tool that is fed with a value for RCW?

I mean that a simple tool could take an existing RCW and modify it for
espi boot, but it needs to take as input an RCW that is valid for other
parameters.

The least error prone way to do this, for a user that wants to take a
board that's already successfully booting from NOR and make it boot
from eSPI, is to extract the RCW they're already using from the board.

Creating an RCW from scratch is more complicated, which is why we
have that javascript tool -- though we could provide some example RCWs
for common configs.

> > This README describes how to build an Image can be used by PBL (pre-boot
> > loader), building u-boot image is the first step, then RCW, PBI
> > commands, XXD dump of u-boot.bin, the tool will combine the RCW and PBI
> > and XXD dump together to produce the PBL XXD file, suppose the PBL XXD
> > file is saved as x.xxd, we need to run "xxd -r x.xxd > pbl_image.bin" to
> > produce the final PBL Image. Take a look at the whole process, I see no
> > way it can be scripted / automatized.
> 
> I said it once before, look at how kwbimage wraps up u-boot.bin into
> such an "augmented" image.  If the Marvell guys can do this for their
> platform, I see no reason why this cannot be done for your platform.

Sure, once you have a valid input RCW it should be possible to automate
the rest.

-Scott
Wolfgang Denk Nov. 17, 2010, 8:54 p.m. UTC | #11
Dear Kumar Gala,

In message <AA957E8D-3C9C-4C74-8FA4-11D5122ED01A@freescale.com> you wrote:
> 
> How does kwbimage.c work?  Does it just wrap the image generated by mkimage differently?  Can it take any additional input files?

It does take an additional input file.

We have several such externsion in "mkimage" now: Marvell has their
"kwbimage" format, Freescale has their "imximage" format. 

Best regards,

Wolfgang Denk
Scott Wood Nov. 17, 2010, 8:57 p.m. UTC | #12
On Wed, 17 Nov 2010 03:25:05 -0700
"Xie Shaohui-B21989" <B21989@freescale.com> wrote:

> From: Wood Scott-B07421 
> Sent: Wednesday, November 17, 2010 5:55 AM
> To: Wolfgang Denk
> Cc: Xie Shaohui-B21989; u-boot@lists.denx.de; Gala Kumar-B11780
> Subject: Re: [U-Boot] [PATCH 2/2][v2] Add readme of how to boot from
> espi flash for p4080ds.
> 
>  
> Yes, a simple C tool to take an existing PBL or RCW dump and "espi-ize"
> it into a PBL dump would be nice.  The user will still need to acquire
> the existing RCW manually.  This only needs to be done once on a board;
> it's not part of building a U-Boot image.
> 
> 
> 
> 
> [Xie Shaohui] A simple C tool will make things more complex, the
> pbl_image_tool does the same thing

It doesn't do the same thing for poeple who don't have access to it.

Plus, requiring the user to do a bunch of manual stuff is not "the same
thing" as something more automated.

More work for us upfront is not the same as "more complex".

> and it is irreplaceable,

Tell that to the people trying to replace it with some big
Eclipse-based thing. :-)

> something like RCW has to be produced manually, and because there is no
> near-universal default RCW, this README took a basic assumption that
> user already can boot from NOR flash, so user can reuse the RCW dump of
> NOR u-boot with change "PBI_SRC" and "BOOT_LOC" only.

Yes.  But once the user provides an RCW, everything else should be
automatable.

-Scott
Detlev Zundel Nov. 18, 2010, 4:27 p.m. UTC | #13
Hi Scott,

> On Wed, 17 Nov 2010 13:42:43 +0100
> Detlev Zundel <dzu@denx.de> wrote:
>
>> > Yes, a simple C tool to take an existing PBL or RCW dump and "espi-ize"
>> > it into a PBL dump would be nice.  The user will still need to acquire
>> > the existing RCW manually.  This only needs to be done once on a board;
>> > it's not part of building a U-Boot image.
>> 
>> @Scott: What is meant by "acquiring the existing RCW"?  Can't we have a
>> tool that is fed with a value for RCW?
>
> I mean that a simple tool could take an existing RCW and modify it for
> espi boot, but it needs to take as input an RCW that is valid for other
> parameters.
>
> The least error prone way to do this, for a user that wants to take a
> board that's already successfully booting from NOR and make it boot
> from eSPI, is to extract the RCW they're already using from the board.

Ok, thanks for the explanation.

> Creating an RCW from scratch is more complicated, which is why we
> have that javascript tool -- though we could provide some example RCWs
> for common configs.

Just for my information - it sounds like the RCW is really complex.  If
RCW still expands to "reset control word", I would expect it to be 32
bits though.  It is rather common for U-Boot porters to determine 32-bit
values for specific registers without using a javascript tool, so maybe
I'm wrong here.

>> > This README describes how to build an Image can be used by PBL (pre-boot
>> > loader), building u-boot image is the first step, then RCW, PBI
>> > commands, XXD dump of u-boot.bin, the tool will combine the RCW and PBI
>> > and XXD dump together to produce the PBL XXD file, suppose the PBL XXD
>> > file is saved as x.xxd, we need to run "xxd -r x.xxd > pbl_image.bin" to
>> > produce the final PBL Image. Take a look at the whole process, I see no
>> > way it can be scripted / automatized.
>> 
>> I said it once before, look at how kwbimage wraps up u-boot.bin into
>> such an "augmented" image.  If the Marvell guys can do this for their
>> platform, I see no reason why this cannot be done for your platform.
>
> Sure, once you have a valid input RCW it should be possible to automate
> the rest.

For the supported configurations the RCW should be provided of course,
so I do not see a big problem here?

Cheers
  Detlev
Kumar Gala Nov. 18, 2010, 5:01 p.m. UTC | #14
>> Creating an RCW from scratch is more complicated, which is why we
>> have that javascript tool -- though we could provide some example RCWs
>> for common configs.
> 
> Just for my information - it sounds like the RCW is really complex.  If
> RCW still expands to "reset control word", I would expect it to be 32
> bits though.  It is rather common for U-Boot porters to determine 32-bit
> values for specific registers without using a javascript tool, so maybe
> I'm wrong here.

On P4080 (and future devices) it is 512 bits of data so not as trivial as our older parts that used a simple 32-bit RCW.

>>>> This README describes how to build an Image can be used by PBL (pre-boot
>>>> loader), building u-boot image is the first step, then RCW, PBI
>>>> commands, XXD dump of u-boot.bin, the tool will combine the RCW and PBI
>>>> and XXD dump together to produce the PBL XXD file, suppose the PBL XXD
>>>> file is saved as x.xxd, we need to run "xxd -r x.xxd > pbl_image.bin" to
>>>> produce the final PBL Image. Take a look at the whole process, I see no
>>>> way it can be scripted / automatized.
>>> 
>>> I said it once before, look at how kwbimage wraps up u-boot.bin into
>>> such an "augmented" image.  If the Marvell guys can do this for their
>>> platform, I see no reason why this cannot be done for your platform.
>> 
>> Sure, once you have a valid input RCW it should be possible to automate
>> the rest.
> 
> For the supported configurations the RCW should be provided of course,
> so I do not see a big problem here?

Agreed, we should be provide a default RCW for the boards as part of u-boot.

- k
Detlev Zundel Nov. 19, 2010, 11:06 a.m. UTC | #15
Hi Kumar,

>>> Creating an RCW from scratch is more complicated, which is why we
>>> have that javascript tool -- though we could provide some example RCWs
>>> for common configs.
>> 
>> Just for my information - it sounds like the RCW is really complex.  If
>> RCW still expands to "reset control word", I would expect it to be 32
>> bits though.  It is rather common for U-Boot porters to determine 32-bit
>> values for specific registers without using a javascript tool, so maybe
>> I'm wrong here.
>
> On P4080 (and future devices) it is 512 bits of data so not as trivial
> as our older parts that used a simple 32-bit RCW.

Ah I see.  So rather than being a _word_ it's more like a reset control
_story_ :)

Thanks
  Detlev
diff mbox

Patch

diff --git a/doc/README.espi-boot-p4080ds b/doc/README.espi-boot-p4080ds
new file mode 100644
index 0000000..79ef459
--- /dev/null
+++ b/doc/README.espi-boot-p4080ds
@@ -0,0 +1,85 @@ 
+Overview:
+=========
+The P4080 integrates a pre-boot-loader(PBL) which performs configuration
+registers read and write to initialize external memory devices such as I2c,
+eLBC FCM(NAND flash), eSDHC, or SPI interface, loads RCW and/or pre-boot
+initialization commands from those devices before the local cores are permitted
+to boot.
+
+Boot from SPI:
+==============
+
+The P4080 is capable of booting from SPI. The bootup process can be divided into
+two stages: the first stage will load RCW and write configuration registers to
+initialize SPI interface, and configure one CPC as 1M SRAM, and loads U-boot image
+to CPC. The second stage will configure all the hardware and boot up to U-Boot
+command line.
+
+The PBL image contains three parts, the first is RCW, the second is PBI commands
+performs configuration registers write, the third is the 512KB u-boot image. The
+PBL image is produced by tool pbl_image_tool.html.
+
+Build and boot steps
+--------------------
+
+1. Producing RCW
+Copy RCW of u-boot dump and paste it to tab "Tools" of the tool and choose
+"RCW[0:511] U-Boot CCSR Dump" and then click button "Decode PBL", switch to tab
+"Boot" and change PBI_SRC to "0b0101 - SPI 24b Addressing", change BOOT_LOC to
+"0b10000 - Memory Complex 1"(if CPC2 is used as SRAM, this should be set as
+"0b10001 - Memory Complex 2").
+
+2. Producing ACS File
+	make P4080DS_PBL_BOOT_INDIRECT_config
+	make CROSS_COMPILE=powerpc-none-linux-gnuspe- all
+	xxd u-boot.bin > u-boot.xxd
+
+3. Producing PBI commands
+Switch to tab "PBI" and paste commands below into text field (please note these
+commands are for CPC1 used as SRAM only, change corresponding register setting
+if CPC2 need to be used as SRAM), then choose "ACS File (XXD Object Dump)",
+change Offset to "f80000", and click "Browse" to select the u-boot.xxd file
+produced in step 2, and click "Add PBI Data", after it finished, paste
+"09138000 00000000" and "091380c0 00000000" at the end.
+
+Below are Commands pasted before click "Add PBI Data".
+
+		PBI DATA      |	Description
+	-----------------------------------------
+	|  09010000 00200400  |	CPCFI &		|
+	|  09138000 00000000  |	CPCLFC for CPC1	|
+	|  091380c0 00000100  |			|
+	-----------------------------------------
+	|  09010100 00000000  |	Configure	|
+	|  09010104 fff0000b  |	CPC1 as		|
+	|  09010f00 08000000  |	1M SRAM		|
+	|  09010000 80000000  |			|
+	-----------------------------------------
+	|  09000d00 00000000  |	Configure	|
+	|  09000d04 fff00000  |	LAW for CPC1	|
+	|  09000d08 81000013  |			|
+	-----------------------------------------
+	|  09000010 00000000  |	Configure	|
+	|  09000014 ff000000  |	Alternate	|
+	|  09000018 81000000  |	for CPC1	|
+	-----------------------------------------
+	|  09110000 80000403  |	Initialize	|
+	|  09110020 2d170008  |	SPI interface	|
+	|  09110024 00100008  |			|
+	|  09110028 00100008  |			|
+	|  0911002c 00100008  |			|
+	-----------------------------------------
+	|  09138000 00000000  |	Flush command	|
+	|  091380c0 00000000  |			|
+	-----------------------------------------
+
+4. Producing PBL image
+	1. Switch to tab "Tools" and click "Encode PBL", after it finished copy
+the encoded content to file and save as x.xxd.
+	2. xxd -r x.xxd > pbl_u-boot.bin
+
+5. Put image to SPI flash
+	Put the pbl_u-boot.bin to SPI flash from offset 0.
+
+6. Change dip-switch
+	Change SW1[2] = off, then power on.