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.
Boards supported by this layer:
- Elphel393
- MicroZed
- Zedboard (not tested)
- ZC706 (not tested)
This layer depends on:
- URI: git://git.openembedded.org/bitbake
- URI: git://git.openembedded.org/openembedded-core, layers: meta
- URI: git://github.com/MentorEmbedded/meta-sourcery.git, layers: meta-sourcery (for external toolchains only)
- URI: git://github.com/Xilinx/u-boot-xlnx.git, branch=master-next
- URI: git://git.code.sf.net/p/elphel/ezynq
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
Note: This boot flow generates a bootable boot.bin.
- Copy boot.bin and u-boot.img(if generated) onto the SD Card.
- (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
- Insert SD Card, connect UART to Terminal program and boot board (Ensure the board is configured for SD Boot).
- To get to u-boot command line press any key withing 1 second.
-
Configure the new board in build/conf/local.conf:
MACHINE ?= "{new-board}"
-
Create conf/machine/.conf - use microzed.conf as a reference.
-
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
-
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.
-
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}/
-
-
Run
bitbake u-boot-ezynq
Note: u-boot.bin (not the final boot.bin) size cannot exceed 192KB
Xilinx® and Zynq® are registered trademarks of Xilinx.
Ezynq project is not endorsed by or affiliated with Xilinx Inc.