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 /boards/xilinx/ml300/sw_services 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 = 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