Difference between revisions of "Ezynq"
From ElphelWiki
m |
(→Decription) |
||
(49 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
==Decription== | ==Decription== | ||
− | [https:// | + | [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== | ||
− | + | {| 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''' ( | + | * '''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 ( | + | <!-- |
− | * | + | ==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 | + | 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 | + | ==Install Ezynq (Kubuntu 14.04)== |
<font size='2'> | <font size='2'> | ||
− | git clone | + | 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> | ||
− | == | + | ==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> |
− | </ | + | |
+ | 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 | + | ** '''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 | + | ==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 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: |
include/configs/ezynq/ezynq_MT41K256M16RE125.h | include/configs/ezynq/ezynq_MT41K256M16RE125.h | ||
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 size='2'>./makeuboot <new_board>_config</font> |
− | |||
− | |||
==Known issues== | ==Known issues== | ||
− | * USB does not work yet. | + | * <font color='green'>[FIXED]</font> (in Linux) USB does not work yet. |
− | * 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 13: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:
- FSBL is under Xilinx's copyright
- The current (2014/02/23) official SPL implementation in the u-boot-xlnx master-next 54fee227ef141214141a226efd17ae0516deaf32 branch is FSBL-less but it requires to use the files (ps7_init.c/h) that come under Xilinx's copyright which makes u-boot noncompliant with its GPL license.
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.