Yocto Support for NVIDIA Jetson Platforms - Setting up Yocto

From RidgeRun Developer Wiki




  Index Next: Flashing the Jetson Platform




Purpose of this tutorial

The goal of this wiki guide is to provide the instructions to configure, build, and install Yocto in NVIDIA platforms based in previous experience of the RidgeRun engineers. We hope this provides some light to new people using Yocto in Jetson. The tutorial uses the meta-tegra layer for Yocto.

These instructions provide a more manual and raw Yocto approach that can be very useful and configurable. However, if you just want an automatic full setup experience without much control; the project and instructions over at Tegra Demo Distro do just that by abstracting the configuration into scripts and are a good starting point.

If you run into any issues, please check the Yocto community tutorial as well.

Select your Machine

You can apply the instructions in this wiki for multiple devices, so, whenever you see <MACHINE>, replace it (with the <> symbols included) with your target platform. Below you will find the possible <MACHINE> substitutions.

Device <MACHINE>
TX1 jetson-tx1-devkit
TX2 jetson-tx2-devkit jetson-tx2-devkit-tx2i jetson-tx2-devkit-4gb*
XAVIER jetson-agx-xavier-devkit
NANO jetson-nano-devkit jetson-nano-devkit-emmc jetson-nano-2gb-devkit*
XAVIER NX jetson-xavier-nx-devkit* jetson-xavier-nx-devkit-emmc* jetson-xavier-nx-devkit-tx2-nx*
ORIN jetson-agx-orin-devkit
Note: the machines with * have NOT been tested by RidgeRun yet

Install Yocto Dependencies

1. Use the following command to install Yocto dependencies on Ubuntu.

sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm zstd

2. Create a working directory for Yocto

YOCTO_DIR=/home/$USER/yocto-tegra
mkdir $YOCTO_DIR

3. Select the latest stable branch (as of June 2023)

export BRANCH="kirkstone"


4. Download Yocto's Poky base meta-layer

cd $YOCTO_DIR
git clone -b ${BRANCH} git://git.yoctoproject.org/poky.git poky

5. Download meta-tegra (contains L4T 35.3.1 as of June 2023)

git clone -b ${BRANCH} https://github.com/OE4T/meta-tegra.git

Compile Yocto image

1. Initialize the build environment

cd $YOCTO_DIR
source poky/oe-init-build-env build

2. Setup the required settings

local.conf

  • Open the file $YOCTO_DIR/build/conf/local.conf with your favorite text editor and append the following lines to the end of the file.
  • Setup the SSTATE and DOWNLOADS directories with a custom path to avoid re-downloading and re-compiling in the future.
  • Add the name of your target platform <MACHINE>.
  • Set IMAGE_CLASSES and IMAGE_FSTYPES to easily flash the target board.


MACHINE ?= "<MACHINE>"

DISTRO_FEATURES = "x11 opengl "

IMAGE_CLASSES += "image_types_tegra"
IMAGE_FSTYPES = "tegraflash"

SSTATE_DIR ?= "/home/${USER}/Yocto/sstate_dir"
DL_DIR ?= "/home/${USER}/Yocto/downloads"

Optional: By default, Yocto uses all the available cores and threads of the computer. If you want to limit the resources used on the build, you can add the following lines to your $YOCTO_DIR/build/conf/local.conf file. Change the parameters according to your needs and to your host machine specification.

BB_NUMBER_THREADS = '6'
PARALLEL_MAKE = '-j6'

bblayers.conf

Open the file $YOCTO_DIR/build/conf/bblayers.conf with your favorite text editor and add the meta-tegra layer to the build/conf/bblayers.conf file to load the provided recipes:

 BBLAYERS ?= " \         
  /home/${USER}/yocto-tegra/meta-tegra \                                                                                                                                                                                                                                                                                                                                                                
  /home/${USER}/yocto-tegra/poky/meta \       
  /home/${USER}/yocto-tegra/poky/meta-poky \                                                                                                                                                                
  /home/${USER}/yocto-tegra/poky/meta-yocto-bsp \                                                                                                                                                                                                                                                                                                    
  "

3. Build the image

Use an image with developer tools such as GStreamer, NVIDIA plugins, etc

bitbake core-image-sato-dev

Or you can choose a different image from the following table

<IMAGE>
core-image-sato-dev
core-image-weston
core-image-base

Legacy instructions

Please visit the following links for older versions of Jetpack.


  Index Next: Flashing the Jetson Platform