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 Enviroment 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 Enviroment 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 Enviroment 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
