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

  1. https://github.com/Angstrom-distribution/angstrom-manifest

  2. https://github.com/Angstrom-distribution/meta-angstrom

© Copyright 2019 - 2022 Xilinx Inc. Privacy Policy