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