Yocto Linux BSP Ver.4 User Guide for AM57xx/AM335x series
Contents
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.
This page will provide the basic steps require to recreate the Processor SDK along with a reference of Processor SDK specific configurations, build targets, and target devices. Also, tips and suggestions are provided along with links for more in-depth information.
Getting Start
Prerequisites
Host Setup
Generally,to do Linux development, you’ll need a host PC running Linux. In the development with the advantech SDK, it would be strongly recommend to use Ubuntu 16.04 LTS 64 bit as developing environment. Because we have successfully tested our BSP on these OS version. Please install the Ubuntu 16.04 LTS 64 bit at your PC/NB in advance.
Docker install and setting
If you don't have docker in your system, then you can follow the below steps to install docker and run it first.
To install Docker Engine on your platform
Please refer to Docker Installation Guide for details
To pull ubuntu 16.04 image from Docker Hub
To create container
Build Steps
The following example shows how to download the Advantech Yocto BSP from GitHub.
For this example, a directory called yocto_bsp is created for the project.
$ repo sync
If you want to get latest bsp:
Due to lots of company firewalls/proxies only permitting HTTP traffic this is what our default repo manifest is using. At times the loading of repository server might be too heavy or for other reasons. You may be experience the following issues:
First just try repo syncing again it might just have been a connection glitch.
Then, if the error(s) persist try using git's garbage collection on the failing repository before attempting to sync again, e.g. if the error indicates an issue in the meta-openembedded repository:
cd .repo/projects/sources/meta-arago.git
If the error(s) persist try removing your local git/repo cache before attempting to sync again, e.g. if the error indicates an issue in the meta-openembedded repository:
Additionally you can limit the number of git repositories which are downloaded in parallel by using the additional parameter "-jX". e.g. to download one repository at a time:
Additionally the following tweak to your IP settings maybe helpful:
sudo sysctl -w net.ipv4.tcp_window_scaling=0
If your Internet connection permits you might also try switching those failing repositories to using the git protocol instead by modifying your .repo/manifest.xml as follows:
<remote fetch="git://git.arago-project.org" name="meta-arago"/>
Processor SDK Build Reference
The following sections provide information for configuration, build options, and supported platforms of the Processor SDK.
Layer Configuration
Processor SDK uses the following oe-layertool-setup configs to configure the meta layers.
Build Options
Images
In addition to individual components packages, the following table provides a list of build targets supported. These are the <target> used in the command:
The "Build Output" is given relative to the arago-tmp-[toolchain]/deploy directory.
Target |
Build Output |
Description |
arago-core-tisdk-image |
images/<machine>/processor-sdk-linux-image-<machine>.tar.xz |
Full SDK |
tisdk-rootfs-image |
images/<machine>/tisdk-rootfs-image-<machine>.tar.xz |
Target Filesystem |
u-boot-ti-staging |
images/<machine>/u-boot-<machine>.img images/<machine>/MLO-<machine> |
u-boot |
linux-ti-staging |
images/<machine>/zImage-<machine>.bin images/<machine>/zImage-<machine>.dtb |
kernel |
Platforms
The following platforms are supported in Processor SDK. These are the <machine> in the command:
MACHINE |
Supported Product |
am335xrsb4220a1 |
RSB-4220A1 |
am335xrsb4221a1 |
RSB-4221A1 |
am335xrom3310a1 |
ROM-3310A1 |
am335xepcr3220a1 |
EPC-R3220A1 |
am57xxrom7510a1 |
ROM-7510A1 |
RT Support
Processor SDK Linux supports RT Linux Kernel for the following machines. Use the command below to make the RT builds:
MACHINE |
Supported Product |
am335xrsb4220a1 |
RSB-4220A1 |
am335xrsb4221a1 |
RSB-4221A1 |
am335xrom3310a1 |
ROM-3310A1 |
am335xepcr3220a1 |
EPC-R3220A1 |
Using source package snapshot
Using the snapshot of the arago source packages can avoid fetch errors during the build when external URLs become unavailable. To use the snapshot of sources distributed with a given Processor SDK release, you must download a script from the SDK download page and then execute it on your host to fetch all the packages from TI servers.
Once this package is downloaded, there are just a few extra steps in the build process to fetch all the corresponding packages. The extra steps are shown in red below:
Command
Build command
Take uboot as an example:
The MLO and u-boot.img will be located in the directory, ./arago-tmp-external-linaro-toolchain/deploy/images/am57xxrom7510a2.
When the target is arago-core-tisdk-image, MLO,u-boot.img,zImage, devicetree file, filesystem and full SDK will compiled.
To modify source code and rebuild u-boot
When needed, source code under the work directory (e.g.,arago-tmp-external-linaro-toolchain/work/am57xxrom7510a2-linux-gnueabi/u-boot-ti-staging/2016.05+gitAUTOINC+87ffcd71d0-r14/git) can be modified. After the modification is done, run the following commands to force recompilation with the new code and rebuilding of the recipe, e.g.,
Take uboot as an example:
Cleaning Built Recipe
A built recipe can be cleaned using:
Take uboot as an example:
The cleansstate task will clean recipe's work directory and remove the recipe's output from the dependency tree used by other recipe's during compilation.
Recipes
Recipe Basics
One or more recipes can be specified for the <target> for greater granularity of recipe development and debug. Specifying a recipe name, minus the version (if the version is appended to the name), will build the recipe and all its dependencies.
For example, the command below builds only the opencl recipe and all the dependencies it defines.
After the bitbake command above is successfully done, arago-tmp-[toolchain]/work/am335xepcr3220a1-linux-gnueabi/opencl directory will be available including the original source code under the git folder, independent shared objects (.so files) under packages-split folder, and IPKs under deploy-ipks folder.
NOTE:Please note that the output of a recipe can be in another folder under "arago-tmp-[toolchain]/work" directory, depending on the defines of the recipe.
Installing Package
To install a modified and rebuilt package, copy the new IPKs from the deploy-ipks folder (e.g., arago-tmp-[toolchain]/work/am57xx_am57xxrom7510a2-linux-gnueabi/opencl/[version]/deploy-ipks) to the target system and then run the following command to install the IPKs:
Common Variations
Rebuilding without SGX
In Processor SDK delivered today the graphics hardware acceleration is enabled by default for device families with SGX (e.g. AM335x, AM437x, AM57xx). As a result, some of the applications with graphics dependencies will not run properly on device variants in those families that do not contain the SGX accelerator (e.g. AM3352, AM4372, etc.). The Processor SDK has been enhanced to provide the same OOB experience with software rendering provided by QT5/Weston. The non-SGX software rendering build will be enabled by adding the following to the bottom of conf/local.conf immediately before invoking bitbake.
Rebuilding without Wayland
If a full Window system is not needed, i.e. if you simply want apps to run full screen using EGLFS then you can remove Wayland by adding the following to the bottom of conf/local.conf immediately before invoking bitbake:
Create a Linux System Boot Media
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(processor-sdk-linux-image-<machine>.tar.xz) package to your desktop
Select SD card:
Select number of partitions:
Whether to continue:
Select Pre-built System image:
Select tisdk-rootfs-image-XXX.tar.xz(XXX represents machine name, e.g. am335xepcr3220a1):
If you need to transfer whole system to on-board flash, please 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
If you have already get a Linux system SD card and the last step of make process selected "y", you can refer to the following steps to burn the system to the onboard flash.
Please insert the Linux system SD card to ROM-7510, and then power up. It boot from the SD card.
Select eMMC:
Select number of partitions:
Partition completion. Continue the burning system or not?
If “y” was pressed, the system will be burned to eMMC.
While "[Operation Finished]" shows up means the burning is finished.
Then you can boot from onboard flash without SD card.
Debug console information
If you want to see debug message from device, you need to prepare for hardware device and software tool.
Preparing for hardware device
- The following URL provides information about the debug port slot and the debug port line for each device
Preparing for software tool
- You need to prepare the debug console tool. For example: "minicom" tool or "putty" tool.
- Baud rate: 115200
Local development
All instructions in this guide are based on Ubuntu 14.04 LTS developing environment. Please install the Ubuntu 14.04 LTS at your PC/NB in advance.
Set up Build Environment
Perform the following command in terminal console
Rebuild sources
Using the top-level makefile in the SDK root directory. For example:
Rebuilds all components in the SDK:
Configures and builds the kernel:
If you want to copy the compiled module to the specified directory:
Please specifying the installation directory in the Rules.make file firstly
Then executing the following instructions:
Builds u-boot, u-boot-spl and MLO:
Customization
Package addition
To add vsftpd & crontab
- Navigate to the directory where tisdk-rootfs-image.bbappend located
$ cd ${BSP_HOME}/sources/meta-advantech2/meta-ti-adv/recipes-core/images/
- Add following line to tisdk-rootfs-image.bbappend
IMAGE_INSTALL += " cronie vsftpd "
- Then, follow the Build Steps above to generate the image.