Tree [b046b9] master /

File Date Author Commit
 conf 2013-11-12 Oleg Dzhimiev Oleg Dzhimiev [39faa7] removing MACHINE, not needed
 recipes-bsp 2014-04-25 Oleg Dzhimiev Oleg Dzhimiev [b046b9] updated ezynq and uboot repo revisions
 LICENSE 2013-10-03 Oleg Dzhimiev Oleg Dzhimiev [ab6406] initial 2014-03-08 Oleg Dzhimiev Oleg Dzhimiev [33d8eb] corrections

Read Me


This layer provides an unofficial support for Xilinx Zynq architecture
as well as evaluation boards.

ezynq-u-boot creates u-boot image (SPL + u-boot) without any extra proprietary tools required.
It does not support secure boot functionality and loading the FPGA (PL) part
with a bitstream - it is planned to do under the control of the operating system -
if needed this feature can be implemented using u-boot.

Supported boards/machines

Boards supported by this layer:

  • MicroZed
  • Zedboard (?)
  • ZC706
  • Elphel393


This layer depends on:

  • URI: git://
  • URI: git://, layers: meta
  • URI: git://, layers: meta-sourcery (for external toolchains only)
  • URI: git://, branch=master-next
  • URI: git://

Build instructions

The following instructions require a Poky installation (or equivalent).

Initialize a build using the oe-init-build-env script in Poky. Once
initialized configure bblayers.conf by adding the meta-ezynq layer:

meta-ezynq \

To build a specific target BSP configure the associated machine in local.conf:

MACHINE ?= "microzed"

Build U-Boot:

$ bitbake u-boot-ezynq

$ bitbake virtual/bootloader
$ bitbake u-boot

Once complete the images for the target machine will be available in the output
directory tmp/deploy/images.

Images generated:

  • boot.bin+u-boot.img (fsbl is not required to boot)

Extra output at build/tmp/work/.../ezynq-u-boot/${PV}_${PR}/git/u-boot-xlnx/:

  • u-boot.html - configuration settings overview
  • - the bootloader's memory map
  • u-boot - ELF file


SD Card Boot

Note: This boot flow generates a bootable boot.bin.

  1. Copy boot.bin and u-boot.img(if generated) onto the SD Card.
  2. (might not work) Copy the following to the SD card (ensure to rename the files where appropriate):
    • uImage - kernel
    • uramdisk.image.gz (core-image-minimal-<machine name="">.ext2.gz.u-boot) - RootFS
    • devicetree.dtb (uImage-<machine name="">.dtb) - Device Tree Blob
  3. Insert SD Card, connect UART to Terminal program and boot board (Ensure the
    board is configured for SD Boot).
  4. To get to u-boot command line press any key withing 1 second.

Develop (add new machine/board)

  1. Configure the new board in build/conf/local.conf:

    MACHINE ?= "{new-board}"
  2. Create conf/machine/<new-board>.conf - use microzed.conf as a reference.

  3. Edit {new-board}.conf - add:

    UBOOT_MACHINE = "{new-config-name}_config"

    where {new-config-name} is from boards.cfg in u-boot-xlnx plus "_config"-ending

  4. Run

    bitbake ezynq-u-boot -c patch -f

    The command clones git repositories and add ezynq files to u-boot-xlnx.

    Note: Ezynq can be cloned and generate boot.bin apart from poky - please see Ezynq's documentation.

  5. Edit ezynq files located at build/tmp/work/.../ezynq-u-boot/${PV}_${PR}/git/u-boot-xlnx/:

    • boards.cfg - add {new-config-name} if it's not in the list.

    • create a new include/configs/{new-config-name}.h - use zynq_microzed.h as a reference)

    • {new-config-name}.h needs to include the following files:

      #include <configs/ezynq/ezynq_MT41K256M16RE125.h>  /* should be before zed_ezynq.h as it overwrites DDR3L with DDR3 */
      #include <configs/ezynq/ezynq_XC7Z010_1CLG400.h>
      #include <configs/ezynq/zed_ezynq.h>
    • edit the included header files according to the new board configuration.

    WARNING: After the step 5 don't run bitbake ezynq-u-boot -c clean - deletes everything in build/tmp/work/.../ezynq-u-boot/${PV}_${PR}/

  6. Run

    bitbake u-boot-ezynq

    Note: u-boot.bin (not the final boot.bin) size cannot exceed 192KB

Trademark notices

Xilinx® and Zynq® are registered trademarks of Xilinx.

Ezynq project is not endorsed by or affiliated with Xilinx Inc.