VAR-SOM-AM33 Yocto FIDO GS

From Variscite Wiki
VAR-SOM-AM33 Yocto 1.8 (Fido) Distribution User's Guide

About this Manual

This document describes how to install Variscite's Yocto release for the VAR-SOM-AM33.

The Yocto distribution provides a fundamental software platform for development, deployment and execution on VAR-SOM-AM33. It abstracts the functionality provided by the hardware.

In this context, the document contains instructions to:

  • Install the release on a development machine.
  • Build the sources included in this release.
  • Instaling the binaries on the VAR-SOM-AM33.
  • Booting the VAR-SOM-AM33.

Installation

Prerequisites

Before starting the installation, make sure below system requirements are met:

  • Host machine running a Ubuntu 14.04 64 LTS.
  • VAR-SOM-AM33 Evaluation Kit + VAR-SOM-AM33 Yocto support installation sources and binaries (from FTP). Please refer to support@variscite.com for obtaining FTP credentials.


The Linux host is used for the following:

  • Recompiling U-Boot / kernel.
  • Hosting the NFS server to boot the EVM with NFS as root filesystem.


Either of Windows or Linux host can be used for:

  • Hosting the TFTP server required for downloading the kernel and file-system images from U-Boot using Ethernet.
  • Running a serial console terminal application


Building the Yocto distribution via Bitbake will produce a complete set of downloaded source code + binaries for each component:

  • Yocto build environment
  • Downloaded Linux kernel source code + build kernel binaries (DTB and zImage) for VAR-SOM-AM33.
  • Downloaded U-Boot source code + build U-boot binaries (MLO and U-boot) for VAR-SOM-AM33.
  • Linux root file-system.

Install the Arago toolchain

$ wget --no-check-certificate http://releases.linaro.org/15.05/components/toolchain/binaries/arm-linux-gnueabihf/gcc-linaro-4.9-2015.05-x86_64_arm-linux-gnueabihf.tar.xz
$ sudo tar -xvf gcc-linaro-4.9-2015.05-x86_64_arm-linux-gnueabihf.tar.xz -C /opt

Install development tools

$ sudo apt-get install git build-essential diffstat texinfo gawk chrpath gcc-multilib wget socat libsdl1.2-dev mtd-utils dos2unix

Download TI's Yocto Fido Distribution

$ mkdir ~/yocto_varsomam33
$ cd ~/yocto_varsomam33
$ git clone git://arago-project.org/git/projects/oe-layersetup.git tisdk

Downloading VAR-SOM-AM33 Support

Download the VAR-SOM-AM33 Yocto support installation from github:

$ mkdir ~/yocto_varsomam33/tisdk/sources
$ cd ~/yocto_varsomam33/tisdk/sources
$ git clone https://github.com/varigit/meta-variscite-amx3

Downloading the YOCTO Fido 1.8 configuration

Download the YOCTO Fido 1.8 sources as follows:

$ cd ~/yocto_varsomam33/tisdk
$ ./oe-layertool-setup.sh -f sources/meta-variscite-amx3/conf/var-som-amx3_sdk-02.00.00-config.txt

local.conf customizations

Edit you local.conf file:

$ cd ~/yocto_varsomam33/tisdk/build
$ gedit conf/local.conf 

Change your parallel build and download directory:

Parallel build

Set the build parameters to fully utilize your host machine BB_NUMBER_THREADS = '4'
PARALLEL_MAKE = '-j 6' BB_NUMBER_THREADS should be your host machine's number of threads minus 2 or same. PARALLEL_MAKE should be the number of threads your host machine has plus two.

Download directory

Recommended to save download time and space. DL_DIR = "/home/<uname>/yocto_dl"

Building the VAR-SOM-AM33 Yocto image

First, change directory to the build directory of Yocto:

$ cd ~/yocto_varsomam33/tisdk/build

The developer can build the tisdk-rootfs-image image as follows:

$ export PATH=/opt/gcc-linaro-4.9-2015.05-x86_64_arm-linux-gnueabihf/bin:$PATH
$ . conf/setenv
$ MACHINE=varsomam33 bitbake tisdk-rootfs-image

After the image was built, all images will be located in: ~/yocto_varsomam33/tisdk/build/arago-tmp-external-linaro-toolchain/deploy/images/ - Specifically:

Build Results

The resulted images are locaated in tmp/deploy/images/var-som-mx6.

Image Name
How to use
zImage Kernel uncompressed image
zImage-var-som-am33.dtb The VAR-SOM-AM33 kernel device tree
uImage Linux kernel image, same binary for SD-Card or NAND Flash
MLO The MLO is pre-u-boot SW component, required for DDR initialization
u-boot.img U-Boot bootloader
tisdk-rootfs-image-varsomam33.tar.gz Compressed rootfs tarball


If the rootfs directory already exists - Please make sure to erase all its content before extracting a new rootfs image into it:

$ sudo rm -rf ~/yocto_varsomam33/rootfs/*

Extract the rootfs as follows:

 $ sudo mkdir ~/yocto_varsomam33/rootfs
 $ sudo tar xvf ./arago-tmp-external-linaro-toolchain/deploy/images/varsomam33/tisdk-rootfs-image-varsomam33.tar.gz -C ~/yocto_varsomam33/rootfs

This creates a rootfs directory for the Yocto / VAR-SOM-AM33 build.

Create a bootable SD-Card

The below procedure will result in a bootable SD-Card:

  • SD-Card will be partitioned into 2 partitions:
    • FAT32 Boot partition: includes MLO and U-boot required for initial boot
    • ext3 file system: includes zImage, kernel device tree and a complete rootfs
  • All NAND flash binaries will be copied to rootfs under /opt/TISDK directory, for NAND Flash burning if required.

Please follow the below steps:

  • Insert a 4GB+ SD-Card to host computer
  • Run dmesg command to identify which /dev/sdX was created
  • To generate the SD-Card - Run script (and choose the correct /dev/sdX of the 4GB SD-Card inserted):
$ cd ~/yocto_varsomam33/tisdk/sources/meta-variscite-amx3/utils
$ sudo ./create-sdcard.sh ~/yocto_varsomam33/tisdk ~/yocto_varsomam33/rootfs/

Boot

The Kernel and root the file-system can be booted either from NAND or SD-Card.

Following sections describe various kernel boot options possible.

Boot from MMC/SD

For creating a bootable SD , follow the below instructions on Creating a bootable SD-Card

To boot the bootable SD-Card, follow the steps below:

  • Power-off board
  • Insert the SD card into the SD-Card slot of the custom board
  • Press and hold the boot select switch while powering ON the board. Booting without pressing the boot-select button, CPU will boot from NAND-Flash. While currently our NAND is either empty, or has older revisions.
  • Login as root (no password)

Boot from NAND

If boot-select button is not pressed at power-up,by default the VAR-SOM-AM33 boots from NAND.
Make sure NAND-Flash binaries were flashed to NAND-Flash : NAND Flash Burning

Flash binaries to NAND

Please refer to : NAND Flash Burning

NAND Recovery script

Variscite provides NAND-recovery.sh script, as a full example of flashing all required binaries to NAND-Flash.
An already made, prebuilt bootable SD-Card, can be downloaded and mounted on SD-Card from Variscite's FTP, please refer to :
VAR-SOM-AM33 Yocto NAND Recovery

Build U-Boot out of yocto tree

Please refer to : Build u-boot out of yocto tree

Building Linux kernel out-of-yocto tree

For manually building the Linux kernel, out of the yocto build system, please refer to :
Build linux kernel out of yocto tree


Replace bootable SD-Card's kernel

In order to install the newly created kernel to the SD-Card, please follow the instructions below:
1) Plug in the bootable SD-Card created above to a Linux host PC
2) Mount the second partition, which holds the system's file system as /media/rootfs.
3) Install by executing the following commands:

$ sudo cp arch/arm/boot/zImage /media/rootfs/boot
$ sudo cp arch/arm/boot/dts/var-som-am33.dtb /media/rootfs/boot
$ sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules_install INSTALL_MOD_PATH=/media/rootfs 
$ sync
$ sudo umount /media/boot
$ sudo umount /media/rootfs
$ sudo umount /media/user

Out-of-tree Kernel Modules

NOTE:
Some drivers like the SGX and WLAN drivers are delivered as modules outside of the kernel tree. These drivers binaries are already included in the pre-built root file-systems provided by Variscite.

Support carrier boards without a Touch screen

In order to skip the Touch screen calibration on the first boot on carrier boards without a Touch screen -

Please insert the SD-Card to a Linux machine (or VM) after creating the SD-Card and type the following command to disable touch screen calibration at the first boot:

$ sudo touch /media/boot/ws-calibrate.rules