

	U-Boot for Wind River SBC834x Boards
	====================================


The Wind River SBC834x board is a 6U form factor (not CPCI) reference
design that uses the MPC8347E or MPC8349E processor.  U-Boot support
for this board is heavily based on the existing U-Boot support for
Freescale MPC8349 reference boards.

Support has been primarily tested on the SBC8349 version of the board,
although earlier versions were also tested on the SBC8347.  The primary
difference in the two is the level of PCI functionality.

	http://www.windriver.com/products/OCD/SBC8347E_49E/


Flash Details:
==============

The flash type is intel 28F640Jx (4096x16) [one device].  Base address
is 0xFF80_0000 which is also where the Hardware Reset Configuration
Word (HRCW) is stored.  Caution should be used to not reset the
board without having a valid HRCW in place (i.e. erased flash) as
then a Wind River ICE will be required to restore the HRCW and flash
image.


Restoring a corrupted or missing flash image:
=============================================

Note that U-boot versions up to and including 2009.06 had essentially
two copies of u-boot in flash; one at the very beginning, which set
the HRCW, and one at the very end, which was the image that was run.
As of this point in time, the two have been combined into just one
at the beginning of flash, which provides both the HRCW, and the image
that is executed.  This frees up the remainder of flash for other uses.
Use of the u-boot command "fli" will indicate what parts are in use.
Details for storing U-boot to flash using a Wind River ICE can be found
on page 19 of the board manual (request ERG-00328-001).  The following
is a summary of that information:

  - Connect ICE and establish connection to it from WorkBench/OCD.
  - Ensure you have background mode (BKM) in the OCD terminal window.
  - Select the appropriate flash type (listed above)
  - Prepare a u-boot image by using the Wind River Convert utility;
    by using "Convert and Add file" on the ELF file from your build.
    Convert from FF80_0000 to FFFF_FFFF (or to FF83_FFFF if you are
    trying to preserve your old environment settings and user flash).
  - Set the start address of the erase/flash process to FF80_0000
  - Set the target RAM required to 64kB.
  - Select sectors for erasing (see note on enviroment below)
  - Select Erase and Reprogram.

Note that some versions of the register files used with Workbench
would zero some TSEC registers, which inhibits ethernet operation
by u-boot when this register file is played to the target.  Using
"INN" in the OCD terminal window instead of "IN" before the "GO"
will not play the register file, and allow u-boot to use the TSEC
interface while executed from the ICE "GO" command.

Alternatively, you can locate the register file which will be named
WRS_SBC8349_PCT00328001.reg or similar) and "REM" out all the lines
beginning with "SCGA TSEC1" and "SCGA TSEC2".  This allows you to
use all the remaining register file content.

If you wish to preserve your prior U-Boot environment settings,
then convert (and erase to) 0xFF83FFFF instead of 0xFFFFFFFF.
The size for converting (and erasing) must be at least as large
as u-boot.bin.


Updating U-Boot with U-Boot:
============================

This procedure is very similar to other boards that have u-boot installed.
Assuming that the network has been configured, and that the new u-boot.bin
has been copied to the TFTP server, the commands are:

	tftp 200000 u-boot.bin
	protect off all
	erase ff800000 ff83ffff
	cp.b 200000 ff800000 40000
	protect on all

You may wish to do a "md ff800000 20" operation as a prefix and postfix
to the above steps to inspect/compare the HRCW before/after as an extra
safety check before resetting the board upon completion of the reflash.

PCI:
====

There are three configuration choices:
	sbc8349_config
	sbc8349_PCI_33_config
	sbc8349_PCI_66_config

The 1st does not enable CONFIG_PCI, and assumes that the PCI slot
will be left empty (M66EN high), and so the board will operate with
a base clock of 66MHz.  Note that you need both PCI enabled in u-boot
and linux in order to have functional PCI under linux.  The only
reason for choosing to not enable PCI would be if you had a very
early (rev 1.0) CPU with possible PCI issues.

The second enables PCI support and builds for a 33MHz clock rate.  Note
that if a 33MHz 32bit card is inserted in the slot, then the whole board
will clock down to a 33MHz base clock instead of the default 66MHz.  This
will change the baud clocks and mess up your serial console output if you
were previously running at 66MHz.  If you want to use a 33MHz PCI card,
then you should build a U-Boot with sbc8349_PCI_33_config and store this
to flash prior to powering down the board and inserting the 33MHz PCI
card.

The third option builds PCI support in, and leaves the clocking at the
default 66MHz.  This has been tested with an intel PCI-X e1000 card.
This is also the appropriate choice for people with a recent (non 1.0)
CPU who currently have the PCI slot physically empty, but intend to
possibly add a PCI-X card at a later date.

   => pci
   Scanning PCI devices on bus 0
   BusDevFun  VendorId   DeviceId   Device Class       Sub-Class
   _____________________________________________________________
   00.00.00   0x1957     0x0080     Processor               0x20
   00.11.00   0x8086     0x1026     Network controller      0x00
   =>
