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