The supported features of the SBC8240/8245 board are:
    8240 or 8245 processor
    66MHz & 100MHz bus speed
    Decrementer timer
    1 UART channel (Console channel)
    8240 Interrupt Controller
    8240 PCI bridge
    8240 Memory Controller
    SDRAM (16, 64 MB Memory DIMM)
    FLASH 512K On board
    FLASH 4MB On board


Memory Map from CPU point of view:

    Start	 Size	Access to
    -----------------------------------------------------
    0x00000000	 64MB	SDRAM DIMM
    0xFF000000	  4MB	On Board FLASH
    0xFFF00000	512K	On Board FLASH or SRAM (Configured by jumper)
    0xFFE00000	  8K	EEPROM
    0xFFE80000	  8Bit	LED
    0xFFF80000	  8Bit	UART


Setting the board Jumpers & Switches:

   In order to get the board running with the default configuration the
   jumpers need to be set as follows:

  General Jumpers:
    ____________________________________________
   |   Jumpers	 |   Jumpers	|    Jumpers	|
   |-------------|--------------|---------------|
   |JP1	    1-2	 | JP14	   1-2	| JP27	  1-2	|
   |JP5	    Open | JP15	   1-2	| JP28	  2-3	|
   |JP8	    1-2	 | JP16	   1-2	| JP33	  Open	|
   |JP9	    1-2	 | JP17	   1-2	| JP37	  Close |
   |JP10    1-2	 | JP18	   1-2	|		|
   |JP11    2-3	 | JP19	   1-2	|		|
   |JP12    1-2	 | JP20	   1-2	|		|
   |JP13    1-2	 | JP25	   Open |		|
   |_____________|______________|_______________|

  Bus speed Jumpers:
    _________________________
   | 100MHz Bus | 66 MHz Bus |
   |------------|------------|
   | JP2    1-2 | JP2	 1-2 |
   | JP3    1-2 | JP3	 2-3 |
   | JP4    1-2 | JP4	 2-3 |
   | JP6    1-2 | JP6	 2-3 |
   | JP7    1-2 | JP7	 1-2 |
   |____________|____________|


U-Boot 1.1.2 (Jun 24 2004 - 17:01:04)

CPU:   MPC8240 Revision 1.1 at 247.500 MHz: 16 kB I-Cache 16 kB D-Cache
Board: sbc8240 Revision 255 Local Bus at 99 MHz
DRAM:  64 MB
FLASH: 512 kB
	00  11	8086  1229  0200  00
In:    serial
Out:   serial
Err:   serial
Net:   i82559#0

Welcome to U-Boot for the sbc8240

Type ? or help to get on-line help

Hit any key to stop autoboot:  0
=> printenv
bootcmd=version;echo;tftpboot $loadaddr $loadfile;bootvx
bootdelay=5
baudrate=9600
ethaddr=DE:AD:BE:EF:01:01
ipaddr=192.168.193.102
preboot=echo;echo Welcome to U-Boot for the sbc8240;echo;echo Type "? or help" to get on-line help;echo
netmask=255.255.255.248
clocks_in_mhz=1
bootargs=$fei(0,0)host:/T221ppc/target/config/sbc8240/vxWorks.st e=192.168.193.102 h=192.168.193.99 u=target pw=hello f=0x08 tn=sbc8240 o=fei
ipaddr=192.168.193.102
loadfile=vxWorks.st
loadaddr=0x01000000
net_load=tftpboot $loadaddr $loadfile
serverip=192.168.193.99
ethact=i82559#0
stdin=serial
stdout=serial
stderr=serial

Environment size: 631/16380 bytes
=> boot

U-Boot 1.1.2 (Jun 24 2004 - 17:01:04)

Using i82559#0 device
TFTP from server 192.168.193.99; our IP address is 192.168.193.102
Filename 'vxWorks.st'.
Load address: 0x1000000
Loading: #################################################################
	 #################################################################
	 ##############################################################
done
Bytes transferred = 979927 (ef3d7 hex)
## Ethernet MAC address not copied to NV RAM
Loading .text @ 0x00100000 (758848 bytes)
Loading .data @ 0x001b9440 (79904 bytes)
Clearing .bss @ 0x001ccc60 (20288 bytes)
## Using bootline (@ 0x4200): $fei(0,0)host:/T221ppc/target/config/sbc8240/vxWorks.st e=192.168.193.102 h=192.168.193.99 u=target pw=hello f=0x08 tn=sbc8240 o=fei
## Starting vxWorks at 0x00100000 ...

Adding 2845 symbols for standalone.


 ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
 ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
 ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
      ]]]]]]]]]]]  ]]]]	    ]]]]]]]]]]	     ]]		     ]]]]	  (R)
 ]     ]]]]]]]]]  ]]]]]]     ]]]]]]]]	    ]]		     ]]]]
 ]]	]]]]]]]	 ]]]]]]]]     ]]]]]] ]	   ]]		     ]]]]
 ]]]	 ]]]]] ]    ]]]	 ]     ]]]] ]]]	  ]]]]]]]]]  ]]]] ]] ]]]]  ]]	]]]]]
 ]]]]	  ]]]  ]]    ]	]]]	]] ]]]]] ]]]]]]	  ]] ]]]]]]] ]]]] ]]   ]]]]
 ]]]]]	   ]  ]]]]     ]]]]]	  ]]]]]]]] ]]]]	  ]] ]]]]    ]]]]]]]	]]]]
 ]]]]]]	     ]]]]]     ]]]]]]	 ]  ]]]]]  ]]]]	  ]] ]]]]    ]]]]]]]]	 ]]]]
 ]]]]]]]    ]]]]]  ]	]]]]]]	]    ]]]   ]]]]	  ]] ]]]]    ]]]] ]]]]	  ]]]]
 ]]]]]]]]  ]]]]]  ]]]	 ]]]]]]]      ]	    ]]]]]]]  ]]]]    ]]]]  ]]]] ]]]]]
 ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
 ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]	     Development System
 ]]]]]]]]]]]]]]]]]]]]]]]]]]]]
 ]]]]]]]]]]]]]]]]]]]]]]]]]]]	   VxWorks version 5.5.1
 ]]]]]]]]]]]]]]]]]]]]]]]]]]	  KERNEL: WIND version 2.6
 ]]]]]]]]]]]]]]]]]]]]]]]]]	 Copyright Wind River Systems, Inc., 1984-2003

			       CPU: MPC8240 -- Wind River BSP. SBC8240 Board.  Processor #0.
			      Memory Size: 0x2000000.  BSP version 1.2/28.

->
