A layer for Poky to build a bootloader for 10393 board (depends on ezynq)

Name Last Update
conf Loading commit data...
recipes-bsp/u-boot Loading commit data...
LICENSE Loading commit data...
README.md Loading commit data...


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:

  • Elphel393
  • MicroZed
  • Zedboard (not tested)
  • ZC706 (not tested)


This layer depends on:

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

or: $ bitbake virtual/bootloader or: $ 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
  • u-boot.map - 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-.ext2.gz.u-boot) - RootFS
    • devicetree.dtb (uImage-.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/.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}/*
  1. 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.