Difference between revisions of "CM-T3730: Linux: Building images"
(→Building Angstrom Linux images) |
(→Building Graphics SDK outside of OE) |
||
Line 141: | Line 141: | ||
* Apply CM-T3730 patches: | * Apply CM-T3730 patches: | ||
<pre> | <pre> | ||
− | patch -p1 < /path/to/cm-t3730-linux/extra/dvsdk_04_03_00_06/dvsdk_04_03_00_06-cm-t3730- | + | patch -p1 < /path/to/cm-t3730-linux/extra/dvsdk_04_03_00_06/dvsdk_04_03_00_06-cm-t3730-6.patch |
</pre> | </pre> | ||
* Build the DVSDK: | * Build the DVSDK: | ||
Line 164: | Line 164: | ||
<pre> | <pre> | ||
cd /path/to/Graphics/SDK/4/05/00/03/ | cd /path/to/Graphics/SDK/4/05/00/03/ | ||
− | patch -p1 < /path/to/cm-t3730-linux/extra/Graphics_SDK_4_05_00_03/graphics_sdk_04_05_00_03-cm-t3730- | + | patch -p1 < /path/to/cm-t3730-linux/extra/Graphics_SDK_4_05_00_03/graphics_sdk_04_05_00_03-cm-t3730-6.patch |
</pre> | </pre> | ||
* Setup the environment variables by editing the {{filename|Rules.make}} file. Set the following environment variables to appropriate values: | * Setup the environment variables by editing the {{filename|Rules.make}} file. Set the following environment variables to appropriate values: |
Latest revision as of 09:42, 29 July 2013
Contents
Angstrom Linux images
The run-time Angstrom Linux image for CM-T3730 is created using OpenEmbedded framework. The OpenEmbedded framework can also be used for building custom Linux images.
OpenEmbedded setup
Building custom Linux images for CM-T3730 requires installation of OpenEmbedded (OE) framework. The framework installation process is described in Getting Started section of OpenEmbedded User Manual.
This article assumes that the Getting Started instructions have been followed precisely and the same directory structure and all the tools were installed. Also this article will use the $OEBASE variable to denote the base directory of the OpenEmbedded framework.
The OpenEmbedded framework must be configured prior to building images for CM-T3730. Example configuration for Angstrom Linux image creation for CM-T3730 can be found in oe/local.conf file of the CM-T3730 Linux package. The oe/local.conf file must be copied to ${OEBASE}/build/conf directory:
cp /path/to/cm-t3730-linux/oe/local.conf ${OEBASE}/build/conf
CM-T3730 is currently not supported by upstream OpenEmbedded. The CM-T3730 Linux package provides patch series that introduce the machine support for OE framework.
Applying Patches
- Create a branch for CM-T3730 development. CM-T3730 patches are generated vs. commit b50fde72d5789b3185f9a7c64924280bb063cfad in org.openembedded.dev branch of the OpenEmbedded git tree. It is recommended to use exactly the same baseline to avoid merge conflicts.
cd $OEBASE/openembedded git checkout -b cm-t3730-dev b50fde72d5789b3185f9a7c64924280bb063cfad
- Apply CM-T3730 patches:
git am /path/to/cm-t3730-linux/oe/patches/*
Building Angstrom Linux images
- Setup environment variables:
export OEBASE=/path/to/oe cd $OEBASE export PATH=$OEBASE/bitbake/bin:$PATH export BBPATH=$OEBASE/build:$OEBASE/openembedded export BB_ENV_EXTRAWHITE="OEBASE"
- Build Angstrom Linux image:
bitbake cm-t3730-demo-image
Once bitbake has finished, the image is created and placed into the ${OEBASE}/build/arm/tmp/deploy/eglibc/images/cm-t3730 directory. Default configuration creates two types of images: .tar.bz2, and .ubi. The .tar.bz2 archive should be extracted to the rootfs (third) partition of the CM-T3730 MMC/SD card. Alternatively, it can be extracted to a directory on the host workstation. This directory may be used as networked root filesystem for CM-T3730.
User Application
There are multiple ways to build user space applications that can run on the CM-T3730. This article will focus on building user application with OE framework.
Building user application using OE
Once the OpenEmbadded framework is properly set up and configured on your host machine it can be used for building any kind of applications targeted for CM-T3730. This task requires creating a new Bitbake recipe. For more details about Bitbake options as well as writing Bitbake recipes please refer the Bitbake user manual and the Recipes section in the OE user manual.
The CM-T3730 Linux package provides a sample Bitbake recipe that allows building a basic "Hello World!" application. This chapter assumes that the OpenEmbadded framework has been properly setup and configured on your Linux host machine. Extract the oe-sample-appl archive content to the ${OEBASE}/openembedded/recipes/ directory:
unzip /path/to/cm-t3730-linux/oe/extra/oe_sample_appl.zip -d ${OEBASE}/openembedded/recipes/
Setup the environment variables as shown in Building Angstrom Linux images chapter and build the sample application:
bitbake oe-sample-appl
Once the build is complete, copy the oe-sample-appl package to the working root filesystem on CM-T3730:
cp ${OEBASE}/build/arm/tmp/deploy/eglibc/ipk/armv7a/oe-sample-appl_0.0.1-r0.9_armv7a.ipk /path/to/cm-t3730/rootfs/home/root/
Install the package and run the application:
root@cm-t3730:~# opkg install /home/root/oe-sample-appl_0.0.1-r0.9_armv7a.ipk Installing oe-sample-appl (0.0.1-r0.9) to root... Configuring oe-sample-appl. root@cm-t3730:~# root@cm-t3730:~# oe_sample_appl Hello World! root@cm-t3730:~#
Building user application using OE Devshell
Although creating a new Bitbake recipe is quite simple task, sometimes avoiding it seems more preferred. However in this case various environment variables have to be set manually. For example: CC and PATH must be set to values suitable for cross-compiling. The OE devshell addon provides you with an interactive shell that has all the appropriate variables set for cross-compiling. To use the shell, build the devshell recipe:
bitbake devshell
Extract the application source code from the ${OEBASE}/openembedded/recipes/oe-sample-appl/oe-sample-appl_0.0.1.tar.gz archive:
tar xvf ${OEBASE}/openembedded/recipes/oe-sample-appl/oe-sample-appl_0.0.1.tar.gz -C /path/to/oe-sample-appl/source/
Start the devshell and change directory to the oe-sample-appl source code location and build the application:
${OEBASE}/build/arm/tmp/deploy/eglibc/addons/arm-angstrom-linux-gnueabi-angstrom-cm-t3730-devshell [OE::arm-angstrom-linux-gnueabi-angstrom-cm-t3730]:/path/to/oe$cd /path/to/oe-sample-appl/source/ [OE::arm-angstrom-linux-gnueabi-angstrom-cm-t3730]:/path/to/oe-sample-appl/source$make NOTE: make arm-angstrom-linux-gnueabi-gcc -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb --sysroot=/path/to/oe/build/arm/tmp/sysroots/armv7a-angstrom-linux-gnueabi -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb2 -c -o sample_appl.o oe_sample_appl.c arm-angstrom-linux-gnueabi-gcc -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb --sysroot=/path/to/oe/build/arm/tmp/sysroots/armv7a-angstrom-linux-gnueabi -o oe_sample_appl oe_sample_appl.o [OE::arm-angstrom-linux-gnueabi-angstrom-cm-t3730]:/path/to/oe-sample-appl/source$
Once the build is complete, copy the oe-sample-appl application to the working root filesystem on CM-T3730:
[OE::arm-angstrom-linux-gnueabi-angstrom-cm-t3730]:/path/to/oe-sample-appl/source$cp ./oe_sample_appl /path/to/cm-t3730/rootfs/home/root/
Run the application on CM-T3730:
root@cm-t3730:~# root@cm-t3730:~# ./oe_sample_appl Hello World! root@cm-t3730:~#
Please refer to the Devshell section in the OE User Manual pages for more details.
Digital Video SDK
The Digital Video SDK (DVSDK) version 4.03.00.06 includes Linux kernel modules, multimedia and digital signal processing (DSP) packages and ready to run DSP functionality demos. The DVSDK for CM-T3730 was built outside of OpenEmbedded framework and tested with Linux kernel version 3.0.38. If a custom Linux kernel must be used on CM-T3730, the DVSDK must be re-built in order to avoid compatibility issues.
Building DVSDK outside of OE
At each stage the Software Developers Guide can be refered for more details.
- Download the Digital Video SDK 4.03.00.06. Note that the download requires registration.
- Install the SDK on a Linux host machine. The DVSDK supports Ubuntu 10.04 LTS 32-bit host only.
./dvsdk_dm3730-evm_04_03_00_06_setuplinux
- Setup the DVSDK by executing the setup.sh script:
export DVSDK=/path/to/dvsdk cd ${DVSDK} ./setup.sh
- Manually edit the Rules.make file. Set the following environment variables to appropriate values:
- LINUXKERNEL_INSTALL_DIR=/path/to/cm-t3730/linux/kernel
- EXEC_DIR=/path/to/cm-t3730/rootfs
Please make sure the libx11-6 package is installed in the CM-T3730 root filesystem. |
- Apply CM-T3730 patches:
patch -p1 < /path/to/cm-t3730-linux/extra/dvsdk_04_03_00_06/dvsdk_04_03_00_06-cm-t3730-6.patch
- Build the DVSDK:
make clean make all
- Install the DVSDK into the CM-T3730 root filesystem:
sudo make install
Graphics SDK
The Graphics SDK version 4.05.00.03 includes the Linux graphics (SGX) drivers, OpenGLES1.1, OpenGLES2.0 and OpenVG demos for all TI platforms. The CM-T3730 Linux package contains pre-built graphics kernel modules and graphics demo applications that were built outside of OpenEmbedded framework. If a custom Linux kernel must be created, the graphics kernel modules must be re-built in order to avoid versioning issues.
Building Graphics SDK outside of OE
- Download the Graphics SDK 4.05.00.03.
- Install the SDK on a Linux host machine. Please refer to the installation guide for more details.
- Apply the patch from CM-T3730 Linux package:
cd /path/to/Graphics/SDK/4/05/00/03/ patch -p1 < /path/to/cm-t3730-linux/extra/Graphics_SDK_4_05_00_03/graphics_sdk_04_05_00_03-cm-t3730-6.patch
- Setup the environment variables by editing the Rules.make file. Set the following environment variables to appropriate values:
- HOME=/path/to/Graphics/SDK/4/05/00/03/home/area. Note: This path does not include the Graphics_SDK_4_05_00_03 directory.
- CSTOOL_DIR=/path/to/cross-compiler
- CSTOOL_PREFIX=<cross-compiler-name-prefix>
- KERNEL_INSTALL_DIR=/path/to/cm-t3730/linux/kernel
- TARGETFS_INSTALL_DIR=/path/to/cm-t3730/rootfs
Please refer to the build guide for more details.
- Build the Graphics SDK:
make OMAPES=5.x all
For building graphics kernel modules only, please run the following command:
make OMAPES=5.x all_km
- Install the Graphics SDK into the CM-T3730 rootfs:
sudo make OMAPES=5.x install
To install graphics kernel modules only:
sudo make OMAPES=5.x install_km
- Boot up the CM-T3730 and run the SDK configuration script:
root@cm-t3730:~# /etc/init.d/omap-demo
WL1271 Linux SDK
The CM-T3730 Linux package contains pre-built demo applications and scripts that demonstrate the initializing procedure and simple use cases of the Bluetooth module. The CM-T3730 Linux package Bluetooth support is based on the TI WL1271 SDK version 3.00.01.06-WL6.1.6.0.3.
This section describes the step-by-step build process of the TI WL1271 SDK.
Building WL1271 Linux SDK
- Download the WL1271 Linux SDK package.
- Install the SDK on a Linux host machine:
./V3.00.01.06-WL6.1.6.0.3-Linux-x86-Install
- Extract sources:
export WL1271_SDK=/path/to/wl1271/sdk cd $WL1271_SDK/software tar xf OMAP35x_WL1271_6.1.0.1.149.tar
- Apply the patch from CM-T3730 Linux package:
cd OMAP35x_WL1271_6.1.0.1.149 patch -p1 < /path/to/cm-t3730-linux/extra/WL1271_Linux_SDK_3_00_01_06/wl1271_linux_sdk-cm-t3730-4.patch
- Setup the environment variables by editing the set_wl1271_build_env.sh file. Set the following environment variables to appropriate values:
- ARM_TOOLCHAIN_PATH=/path/to/cross-compiler
- EXTRA_FILES=/path/to/cm-t3730-linux/extra/WL1271_Linux_SDK_3_00_01_06/extra_files
- TARGETFS_INSTALL_PATH=/path/to/cm-t3730/rootfs
- Make sure the CM-T3730 rootfs has Python header files installed (e.g. python-dev package).
- Build the Bluetooth module:
cd Sources ./WL1271Build.sh build bluetooth
- Install WL1271 Linux SDK into the CM-T3730 rootfs, e.g. into the /opt directory:
sudo mkdir -p /path/to/cm-t3730-linux/opt/ sudo cp -r image/WL1271_demo_01/ /path/to/cm-t3730/rootfs/opt/
- Boot up the CM-T3730 and run the SDK configuration script:
root@cm-t3730:~# cd /opt/WL1271_demo_01/ root@cm-t3730:/opt/WL1271_demo_01# ./install.sh