This port of U-Boot will run on a Motorola Sandpoint 3 development
system equipped with a Unity X4 PPMC card (MPC8240 CPU) only. It is a
snapshot of work in progress and far from being completed. In order
to run it on the target system, it has to be downloaded using the
DINK32 monitor program that came with your Sandpoint system. Please
note that DINK32 does not accept the S-Record file created by the
U-Boot build process unmodified, because it contains CR/LF line
terminators. You have to strip the CR characters first. There is a
tiny script named 'dinkdl' I created for this purpose.

The Sandpoint port is based on the work of Rob Taylor, who does not
seem to maintain it any more. I can be reached by mail as
tkoeller@gmx.net.

Thomas Koeller


The port was tested on a Sandpoint 8240 X3 board, with U-Boot
installed in the flash memory of the CPU card. Please use the
following DIP switch settings:

Motherboard:

SW1.1: on	SW1.2: on	SW1.3: on	SW1.4: on
SW1.5: on	SW1.6: on	SW1.7: on	SW1.8: on

SW2.1: on	SW2.2: on	SW2.3: on	SW2.4: on
SW2.5: on	SW2.6: on	SW2.7: on	SW2.8: on


CPU Card:

SW2.1: OFF	SW2.2: OFF	SW2.3: on	SW2.4: on
SW2.5: OFF	SW2.6: OFF	SW2.7: OFF	SW2.8: OFF

SW3.1: OFF	SW3.2: on	SW3.3: OFF	SW3.4: OFF
SW3.5: on	SW3.6: OFF	SW3.7: OFF	SW3.8: on


The followind detailed description of installation and initial steps
with U-Boot and QNX was provided by Jim Sandoz <sandoz@lucent.com>:


Directions for installing U-Boot on Sandpoint+Unity8240
using the Abatron BDI2000 BDM/JTAG debugger ...

Background and Reference info:
http://u-boot.sourceforge.net/
http://www.abatron.ch/
http://www.abatron.ch/BDI/bdihw.html
http://www.abatron.ch/DataSheets/BDI2000.pdf
http://www.abatron.ch/Manuals/ManGdbCOP-2000C.pdf
http://e-www.motorola.com/collateral/SPX3UM.pdf
http://e-www.motorola.com/collateral/UNITYX4CONFIG.pdf


Connection Diagram:
					    ===========
 ===                     =====             |-----      |
|   | <---------------> |     |            |     |     |
|PC |       rs232       | BDI |=============[]   |     |
|   |                   |2000 |  BDM probe |     |     |
|   | <---------------> |     |            |-----      |
 ===       ethernet      =====             |           |
					   |           |
					    ===========
					 Sandpoint X3 with
					  Unity 8240 proc


PART 1)
  DIP Switch Settings:

Sandpoint X3 8240 processor board DIP switch settings, with
U-Boot to be installed in the flash memory of the CPU card:

Motorola Sandpoint X3 Motherboard:
SW1.1: on	SW1.2: on	SW1.3: on	SW1.4: on
SW1.5: on	SW1.6: on	SW1.7: on	SW1.8: on
SW2.1: on	SW2.2: on	SW2.3: on	SW2.4: on
SW2.5: on	SW2.6: on	SW2.7: on	SW2.8: on

Motorola Unity 8240 CPU Card:
SW2.1: OFF	SW2.2: OFF	SW2.3: on	SW2.4: on
SW2.5: OFF	SW2.6: OFF	SW2.7: OFF	SW2.8: OFF
SW3.1: OFF	SW3.2: on	SW3.3: OFF	SW3.4: OFF
SW3.5: on	SW3.6: OFF	SW3.7: OFF	SW3.8: on


PART 2)
  Connect the BDI2000 Cable to the Sandpoint/Unity 8240:

BDM Pin 1 on the Unity 8240 processor board is towards the
PCI PMC connectors, or away from the socketed SDRAM, i.e.:

  ====================
  | ---------------- |
  | |    SDRAM     | |
  | |              | |
  | ---------------- |
  | |~|              |
  | |B|       ++++++ |
  | |D|       + uP + |
  | |M|       +8240+ |
  |  ~ 1      ++++++ |
  |                  |
  |                  |
  |                  |
  | PMC conn ======  |
  |   =====  ======  |
  |                  |
  ====================


PART 3)
  Setting up the BDI2000, and preparing for TCP/IP network comms:

Connect the BDI2000 to the PC using the supplied serial cable.
Download the BDI2000 software and install it using setup.exe.

[Note: of course you  can  also  use  the  Linux  command  line  tool
"bdisetup"  to  configure  your BDI2000 - the sources are included on
the floppy disk that comes with your BDI2000. Just in case you  don't
have any Windows PC's - like me :-)   -- wd ]

Power up the BDI2000; then follow directions to assign the IP
address and related network information.  Note that U-Boot
will be loaded to the Sandpoint via tftp.  You need to either
use the Abatron-provided tftp application or provide a tftp
server (e.g. Linux/Solaris/*BSD) somewhere on your network.
Once the IP address etc are assigned via the RS232 port,
further communication with the BDI2000 will happen via the
ethernet connection.

PART 4)
  Making a TCP/IP network connection to the Abatron BDI2000:

Telnet to the Abatron BDI2000.  Assuming that all of the
networking info was loaded via RS232 correctly, you will see
the following (scrolling):

- TARGET: waiting for target Vcc
- TARGET: waiting for target Vcc


PART 5)
  Power up the target Sandpoint:
If the BDM connections are correct, the following will now appear:

- TARGET: waiting for target Vcc
- TARGET: waiting for target Vcc
- TARGET: processing power-up delay
- TARGET: processing user reset request
- BDI asserts HRESET
- Reset JTAG controller passed
- Bypass check: 0x55 => 0xAA
- Bypass check: 0x55 => 0xAA
- JTAG exists check passed
- Target PVR is 0x00810101
- COP status is 0x01
- Check running state passed
- BDI scans COP freeze command
- BDI removes HRESET
- COP status is 0x05
- Check stopped state passed
- Check LSRL length passed
- BDI sets breakpoint at 0xFFF00100
- BDI resumes program execution
- Waiting for target stop passed
- TARGET: Target PVR is 0x00810101
- TARGET: reseting target passed
- TARGET: processing target startup ....
- TARGET: processing target startup passed
BDI>


PART 6)
  Erase the current contents of the flash memory:

BDI>era 0xFFF00000
    Erasing flash at 0xfff00000
    Erasing flash passed
BDI>era 0xFFF04000
    Erasing flash at 0xfff04000
    Erasing flash passed
BDI>era 0xFFF06000
    Erasing flash at 0xfff06000
    Erasing flash passed
BDI>era 0xFFF08000
    Erasing flash at 0xfff08000
    Erasing flash passed
BDI>era 0xFFF10000
    Erasing flash at 0xfff10000
    Erasing flash passed
BDI>era 0xFFF20000
    Erasing flash at 0xfff20000
    Erasing flash passed


PART 7)
  Program the flash memory with the U-Boot image:

BDI>prog 0xFFF00000 u-boot.bin bin
    Programming u-boot.bin , please wait ....
    Programming flash passed


PART 8)
  Connect PC to Sandpoint:
Using a crossover serial cable, attach the PC serial port to the
Sandpoint's COM1.  Set communications parameters to 8N1 / 9600 baud.


PART 9)
  Reset the Unity and begin U-Boot execution:

BDI>reset
- TARGET: processing user reset request
- TARGET: Target PVR is 0x00810101
- TARGET: reseting target passed
- TARGET: processing target init list ....
- TARGET: processing target init list passed

BDI>go

Now see output from U-Boot running, sent via serial port:

U-Boot 1.1.4 (Jan 23 2002 - 18:29:19)

CPU:   MPC8240 Revision 1.1 at 264 MHz: 16 kB I-Cache 16 kB D-Cache
Board: Sandpoint 8240 Unity
DRAM:  64 MB
FLASH:  2 MB
PCI:    scanning bus0 ...
  bus dev fn venID devID class  rev MBAR0    MBAR1    IPIN ILINE
  00  00  00 1057  0003  060000 13  00000008 00000000 01   00
  00  0b  00 10ad  0565  060100 10  00000000 00000000 00   00
  00  0f  00 8086  1229  020000 08  80000000 80000001 01   00
In:    serial
Out:   serial
Err:   serial
=>


PART 10)
  Set and save any required environmental variables, examples of some:

=> setenv ethaddr 00:03:47:97:D0:79
=> setenv bootfile your_qnx_image_here
=> setenv hostname sandpointX
=> setenv netmask 255.255.255.0
=> setenv ipaddr 192.168.0.11
=> setenv serverip 192.168.0.10
=> setenv gatewayip=192.168.0.1
=> saveenv
Saving Environment to Flash...
Un-Protected 1 sectors
Erasing Flash...
 done
Erased 1 sectors
Writing to Flash... done
Protected 1 sectors
=>

**** Example environment: ****

=> printenv
baudrate=9600
bootfile=telemetry
hostname=sp1
ethaddr=00:03:47:97:E4:6B
load=tftp 100000 u-boot.bin
update=protect off all;era FFF00000 FFF3FFFF;cp.b 100000 FFF00000 ${filesize};saveenv
filesize=1f304
gatewayip=145.17.228.1
netmask=255.255.255.0
ipaddr=145.17.228.42
serverip=145.17.242.46
stdin=serial
stdout=serial
stderr=serial

Environment size: 332/8188 bytes
=>

here's some text useful stuff for cut-n-paste:
setenv hostname sandpoint1
setenv netmask 255.255.255.0
setenv ipaddr 145.17.228.81
setenv serverip 145.17.242.46
setenv gatewayip 145.17.228.1
saveenv

PART 11)
  Test U-Boot by tftp'ing new U-Boot, overwriting current:

=> protect off all
Un-Protect Flash Bank # 1
=> tftp 100000 u-boot.bin
eth: Intel i82559 PCI EtherExpressPro @0x80000000(bus=0, device=15, func=0)
ARP broadcast 1
TFTP from server 145.17.242.46; our IP address is 145.17.228.42; sending through
 gateway 145.17.228.1
Filename 'u-boot.bin'.
Load address: 0x100000
Loading: #########################
done
Bytes transferred = 127628 (1f28c hex)
=> era all
Erase Flash Bank # 1
 done
Erase Flash Bank # 2 - missing
=> cp.b 0x100000 FFF00000 1f28c
Copy to Flash... done
=> saveenv
Saving Environment to Flash...
Un-Protected 1 sectors
Erasing Flash...
 done
Erased 1 sectors
Writing to Flash... done
Protected 1 sectors
=> reset

You can put these commands into some environment variables;

=> setenv load tftp 100000 u-boot.bin
=> setenv update protect off all\;era FFF00000 FFF3FFFF\;cp.b 100000 FFF00000 \${filesize}\;saveenv
=> saveenv

Then you just have to type "run load" then "run update"

=> run load
eth: Intel i82559 PCI EtherExpressPro @0x80000000(bus=0, device=15, func=0)
ARP broadcast 1
TFTP from server 145.17.242.46; our IP address is 145.17.228.42; sending through
 gateway 145.17.228.1
Filename 'u-boot.bin'.
Load address: 0x100000
Loading: #########################
done
Bytes transferred = 127748 (1f304 hex)
=> run update
Un-Protect Flash Bank # 1
Un-Protect Flash Bank # 2
Erase Flash from 0xfff00000 to 0xfff3ffff
 done
Erased 7 sectors
Copy to Flash... done
Saving Environment to Flash...
Un-Protected 1 sectors
Erasing Flash...
 done
Erased 1 sectors
Writing to Flash... done
Protected 1 sectors
=>


PART 12)
  Load OS image (ELF format) via U-Boot using tftp


=> tftp 800000 sandpoint-simple.elf
eth: Intel i82559 PCI EtherExpressPro @0x80000000(bus=0, device=15, func=0)
ARP broadcast 1
TFTP from server 145.17.242.46; our IP address is 145.17.228.42; sending through
 gateway 145.17.228.1
Filename 'sandpoint-simple.elf'.
Load address: 0x800000
Loading: #################################################################
	 #################################################################
	 #################################################################
	 ########################
done
Bytes transferred = 1120284 (11181c hex)
==>

PART 13)
  Begin OS image execution: (note that unless you have the
serial parameters of your OS image set to 9600 (i.e. same as
the U-Boot binary) you will get garbage here until you change
the serial communications speed.

=> bootelf 800000
Loading  @ 0x001f0100 (1120028 bytes)
## Starting application at 0x001f1d28 ...
Replace init_hwinfo() with a board specific version

Loading QNX6....

Header size=0x0000009c, Total Size=0x000005c0, #Cpu=1, Type=1
<...loader and kernel messages snipped...>

Welcome to Neutrino on the Sandpoint
#


other information:

CVS Retrieval Notes:

U-Boot's SourceForge CVS repository can be checked out
through anonymous (pserver) CVS with the following
instruction set. The module you wish to check out must
be specified as the modulename. When prompted for a
password for anonymous, simply press the Enter key.

cvs -d:pserver:anonymous@cvs.u-boot.sourceforge.net:/cvsroot/u-boot login

cvs -z6 -d:pserver:anonymous@cvs.u-boot.sourceforge.net:/cvsroot/u-boot co -P u-boot
