Angstrom on Zynq UltraScale+
This page describes how to build and run the Angstrom Distribution on Zynq UltraScale+
Table of Contents
Introduction
Angstrom is an embedded Linux Distribution similar to Poky. It provides opkg as the package manager to install binaries from package feeds similar to higher level distros like Ubuntu and CentOS. Angstrom is based on OpenEmbedded-Core and currently supports the Yocto build flow hosted on Github. This article is intended for those who want to migrate existing Angstrom platforms to Zynq UltraScale+ platforms. Angstrom Thud and Zeus releases will build and run on ZCU102.
Poky is the Xilinx preferred Yocto Distribution. Angstrom should only be used by experienced customers who need to maintain a legacy code base.
Angstrom is not WTS supported. Please do your due diligence and regression test against your requirements.
Build Angstrom
This build flow does not generate the low level boot components such as FSBL and PMUFW, nor does it package a boot.bin bootable image. These images need to be built outside of this flow.
The build flow is Yocto based using meta-angstrom as the distro layer. Angstrom uses Repo to manage the repositories.
Install Repo
Cd into a directory where you keep utilities and make sure it's in your PATH.
$ mkdir ~/bin && cd ~/bin/
Download the Repo script.
$ curl https://storage.googleapis.com/git-repo-downloads/repo > repo
Make Repo executable.
$ chmod a+x repo
Fetch Angstrom Manifest
Create and cd into your working directory.
Fetch the manifest and checkout the target release version, e.g. angstrom-v2019.12-zeus.
Patch the Manifest
The “meta-xilinx” layer is supported by the repo manifest, but it is not supported in the default “bblayers.conf”, so we need to do some work to enable it. There are also some layers that cause errors, so we need to fix them.
Create a new manifest development branch, e.g. xlnx-angstom.
Cd into the “manifests” directory and edit “default.xml”.
Change the “meta-xilinx” revision to “zeus”.
Save the default.xml and commit the change.
Cd into the “conf” directory and edit the bblayers.conf file.
Add the meta-xilinx-bsp and meta-xilinx-standalone layers.
Save “bblayers.conf” and and commit the change.
Edit “bblayers.conf” and delete the “meta-edison” layer, otherwise the build will fail.
Save “bblayers.conf” and and commit the change.
Cd up a directory.
Edit “default.xml” and change the “meta-maker” revision to “zeus”.
Create the patches directory and generate a patchset for these 4 commits (2 if building Thud).
Cd to your top level Yocto directory.
Fetch Source Repositories
Fetch all the source from the repositories in the manifest.
Create local branches with your project name, e.g. xlnx-angstrom.
Configure Angstrom for ZCU102
Configure the Yocto build environment.
The setup-environment script will generate the “conf/auto.conf” file. Edit “conf/auto.conf” and remove SPL and boot.bin targets as shown below.
Bitbake Angstrom
Bitbake an image, e.g. angstrom-image.
Run Angstrom on ZCU102
Format an SD card with 2 partitions where the first partition is FAT (boot) and the second partition is EXT4 Linux (rootfs). Mount the partitions on your host. Copy a compatible boot.bin from either Petalinux or Xilinx Yocto flow to the boot partition.
Cd into the deploy directory for the ZCU102.
Then copy Image, zynqmp-zcu102-rev1.0.dtb and boot.scr to the FAT partition.
Finally extract the root filesystem to the EXT4 partition (may need to be root).
Plug in the SD card to the ZCU102 and boot the board.
Related Links
© Copyright 2019 - 2022 Xilinx Inc. Privacy Policy