Skip to main content

Linux BSP User Guide for AM335X Series Yocto2.4

1. Introduction


This page provides the steps to build the Processor SDK and individual components from source. The Processor SDK build is based on the Arago Project which provides a set of layers for OpenEmbedded and the Yocto Project targeting TI platforms.

2. Linux BSP Version


  • OS: Yocto 2.4
  • Kernel: 4.19.xxx

3. Build Environment on Host


Currently, we adopt Docker as build environment.

You can get the latest version of advrisc/u16.04-amxxlbv1 Docker image for developing TI AM335X projects.

3.1 Docker Installation Commands

$ sudo apt-get update
$ sudo apt-get install -y qemu-user-static
$ sudo apt-get install -y live-build
$ sudo docker pull advrisc/u16.04-amxxlbv1

3.2 Run Docker Example

  • Step 1: Run Docker Container
    Assume your working directory is home/bsp/myLinux and the Docker container name is am335x_yocto_bsp.
    Replace home/bsp/myLinux and am335x_yocto_bsp with the actual ones based on your environment.
$ export WORKSPACE="home/bsp/myLinux"
$ export CONTAINER_NAME="am335x_yocto_bsp"
$ sudo docker run -it --name ${CONTAINER_NAME} -v ${WORKSPACE}:/home/adv/BSP:rw --privileged advrisc/u16.04-amxxlbv1 /bin/bash
  • Step 2: Change User in Container
adv@7cc0fa834366:~$ sudo chown adv:adv -R BSP
  • Step 3: Install build dependencies in Container

    • Install live build

      adv@7cc0fa834366:~$ cd ~
      adv@7cc0fa834366:~$ git clone https://salsa.debian.org/live-team/live-build.git --depth 1 -b debian/1%20230131
      adv@7cc0fa834366:~$ cd live-build
      adv@7cc0fa834366:~$ rm -rf manpages/po/
      adv@7cc0fa834366:~$ sudo make install -j8
      adv@7cc0fa834366:~$ cd ~
      adv@7cc0fa834366:~$ rm -rf live-build
    • Install qemu and binfmts

      adv@7cc0fa834366:~$ sudo apt-get update
      adv@7cc0fa834366:~$ sudo apt-get install binfmt-support qemu-user-static --reinstall
      adv@7cc0fa834366:~$ sudo update-binfmts --enable qemu-aarch64
    • Install gettext

      adv@7cc0fa834366:~$ sudo apt-get update
      adv@7cc0fa834366:~$ sudo apt-get install gettext -y

4. Getting Linux Source Code


The Advantech Yocto BSP source code is available on GitHub. Use the repo tool to download it.

For this example, a directory called yocto_bsp is created for the project.

$ sudo chown adv:adv -R yocto_bsp
$ cd yocto_bsp/
$ mkdir tisdk
$ cd tisdk/
$ repo init -u https://github.com/ADVANTECH-Corp/adv-ti-yocto-bsp.git -b processor-sdk-05.03.00.07 -m release.xml
$ repo sync

If you want to get latest bsp:

$ repo init -u git://github.com/ADVANTECH-Corp/adv-ti-yocto-bsp.git -b processor-sdk-05.03.00.07
$ repo sync

5. Building


Build Instructions

The following commands show the build process after the source code is obtained.

Build Options

The following table provides a list of build targets supported: Processor SDK uses the following oe-layertool-setup configs to configure the meta layers.

$ ./oe-layertool-setup.sh

In addition to individual components packages, the following table provides a list of build targets supported. These are the <target> used in the command:

$ MACHINE=<machine> bitbake <target>
TargetBuild OutputDescription
arago-core-tisdk-imageimages/<machine>/processor-sdk-linux-image-<machine>.tar.xzFull SDK
tisdk-rootfs-imageimages/<machine>/tisdk-rootfs-image-<machine>.tar.xzTarget Filesystem
u-boot-ti-stagingimages/<machine>/u-boot-<machine>.img / MLO-<machine>u-boot
linux-ti-stagingimages/<machine>/zImage-<machine>.bin / .dtbkernel

Supported Platforms

MACHINESupported Product
am335xrsb4220a1RSB-4220A1
am335xrsb4221a1RSB-4221A1
am335xrom3310a1ROM-3310A1
am335xepcr3220a1EPC-R3220A1
am57xxrom7510a1ROM-7510A1

RT Support

Processor SDK Linux supports RT Linux Kernel for the following machines:

$ MACHINE=<machine> ARAGO_RT_ENABLE=1 bitbake <target>

RT supported machines: RSB-4220A1, RSB-4221A1, ROM-3310A1, EPC-R3220A1

Using source package snapshot

Using the snapshot of the arago source packages can avoid fetch errors:

$ ./oe-layertool-setup.sh
$ mkdir downloads
$ cd downloads
$ wget http://software-dl.ti.com/processor-sdk-linux/esd/AM335X/05_03_00_07/exports/am335x-evm-linux-sdk-arago-src-05.03.00.07.tar.xz
$ am335x-evm-linux-sdk-arago-src-05.03.00.07/get_build_sources.sh am335x-evm-linux-sdk-arago-src-05.03.00.07/source_pkg_list.txt

Build command

$ MACHINE=<machine> bitbake <target>

Take uboot as an example:

$ MACHINE=am335xepcr3220a1 bitbake u-boot-ti-staging

The MLO and u-boot.img will be located in the directory, ./arago-tmp-external-linaro-toolchain/deploy/images/am57xxrom7510a2.

To modify source code and rebuild u-boot

$ MACHINE=<machine> bitbake <target> --force -c compile
$ MACHINE=<machine> bitbake <target>

Cleaning Built Recipe

$ MACHINE=<machine> bitbake <target> -c cleansstate

Recipes

$ MACHINE=am335xepcr3220a1 bitbake opencl

Installing Package

$ opkg install [package_ipk].ipk

Common Variations

Rebuilding without SGX: Add to conf/local.conf:

MACHINE_FEATURES_remove="sgx"

Rebuilding without Wayland: Add to conf/local.conf:

DISTRO_FEATURES_remove = "wayland"

6. Update Images


Update Images

Our motherboard generally supports from SD card and onboard flash. This section will take ROM-7510 as an example to introduce how to make a system boot media.

Create a Linux System SD Card

Copy full SDK to your desktop:

$ mkdir ti-sdk-XXX
$ tar -xJf Desktop/processor-sdk-linux-image-<machine>.tar.xz -C ti-sdk-XXX
$ cd ti-sdk-XXX/bin
$ ./create-sdcard.sh

Select SD card, number of partitions, and pre-built system image.

If you need to transfer whole system to on-board flash, press y followed by Enter.

While "[Operation Finished]" shows up means the transferring is finished.

Then insert the Linux system SD card to ROM-7510, it will boot up with Linux environment.

Boot from Onboard Flash

$ cd /mk_inand
$ ./mk-eMMC-boot.sh

Select eMMC, partitions, and confirm burning.

While "[Operation Finished]" shows up means the burning is finished.

Then you can boot from onboard flash without SD card.

Debug console information

  • Debug Port Information
  • Debug console tool: "minicom" or "putty"
  • Baud rate: 115200

7. Summary


7.1 Supported Hardware Platforms

  • ROM-7510: Computer-on-Module with AM57xx processor
  • RSB-4220: Single Board Computer with AM335x processor
  • RSB-4221: Single Board Computer with AM335x processor
  • ROM-3310: Computer-on-Module with AM335x processor
  • EPC-R3220: Embedded PC with AM335x processor

7.2 System Requirements

  • Docker environment with advrisc/u16.04-amxxlbv1 image
  • Ubuntu 16.04 base system
  • BSP tarball from PM
  • Build tools and dependencies
  • Sufficient disk space for source code and build artifacts
  • Internet connection for package installation
  • Target processors (ROM-7510, RSB-4220, RSB-4221, ROM-3310, EPC-R3220)

7.3 Build Workflow Summary

  1. Environment Setup → Docker + Ubuntu 16.04
  2. Source Acquisition → BSP tarball from PM
  3. Project Selection → Choose target processors platform
  4. Component Build → U-boot → Kernel
  5. Image Generation → Firmware packaging → (Update image)*
  6. Deployment → AndroidTool, SD/USB storage, or SDDiskTool

Components marked with asterisk () are not supported in BSP tarball mode.

7.4 Development Modes

7.4.1 BSP Tarball Mode (Limited)

  • Use Case: Quick U-boot and kernel development
  • Advantages: Fast setup, smaller download size
  • Limitations: Cannot build recovery, debian, or update images
Important Notes about BSP Tarball

The BSP tarball is designed for fast development of uboot and kernel components. However, it has some limitations.

  • Supported: U-boot building
  • Supported: Kernel building
  • NOT Supported: Recovery building
  • NOT Supported: Debian building
  • NOT Supported: Update image building

For full BSP functionality including recovery, debian, and update image building, please contact your PM for the complete SDK.

7.4.2 Full SDK Mode (Complete)

  • Use Case: Complete system development and customization
  • Advantages: Full build capability, all components supported
  • Requirements: Contact PM for access