Difference between revisions of "Ezynq"

From ElphelWiki
Jump to: navigation, search
m (Decription)
m
Line 6: Line 6:
 
* FSBL is under Xilinx's copyright
 
* FSBL is under Xilinx's copyright
 
* The current (2014/02/23) official SPL implementation in the [https://github.com/Xilinx/u-boot-xlnx/tree/master-next u-boot-xlnx master-next 54fee227ef141214141a226efd17ae0516deaf32] branch is FSBL-less but it requires to use the files (<b>ps7_init.c/h</b>) that come under Xilinx's copyright which makes u-boot noncompliant with its GPL license.
 
* The current (2014/02/23) official SPL implementation in the [https://github.com/Xilinx/u-boot-xlnx/tree/master-next u-boot-xlnx master-next 54fee227ef141214141a226efd17ae0516deaf32] branch is FSBL-less but it requires to use the files (<b>ps7_init.c/h</b>) that come under Xilinx's copyright which makes u-boot noncompliant with its GPL license.
 +
  
 
==Supported boards==
 
==Supported boards==
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Board !! Chip !! Manufacturer
+
! Board !! Chip !! Manufacturer !! Tested?
 
|-  
 
|-  
 
| style="padding:0px 15px 0px 15px;" | [http://microzed.org MicroZed]
 
| style="padding:0px 15px 0px 15px;" | [http://microzed.org MicroZed]
 
| style="padding:0px 15px 0px 15px;" | Zynq 7Z010  
 
| style="padding:0px 15px 0px 15px;" | Zynq 7Z010  
 
| style="padding:0px 15px 0px 15px;" | Avnet
 
| style="padding:0px 15px 0px 15px;" | Avnet
 +
| style="padding:0px 15px 0px 15px;" | <font color='green'>Y</font>
 
|-  
 
|-  
 
| style="padding:0px 15px 0px 15px;" | [http://www.xilinx.com/products/boards-and-kits/EK-Z7-ZC706-G.htm ZC706]
 
| style="padding:0px 15px 0px 15px;" | [http://www.xilinx.com/products/boards-and-kits/EK-Z7-ZC706-G.htm ZC706]
 
| style="padding:0px 15px 0px 15px;" | Zynq 7Z045  
 
| style="padding:0px 15px 0px 15px;" | Zynq 7Z045  
 
| style="padding:0px 15px 0px 15px;" | Xilinx
 
| style="padding:0px 15px 0px 15px;" | Xilinx
 +
| style="padding:0px 15px 0px 15px;" | <font color='green'>Y</font>
 
|-  
 
|-  
 
| style="padding:0px 15px 0px 15px;" | [http://www.zedboard.org/ ZedBoard]
 
| style="padding:0px 15px 0px 15px;" | [http://www.zedboard.org/ ZedBoard]
 
| style="padding:0px 15px 0px 15px;" | Zynq 7Z020  
 
| style="padding:0px 15px 0px 15px;" | Zynq 7Z020  
 
| style="padding:0px 15px 0px 15px;" | Digilent/Avnet
 
| style="padding:0px 15px 0px 15px;" | Digilent/Avnet
 +
| style="padding:0px 15px 0px 15px;" | <font color='orange'>N</font>
 
|-  
 
|-  
 
| style="padding:0px 15px 0px 15px;" | [http://blog.elphel.com/2013/11/nc393-development-progress-testing-the-hardware/ 10393]
 
| style="padding:0px 15px 0px 15px;" | [http://blog.elphel.com/2013/11/nc393-development-progress-testing-the-hardware/ 10393]
 
| style="padding:0px 15px 0px 15px;" | Zynq 7Z030  
 
| style="padding:0px 15px 0px 15px;" | Zynq 7Z030  
 
| style="padding:0px 15px 0px 15px;" | Elphel
 
| style="padding:0px 15px 0px 15px;" | Elphel
 +
| style="padding:0px 15px 0px 15px;" | <font color='green'>Y</font>
 
|}
 
|}
 +
  
 
==Output==
 
==Output==
 
* '''boot.bin''' (SPL) - loads u-boot.img, no FSBL needed.
 
* '''boot.bin''' (SPL) - loads u-boot.img, no FSBL needed.
 
* '''u-boot.img''' (u-boot image)
 
* '''u-boot.img''' (u-boot image)
 +
 +
Boot: Copy them to SD card in order to boot from it.
 +
  
 
==Install meta-toolchain (Kubuntu 13.04)==
 
==Install meta-toolchain (Kubuntu 13.04)==
*
+
* Build:
 
<font size='2'>
 
<font size='2'>
 
  sudo apt-get install texinfo chrpath
 
  sudo apt-get install texinfo chrpath
Line 51: Line 60:
 
  ./install_uboot.sh
 
  ./install_uboot.sh
 
</font>
 
</font>
 +
  
 
==Build==
 
==Build==
 
* Edit ''initenv'' according to the built meta-toolchain
 
* Edit ''initenv'' according to the built meta-toolchain
*
+
* Build:
 
<font size='2'>
 
<font size='2'>
 
  cd u-boot-xlnx
 
  cd u-boot-xlnx
Line 66: Line 76:
  
 
* The generated files are:
 
* The generated files are:
** '''boot_head.bin'''
+
** '''boot_head.bin''' - contains values for RBL register initialization
 
** '''boot.bin''' - the SPL image
 
** '''boot.bin''' - the SPL image
 
** '''u-boot.img''' - u-boot image (if '''boot.bin''' built with SPL support)
 
** '''u-boot.img''' - u-boot image (if '''boot.bin''' built with SPL support)
Line 73: Line 83:
 
** '''u-boot''' - ELF file
 
** '''u-boot''' - ELF file
  
==Boot==
 
* Copy '''boot.bin''' & '''u-boot.img''' (if generated) to SD card. Boot from it.
 
  
 
==Develop (add boards support)==
 
==Develop (add boards support)==
Line 83: Line 91:
 
  include/configs/ezynq/ezynq_XC7Z010_1CLG400.h
 
  include/configs/ezynq/ezynq_XC7Z010_1CLG400.h
 
  include/configs/ezynq/zed_ezynq.h
 
  include/configs/ezynq/zed_ezynq.h
*
+
* Build:
  <font size='2'>./makeuboot</font>
+
  <font size='2'>./makeuboot <new_board>_config</font>
  
<font color='red'>'''IMPORTANT:''' Only '''192KB''' of zynq's series on-chip memory are available at boot. It is the maximal size of '''u-boot.bin''' (not the final '''boot.bin''') - the python script will throw just a warning.</font>
 
  
 
==Known issues==
 
==Known issues==

Revision as of 15:33, 10 March 2014

Decription

Ezynq project is started to create a bootloader for systems based on the Xilinx Zynq SoC without the inconvenience of the non-free tools and/or files. The goal is not just to "free" the code, but to provide users with the higher degree of flexibility in fine-tuning of the configuration parameters.

"Free" the code part

Ezynq addresses the potential legal problems with distribution of a product/software based on Zynq platform:


Supported boards

Board Chip Manufacturer Tested?
MicroZed Zynq 7Z010 Avnet Y
ZC706 Zynq 7Z045 Xilinx Y
ZedBoard Zynq 7Z020 Digilent/Avnet N
10393 Zynq 7Z030 Elphel Y


Output

  • boot.bin (SPL) - loads u-boot.img, no FSBL needed.
  • u-boot.img (u-boot image)

Boot: Copy them to SD card in order to boot from it.


Install meta-toolchain (Kubuntu 13.04)

  • Build:

sudo apt-get install texinfo chrpath
git clone -b dylan git://git.yoctoproject.org/poky
cd poky
. ./oe-init-build-env
bitbake meta-toolchain

  • Run installation script in build/tmp/deploy/

Install ezynq (Kubuntu 13.04)

git clone git://git.code.sf.net/p/elphel/ezynq ezynq
cd ezynq
./install_uboot.sh


Build

  • Edit initenv according to the built meta-toolchain
  • Build:

cd u-boot-xlnx
./makeuboot <target>

Supported <targets>:

./makeuboot zynq_microzed_config
./makeuboot zynq_zc706_config
./makeuboot elphel393_config
./makeuboot zynq_zed_config
  • The generated files are:
    • boot_head.bin - contains values for RBL register initialization
    • boot.bin - the SPL image
    • u-boot.img - u-boot image (if boot.bin built with SPL support)
    • u-boot.html - configuration settings overview
    • u-boot.map - the bootloader's memory map
    • u-boot - ELF file


Develop (add boards support)

  • Add a new board record to the list in the boards.cfg (or leave as is if the item already exists).
  • Create a configuration file for the new board - use include/configs/zynq_microzed.h as a reference
  • Edit (or create new for specific memory and chip) according to the board configuration the following files:
include/configs/ezynq/ezynq_MT41K256M16RE125.h
include/configs/ezynq/ezynq_XC7Z010_1CLG400.h
include/configs/ezynq/zed_ezynq.h
  • Build:
./makeuboot <new_board>_config


Known issues

  • [FIXED] (in Linux) USB does not work yet.
  • [FIXED] (in Linux) Ethernet is not tested (on the board we have it does not work with provided images, so we suspect a hardware problem. If no network:

ifconfig eth0 down
ifconfig eth0 up

  • Bitstream loading is not tested, current code does not enable level shifters - it may be more appropriate to do just before loading of the bitstream.
  • Write level training for DDR memory doesn't work in MicroZed and ZC706