Difference between revisions of "Ezynq"

From ElphelWiki
Jump to: navigation, search
m (Develop (add boards support))
("Free" the code part)
(42 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
==Decription==
 
==Decription==
[https://sourceforge.net/p/elphel/ezynq 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.
+
[https://github.com/Elphel/ezynq 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=====
 +
<b>as of 2014/02/23...</b>
 +
 
 +
Ezynq addresses the potential legal problems with distribution of a product/software based on Zynq platform:
 +
* 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.
 +
 
 +
<b>as of 2016/01/13...</b>
 +
* For a new board you still have to run an extra Xilinx program to generate ps7_init.c/h.
 +
 
 +
<b>as of 2016/03/18...</b>
 +
* u-boot-xlnx master-next branch is removed long ago - so the link above is broken
 +
 
 +
<b>as of 2016/06/25...</b>
 +
* ezynq depends on original u-boot instead of u-boot-xlnx
  
 
==Supported boards==
 
==Supported boards==
* [http://microzed.org Avnet MicroZed] - Zynq 7Z010
+
{| class="wikitable"
 +
|-
 +
! Board !! Chip !! Manufacturer !! Tested?
 +
|-
 +
| style="padding:0px 15px 0px 15px;" | [http://microzed.org MicroZed]
 +
| style="padding:0px 15px 0px 15px;" | Zynq 7Z010
 +
| 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;" | Zynq 7Z045
 +
| style="padding:0px 15px 0px 15px;" | Xilinx
 +
| style="padding:0px 15px 0px 15px;" | <font color='red'>N</font>
 +
|-
 +
| 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;" | Digilent/Avnet
 +
| style="padding:0px 15px 0px 15px;" | <font color='red'>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;" | Zynq 7Z030
 +
| style="padding:0px 15px 0px 15px;" | Elphel
 +
| style="padding:0px 15px 0px 15px;" | <font color='green'>Y</font>
 +
|}
  
 
==Output==
 
==Output==
* '''boot.bin''' (fsbl is not required to boot)
+
* '''boot.bin''' (SPL) - loads u-boot.img, no FSBL needed.
 +
* '''u-boot-dtb.img''' (u-boot image)
 +
 
 +
Boot: Copy them to SD card in order to boot from it.
 +
 
 +
==Build==
 +
For instructions please follow [[Poky_2.0_manual|this guide]].
  
==Install meta-toolchain (Ubuntu 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
  git clone -b dylan git://git.yoctoproject.org/poky
+
  git clone -b jethro git://git.yoctoproject.org/poky
 
  cd poky
 
  cd poky
 
  . ./oe-init-build-env
 
  . ./oe-init-build-env
Line 18: Line 64:
 
</font>
 
</font>
  
* Run installation script in ''build/tmp/deploy/''
+
* Run installation script in ''build/tmp/deploy/sdk''
  
==Install ezynq (Ubuntu 13.04)==
+
==Install Ezynq (Kubuntu 14.04)==
 
<font size='2'>
 
<font size='2'>
  git clone git://git.code.sf.net/p/elphel/ezynq ezynq
+
  git clone https://github.com/Elphel/ezynq.git
 
  cd ezynq
 
  cd ezynq
  ./install_uboot.sh
+
  ./install_uboot.sh (edit the toolchain path)
 
</font>
 
</font>
  
==Generate boot.bin==
+
==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
  ./makeuboot
+
  ./makeuboot <target>
</font>
+
 
 +
Supported <targets>:
 +
./makeuboot zynq_microzed_config
 +
./makeuboot zynq_zc706_config
 +
./makeuboot elphel393_config
 +
./makeuboot zynq_zed_config
  
 
* The generated files are:
 
* The generated files are:
** '''boot.bin''' - the bootloader image
+
** '''boot_head.bin''' - contains values for RBL register initialization
 +
** '''boot.bin''' - the SPL image
 +
** '''u-boot-dtb.img''' - the u-boot image
 
** '''u-boot.html''' - configuration settings overview
 
** '''u-boot.html''' - configuration settings overview
 
** '''u-boot.map''' - the bootloader's memory map
 
** '''u-boot.map''' - the bootloader's memory map
 
** '''u-boot''' - ELF file
 
** '''u-boot''' - ELF file
  
==Develop (add boards support)==
+
==Develop (add support for new boards)==
* Add a new board record to the list in the ''boards.cfg'' (or leave as is if the item already exists).
+
* (not needed anymore?) Add a new board record to the list in the ''boards.cfg'' (or leave as is if the item already exists).
 +
* Create '''configs/zynq_microzed_defconfig''' file
 
* Create a configuration file for the new board - use ''include/configs/zynq_microzed.h'' as a reference
 
* 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:
 
* Edit (or create new for specific memory and chip) according to the board configuration the following files:
Line 48: Line 102:
 
  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==
* <font color='orange'>[works with u-boot-xlnx 'master'-branch]</font> USB does not work yet.
+
* <font color='green'>[FIXED]</font> (in Linux) USB does not work yet.
* <font color='green'>[FIXED]</font> Ethernet is not tested (on the board we have it does not work with provided images, so we suspect a hardware problem.
+
* <font color='green'>[FIXED]</font> (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:
 +
<font size='2'>
 +
ifconfig eth0 down
 +
ifconfig eth0 up
 +
</font>
 
* 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.
 
* 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
 +
-->

Revision as of 11:13, 16 December 2016

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

as of 2014/02/23...

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

as of 2016/01/13...

  • For a new board you still have to run an extra Xilinx program to generate ps7_init.c/h.

as of 2016/03/18...

  • u-boot-xlnx master-next branch is removed long ago - so the link above is broken

as of 2016/06/25...

  • ezynq depends on original u-boot instead of u-boot-xlnx

Supported boards

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

Output

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

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

Build

For instructions please follow this guide.