| Xilinx ML300 platform | 
 | ===================== | 
 |  | 
 | 0. Introduction | 
 | --------------- | 
 |  | 
 | The Xilinx ML300 board is based on the Virtex-II Pro FPGA with | 
 | integrated AMCC PowerPC 405 core. The board is normally booted from | 
 | System ACE CF. U-Boot is then run out of main memory. | 
 |  | 
 | An FPGA is a configurable and thus very flexible device. To | 
 | accommodate for this flexibility this port of U-Boot includes the | 
 | required means to regenerate the drivers and configuration files if | 
 | you decide to change the hardware design. The required steps are | 
 | described below. | 
 |  | 
 |  | 
 | 1. Requirements | 
 | --------------- | 
 |  | 
 | To compile and run U-Boot on the Xilinx ML300 platform you need the | 
 | following items. | 
 |  | 
 | - A Xilinx ML300 platform (see http://www.xilinx.com/ml300) | 
 | - EDK and ISE development tools (shipping with ML300) | 
 | - Parallel4 cable (shipping with ML300) | 
 | - The EDK reference design for ML300. You can get this as design #6 from | 
 |   http://www.xilinx.com/ise/embedded/edk_examples.htm | 
 | - A BOOTP/TFTP server | 
 |  | 
 |  | 
 | 2. Quick Start | 
 | -------------- | 
 |  | 
 | To compile and run U-Boot on ML300 follow the steps below. Make sure | 
 | to consult the documentation for U-Boot, EDK, and the EDK reference | 
 | design for ML300 if you have any questions. | 
 |  | 
 | 1. Implement the EDK reference design for ML300. You can use any of | 
 |    the project files, for example from a xygwin shell: | 
 |    $ xps -nw system_linux.xmp | 
 |    XPS% run init_bram | 
 | 2. Configure and compile U-Boot. Change into the root directory of | 
 |    U-Boot and run: | 
 |    $ export CROSS_COMPILE=powerpc-eabi- | 
 |    $ make ml300_config | 
 |    $ make | 
 | 3. Set up the ML300, connect the Parallel4 and the serial cable. Start | 
 |    a terminal on your host computer and set the communication | 
 |    parameters to 9600,8N1,no handshake. | 
 | 4. Set up the BOOTP/TFTP server on your host machine. U-Boot is | 
 |    preconfigured to use a fixed HW MAC address of 00:0A:35:00:22:01. | 
 | 5. Download the bitstream to the ML300. | 
 | 6. Use XMD to download and run U-Boot on the ML300: | 
 |    $ xmd | 
 |    XMD% ppcconnect | 
 |    XMD% dow u-boot | 
 |    XMD% run | 
 |  | 
 | You can now make an ACE file out of bitstream and U-Boot: | 
 |    $ xmd genace.tcl -jprog -board ml300 -hw  \ | 
 |      implementation/download.bit -elf u-boot -ace top.ace | 
 |  | 
 | Put the ACE file onto the MicroDrive, for example into xilinx/myace, | 
 | and reboot ML300. | 
 |  | 
 |  | 
 | 3. Generating a Custom BSP for U-Boot | 
 | ------------------------------------- | 
 |  | 
 | If you decide to change the EDK reference design for ML300 or if you | 
 | build a new design from scratch either with the Base System Builder in | 
 | XPS or all by hand you most likely will change the base addresses for | 
 | the Uart and the Ethernet peripheral. If you do so you will have two | 
 | options: | 
 |  | 
 | 1. Edit boards/xilinx/ml300/xparameters.h to reflect the changes you | 
 |    made to your hardware. | 
 | 2. Use the MLD technology provided by Xilinx Platform Studio to make | 
 |    the changes automatically. To do so go to the root directory of the | 
 |    EDK reference design for ML300. Copy the Linux project file and the | 
 |    Linux software configuration file: | 
 |    $ cp system_linux.xmp system_uboot.xmp | 
 |    $ cp system_linux.mss system_uboot.mss | 
 |  | 
 |    Edit system_uboot.xmp and and have it point to system_uboot.mss for | 
 |    the software configuration. | 
 |  | 
 |    Then, copy the sw_services directory in | 
 |    boards/xilinx/ml300/sw_services to the root directory of the EDK | 
 |    reference design for ML300. | 
 |    $ cp -R <uboot dir>/boards/xilinx/ml300/sw_services <edk dir> | 
 |  | 
 |    Modify system_uboot.mss. Look for the Linux library definition | 
 |    and change it to generate a BSP for U-Boot. An example, might look | 
 |    like this: | 
 |  | 
 |    BEGIN LIBRARY | 
 |     PARAMETER LIBRARY_NAME = uboot | 
 |     PARAMETER LIBRARY_VER = 1.00.a | 
 |     PARAMETER CONNECTED_PERIPHS = (opb_uart16550_0,opb_ethernet_0) | 
 |     PARAMETER TARGET_DIR = <uboot dir> | 
 |    END | 
 |  | 
 |    Now, you are ready to generate the Xilinx ML300 BSP for U-Boot: | 
 |    $ xps -nw system_uboot.xmp | 
 |    XPS% run libs | 
 |  | 
 |    If all goes well the new configuration has been copied into the | 
 |    right places within the U-Boot source tree. Recompile U-Boot and | 
 |    run it on the ML300. | 
 |  | 
 |  | 
 | 4. ToDo | 
 | ------- | 
 |  | 
 | - Add support for all other peripherals on ML300. | 
 | - Read the MAC address out of the IIC EEPROM. | 
 | - Store the bootargs in the IIC EEPROM. | 
 |  | 
 |  | 
 | 5. References | 
 | ------------- | 
 |  | 
 | ML300:			http://www.xilinx.com/ml300 | 
 | EDK:			http://www.xilinx.com/edk | 
 | ISE:			http://www.xilinx.com/ise | 
 | Reference Design:	http://www.xilinx.com/ise/embedded/edk_examples.htm |