Template:Yocto Build Release TI

From Variscite Wiki
Revision as of 22:17, 20 March 2023 by Nate (talk | contribs)

Introduction

This guide walks through the process for building Variscite's reference Yocto image from source code. It is derived from TI's guide Overview Building the SDK

Installing required packages

Please make sure your host PC is running Ubuntu 18.04/20.04 64-bit and is up to date:

 $ sudo apt-get update && sudo apt-get dist-upgrade

For Ubuntu 18.04/20.04 64-bit:

$ sudo dpkg --add-architecture i386
$ sudo apt update && sudo apt install build-essential autoconf \
       automake bison \
       flex libssl-dev bc u-boot-tools \
       python diffstat \
       texinfo gawk chrpath dos2unix \
       wget unzip socat doxygen libc6:i386 \
       libncurses5:i386 libstdc++6:i386 \
       libz1:i386 g++-multilib \
       git python3-distutils python3-apt

By default Ubuntu uses “dash” as the default shell for /bin/sh. You must reconfigure to use bash by running the following command:

$ sudo dpkg-reconfigure dash

Be sure to select “No” when you are asked to use dash as the default system shell.

Install Toolchains to home directory

$ cd ~
$ wget  && \
   tar -Jxvf  -C $HOME && \
   wget  && \
   tar -Jxvf  -C $HOME

Download Yocto and setup environment

Download the source code:

$ mkdir ~/var-ti-yocto && cd ~/var-ti-yocto
$ git clone  tisdk
$ cd tisdk
$ ./oe-layertool-setup.sh -f 
$ cd build
$ git clone https://git.ti.com/git/security-development-tools/core-secdev-k3.git -b master

Next, setup the environment. The above commands are only required for the very first build setup: whenever restarting a newer build session (from a different terminal or in a different time), you can skip the full setup and just run:

$ cd build
$ . conf/setenv
$ export TOOLCHAIN_PATH_ARMV7=$HOME/ && \
     export TOOLCHAIN_PATH_ARMV8=$HOME/ && \
     export TI_SECURE_DEV_PKG_K3=`pwd`/core-secdev-k3

Build GUI demo image

$ MACHINE=am62x-var-som bitbake var-default-image

Create a bootable SD card

The wic image fully supports booting from an SD Card. Use the command below to write it to an SD Card:

$ zstdcat arago-tmp-external-arm-glibc/deploy/images/am62x-var-som/var-default-image-am62x-var-som.wic.zst | sudo dd of=/dev/sdX bs=1M && sync
NOTE: The wic image does not support all features booting from eMMC. For example, /etc/fw_env.config is configured for the SD Card (/dev/mmcblk1)

Create a Recovery SD card

As mentioned above, the wic image only supports booting from an SD card. To flash an image to eMMC, Variscite provides an image var-recovery-sd-image, which inherits var-default-image and adds the following files needed for installing to eMMC:

/usr/bin/install_yocto.sh
/usr/bin/echos.sh
/opt/images/Yocto/
/opt/images/Yocto/boot
/opt/images/Yocto/boot/u-boot.img
/opt/images/Yocto/boot/tiboot3.bin
/opt/images/Yocto/boot/wificfg
/opt/images/Yocto/boot/tispl.bin
/opt/images/Yocto/boot/uEnv.txt
/opt/images/Yocto/rootfs.tar.zst

Build the image:

$ MACHINE=am62x-var-som bitbake var-recovery-sd-image

Write it to an SD Card:

$ zstdcat arago-tmp-external-arm-glibc/deploy/images/am62x-var-som/var-recovery-sd-image-am62x-var-som.wic.zst | sudo dd of=/dev/sdX bs=1M && sync

Note: Some SD card duplicator machines do not support 64-bit filesystems. To build a recovery SD card image with 32-bit filesystems, add MKE2FS_NO_64="y" to conf/local.conf and rebuild the image:

$ echo 'KE2FS_NO_64="y"' >> conf/local.conf