Ezynq: Difference between revisions

From ElphelWiki
Jump to navigation Jump to search
Oleg (talk | contribs)
mNo edit summary
Oleg (talk | contribs)
 
(45 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://git.elphel.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://git.elphel.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 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
-->

Latest revision as of 21:46, 20 November 2017

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.