
                     u-boot for the TI OMAP730 Perseus2

                      Dave Peverley, MPC-Data Limited 
                         http://www.mpc-data.co.uk


Overview :

 As the OMAP730 is similar to the OMAP1610 in many ways, this port was based 
on the u-boot port to the OMAP1610 Innovator. Supported features are :

  - Serial terminal support
  - Onboard NOR Flash
  - Ethernet via the seperate debug board
  - Tested on Rev4 and Rev5 boards

 It has also been tested to work correctly when built with a 'standard' GCC
3.2.1 cross-compiler as well as Montavista Linux CEE 3.1's toolchain.



Hardware Configuration :

 The main dips on the P2 board should be set to 2,3,7 and 9 on with all 
others off. On the debug board, dips 1 and 7 should be on with the rest off.
The serial console has been set up to run from the DB9 connector on the 
P2 board at 115200 baud, 8 data bits, no stop bits, 1 parity bit. 

 It should be noted that the P2 board has NOR flash that is addressable via
either CS0 or CS3. This mode can be changed via DIP9 on the P2 board. 



Installing u-boot for the P2 :

 You can simply build u-boot for the Perseus by following the instructions
in the main readme file. The target configuration is "omap730p2_config".
Once u-boot has been built, you should strip the executable so it can be
loaded via CCS (which cant cope with the symbols in the ELF binary) :
  $ cp u-boot u-boot.out
  $ arm-linux-strip u-boot.out

 The method we've used for installing u-boot the first time on a P2 is 
as follows :

1) Configure TI Code Composer Studio to connect to the P2 board via JTAG 
   as described in the Users Guide.

2) Set up the P2 to boot from CS3, and connect with CCS. Reset the CPU 
   and run the "init_mmu" GEL script. 

3) Use the "Load Program" option to send the u-boot.out file to the P2 and
   run. 

 At this point, u-boot should run and you will see the boot menu on your
serial terminal. You can then load the u-boot image to memory :

  # loadb 0x10000000

 Send the "u-boot.bin" binary via the serial using Kermit. Once loaded 
you can self-flash u-boot :

  # protect off 1:0
  # erase 1:0
  # cp.b 0x10000000 0x0 0x20000
 
 You should now be able to reset the board and run u-boot from flash.



Alternative flash option :

 Sometimes, if you've been silly, you can get the board into a state where
whats in flash has upset the board so much that you can no longer connect
to the P2 via JTAG. However, you can set DIP9 to off to swap the boot mode 
of the P2 so that you boot from RAM instead of NOR flash. This moves NOR
flash up to 0x0C000000. You can build a special version of u-boot to 
utilise this by the following config :

  $ make omap730p2_cs0boot_config

 If you load this up via CCS it will detect flash at its alternate location
and allow you to programme your u-boot image (which, remember must be built
for CS3 boot!) Once you do this, you can revert to CS3 boot and it will work
fine again.



Errata :

1) It's been observed that sometimes the tftp transfer of kernels to the
   board can have checksum errors or stall. This appears to be an issue 
   with the lan91c96.c driver, and can normally be worked around by 
   resetting the board and trying again.
