Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Table of Contents

Table of Contents
excludeTable of Contents

Install Xilinx Yocto

Yocto Host Dependencies

Install the standard Yocto dependencies for your host machine per the Yocto Reference Manual.

Repo

Repo is a repository management tool that is built on top of Git. Repo unifies the many Git repositories when necessary, and automates parts of the development workflow. Repo is not meant to replace Git, only to make it easier to work with Git in the context of development.The repo command is an executable Python script that you can put anywhere in your path. In working with the source files, you will use Repo for across-network operations. For example, with a single Repo command you can download files from multiple repositories into your local working directory.

Info

For more info about Repo, please see https://source.android.com/source/developing.html.

Install Repo

Here we will simply install the repo script from Google.

Code Block
themeMidnight
# Cd into a directory where you keep utilities and make sure it's in your PATH
$ cd ~/bin/

# Download the repo script
$ curl https://storage.googleapis.com/git-repo-downloads/repo > repo 

# Make repo executable
$ chmod a+x repo 

$# Test repo is working
$ repo --help

...

Code Block
themeMidnight
# Fetch the manifest and checkout the target release version
$ repo init -u githttps://github.com/Xilinx/yocto-manifests.git -b <current-release>

# Fetch all the source from the repositories in the manifest
$ repo sync 

# OPTIONAL: CheckoutCreate thea correspondingdevelopment releasebranch foron each repositoryrepo
$ repo start <current-release><name> --all


Info

Replace <current-release> with the git release tag, e.g. rel-v2018.3, rel-v2019.1


Warning

In 2019.2, there is a bug in the tcf-agent bbappend in the meta-petalinux layer.   To work around it, edit the following file:  sources/meta-petalinux/recipes-devtools/tcf-agent/tcf-agent_%.bbappend

Change the following line: 

Code Block
themeMidnight
# Original 
        git://git.eclipse.org/gitroot/tcf/org.eclipse.tcf.agent.git;branch=master;protocol=https \
# Updated
        git://git.eclipse.org/gitroot/tcf/org.eclipse.tcf.agent.git;branch=master;protocol=git \

This is fixed in 2020.1

Configure the Xilinx Yocto Build

...

U-boot is built with default variables that control the boot.  You may use the defaults, modify them by patching the configuration headers during the build or modify them at run-time from the hush shell.  A more flexible way to control the boot is through boot scripts, boot.scr or extlinux.conf.  U-boot 2019.01 defaults to distro boot (2) as the boot mechanism, which searches for things to boot.  Distro boot will look for extlinux.conf, boot.scr and an EFI image in that order.  This section shows how to build extlinux.conf and boot.scr.

Boot.scr

Note
title2019.1 and earlier versions

This section is only required for 2019.1 and earlier versions.  Boot.scr has been added to each machine configuration in later versions.


Meta-xilinx-bsp provides the "u-boot-zynq-scr.bb" recipe to generate the boot.scr.  To build boot.scr, add the Yocto variable below to your local.conf.  

...

Info

You may run "mkimage -l <fitimage>" to view the partitions


Note

This article does not show how to configure the u-boot scripts to boot a FIT image

...

Finally bitbake the target image "petalinux-image-minimal".  You can pass the target machine on the command line or add it to your local.conf as the default machine.  When the build is completes, your images are located in "build/tmp/deploy/images/<machine>".  In this example we are building for the ZCU102.

Code Block
themeMidnight
$ MACHINE=zcu102-zynqmp bitbake petalinux-image-minimal

...

Info
titleDevice Tree Blobs

There may be multiple dtb files in your machine's deploy directory:

  1. <machine>-system.dtb is the dtb generated by DTG.  This will include device tree nodes that include PCW and PL devices.
  2. <kernel-dts>.dtb is the dtb generated from the dts in the kernel tree.  This is good for debugging if the kernel won't boot with the PL.

References

  1. U-boot Distro Boot
  2. Yocto Initramfs

...