bc10
Background †
On October 27th, 2010, Texas Instruments released “TI Aandroid FroYo DevKit V2," (hereafter DevKit V2). Based
upon FroYo (Android 2.2), DevKit V2 is modified for specifically TI chips and devices, including BeagleBoard, and
this DevKit V2 is considered as a stable version of Android for TI chips and devices. Since bc10 is a clone of
BeagleBoard, it works with DevKit V2 with few modifications. This article explains how to alter DevKit V2 for bc10.
(Caution): If the developing machine has less than 1GB of memory, errors will occur as executing prebuilt at repo sync
or fetch at sdk. Following instructions are required at least 1GB memory for replicating process.
TI-Android-FroYo-DevKit-V2_ReleaseNotes
TI-Android-FroYo-DevKit-V2_UserGuide
Characteristics of TI-Android-FroYo-DevKit-V2 †
TI-Android-FroYo-Devkit-V2 is a SDK package for OMAP35x EVM, AM35x EVM, AM37x EVM, BeagleBoard Rev Cx, and
BeagleBoard XM.
The XML file records Commit ID / Baseline of each product component. Froyo is also managed by TI-Android-Froyo-Devkit-V2.xml,
which contains the revision history of each product.
Obtaining file †
Download TI-Android-Froyo-Devkit-V2.tar.gz and extract the file.
TI_Android_DevKit 02_00_00 Product Download Page
$ tar xvfz TI_Android_FroYo_DevKit-V2.tar.gz
To obtain the source file, TI-Android-FroYo-DevKit-V2.xml is used. The xml file is located at TI_Android_FroYo_DevKIt-2/Android_Source_Manifest.
(Caution): It takes a long time to download the file. The developing machine is required at least 1GB of memory. If the developing
machine has less than 1GB of memory, errors will occur at prebuilt of repo sync or fetch of sdk.
$ cd ~/TI_Android_FroYo_DevKit-V2/Android_Source_Manifest/
$ mkdir rowboat-android
$ cp TI-Android-FroYo-DevKit-V2.xml rowboat-android
$ cd rowboat-android
$ repo init -u git://gitorious.org/rowboat/manifest.git -m TI-Android-FroYo-DevKit-V2.xml
$ repo sync
DevKit V2 patch for bc10 †
This is a patch of 'TI-Android-FroYo-DevKit-V2, which is specifically designed for bc10.
devkitv2-patches-for-bc10.tar.gz
ANDROID_DIR, SETUP_DIR, and PATCH_DIR, which are defined in bc10-devkitV2-patch.sh, are configured as shown below.
The environmental variables listed in bc10-devkitV2-patch.sh should be arranged for being matched with the PATHs.
### Settings
#ANDROID_DIR=${HOME}/TI_Android_FroYo_DevKit-V2/Android_Source_Manifest/rowboat-android
ANDROID_DIR=${HOME}/bc10-Devkit2-Build-Dir-test2
SETUP_DIR=${HOME}/devkitv2-patches-for-bc10
PATCH_DIR=${SETUP_DIR}/patches
After applying the patch, a directory for bc10 is created under device/ti .
$ tar xvfz devkitv2-patches-for-bc10.tar.gz
$ cd ~/devkitv2-patches-for-bc10
$ ./bc10-devkitV2-patch.sh
$ ls ~/TI_Android_FroYo_DevKit-V2/Android_Source_Manifest/rowboat-android/device/ti
am3517evm bc10 beagleboard igepv2 omap3evm
Build Android †
Read into the configuration file for bc10 and build it.
$ cd ~/TI_Android_FroYo_DevKit-V2/Android_Source_Manifest/rowboat-android/
$ source build/envsetup.sh
$ lunch bc10-eng
$ make
Creating Image †
As the building process is completed, the binary of userland is relocated to the place, in which userland can boot. To move
userland, apply mkbc10-image.sh. ANDROID_DIR defined in mkbc10-image.sh is configured as below. Make sure that it is
matched with PATH of the file.
### Settings
#ANDROID_DIR=${HOME}/bc10
ANDROID_DIR=${HOME}/bc10-Devkit2-Build-Dir-test2
#ANDROID_DIR=${HOME}/TI_Android_FroYo_DevKit-V2/Android_Source_Manifest/rowboat-android
###
$ cd ~/devkitv2-patches-for-bc10
$ ./mkbc10-image.sh
After executing the commands, bc10-image directory is created under this directory of
/TI_Android_FroYo_DevKit-V2/Android_Source_Manifest/rowboat-android/out/target/product/bc10/.
android userland is placed under bc10-image directory.
Configuration of environment variable †
The requirements for booting, such as x-loader, u-boot, and kernel, are built with toolchain. toolchain is
distributed with the source code of Android. As building these requirements, set up toolchain for cross compile.
$ export PATH=/home/beat/TI_Android_FroYo_DevKit-V2/Android_Source_Manifest/rowboat-android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin:${PATH}
$ export ARCH=arm
$ export CROSS_COMPILE=arm-eabi-
Build kernel †
To build the kernel, please execute the command lines shown below.
$ cd ~
$ git clone git://gitorious.org/~bc-dev/rowboat/bc10-rowboat-kernel.git bc10-rowboat-kernel
$ cd bc10-rowboat-kernel
$ git checkout -t -b bc10-2.6.32-build origin/bc10-2.6.32-build
$ make omap3_bc10_defconfig
$ make uImage
$ make modules
Build SGX SDK †
Applying the same method as bc10/froyo used, obtain TI Android SGX SDK.
(Caution): It really takes time to download whole SGX SDK. Having already obtained OMAP35x_Android_Graphics_SDK_3_01_00_03
for bc10/froyo, please use this SGX SDK. Be careful with the location of the directory of Rules.make.
$ git clone git://gitorious.org/rowboat/ti_android_sgx_sdk.git
$ cd ti_android_sgx_sdk/
$ ./OMAP35x_Android_Graphics_SDK_setuplinux_3_01_00_03.bin
As the install directory is specifically asked, please use the default install directory, ${HOME}/OMAP35x_Android_Graphics_SDK_3_01_00_03.
To download TI's Android SGX SDK
Modify RULE.make †
RULE.make is modified. HOME, GRAPHICS_INSTALL_DIR, ANDROID_ROOT, CSTOOL_DIR, and KERNEL_INSTALL_DIR of
RULE.make are needed to be consistent with own file PATHs. The details are shown below.
$ cd ~/OMAP35x_Android_Graphics_SDK_3_01_00_03
$ vi Rules.make
#Rules.make
PLATFORM=LinuxOMAP3
################# FIELDS MODIFIABLE BY THE USER #############################
##
#set home area HOME (relative location for all SDK operations)
HOME=/home/beat
#Current Directory where Graphics SDK is installed
GRAPHICS_INSTALL_DIR=$(HOME)/OMAP35x_Android_Graphics_SDK_3_01_00_03
#Android Specific
#Path of Android Root FS
ANDROID_ROOT=$(HOME)/TI_Android_FroYo_DevKit-V2/Android_Source_Manifest/rowboat-android/out/target/product/bc10/bc10-image
#set toolchain root path for arm-eabi
CSTOOL_DIR=$(HOME)/TI_Android_FroYo_DevKit-V2/Android_Source_Manifest/rowboat-android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/
CSTOOL_PREFIX=arm-eabi-
CSTOOL_PATH=$(CSTOOL_DIR)/bin
CSTOOL_LIBSTDC++_PATH=$(CSTOOL_DIR)/arm-none-linux-gnueabi/libc/usr/lib
#set the kernel installation path
#KERNEL_INSTALL_DIR=$(HOME)/TI_Android_FroYo_DevKit-V2/Android_Source_Manifest/rowboat-android/kernel
KERNEL_INSTALL_DIR=$(HOME)/bc10-rowboat-kernel
TARGETFS_INSTALL_DIR=$(ANDROID_ROOT)
GFX_TARGETFS_KERMOD_PATH=$(TARGETFS_INSTALL_DIR)/lib/modules/2.6.32
#Android
ANDROID_DISCIMAGE=$(TARGETFS_INSTALL_DIR)/
After RULE.make is completed, execute make, and make install, successively
$ make
$ make OMAPES=3.x install
Build bc10 u-boot †
To build u-boot, please follow the instructions below.
$ cd ~/
$ git clone git://gitorious.org/bc10/u-boot-bc10.git u-boot-bc10
$ cd u-boot-bc10
$ git checkout -t -b build origin/build
$ make omap3_bc10_config
$ make
Build bc10 x-loader †
To build x-loader, apply the command lines shown below
$ cd ~/
$ git clone git://gitorious.org/~bc-dev/x-load-omap3/x-load-bc10.git x-load-bc10
$ cd x-load-bc10
$ git checkout -t -b bc10 origin/bc10
$ make omap3530bc10_config
$ make
x-load.bin does not meet the specifications and format of OMAP BootROM. Since they not compatible each other, if
x-load.bin is written into NAND Flash or SD card as it is, x-load.bin does not boot bc10. To solve this issue, apply
signGP to modify x-load.bin.
signGP can be downloaded from here, and execute as shown below.
$ signGP x-load.bin
Modify bc10 boot.scr †
Update u-boot-bc10. Then, alter boot.scr with the initial device value of AMOLED.
In bc10/froyo, the configuration of video_mode is a requirement and necessity. kernel 2.6.32 can use omapfb.mode
and omapdss.def_disp instead of video_mode for the configuration and selection of display devices. boot.scr is treated
as the initial value of u-boot.
setenv bootargs 'mem=256M androidboot.console=ttyS2 console=tty0
console=ttyS2,115200n8 root=/dev/mmcblk0p2 init=/init rootwait omapdss.def_disp=lcd'
For DVI output, configure as omapdss.def_disp = dvi, and create boot.scr show as below.
setenv bootargs 'mem=256M androidboot.console=ttyS2 console=tty0
console=ttyS2,115200n8 root=/dev/mmcblk0p2 init=/init rootwait
omapfb.mode=dvi:1024x768MR-24@60 omapdss.def_disp=dvi'
For the details, please look at the files, which are located under kernel/Documentation/arm/OMAP/DSS
Setting Up Build.prop as booting Android †
As the default setting, ro.sf.lcd_density for display devices is set to 120. On DVI output, the icons are displayed smaller
than on the other devices. Please make adjustment if the icons on the DVI output is significant smaller than on the other
devices. If this happens, change the configuration of ro.sf.lcd_density to 160.
$ cd ~/TI_Android_FroYo_DevKit-V2/Android_Source_Manifest/rowboat-android/out/target/product/bc10/bc10-image/system
$ vi build.prop
....
....
ro.sf.lcd_density=120
About installation of Performance_Apps †
The Performance_Apps is a not a requirement. This is a set of CPU benchmark software for 2D and 3D drawings. To add
the benchmark software, please follows the instructions shown below. To install benchmark software on the default setting,
Luncher is replaced with Luncher2, and Contacts, Mms, and SpeechRecoder are deleted.
TI_Android_DevKit 02_00_00 Product Download Page
Download Performance_Apps.tar.gz from the link shown above.
Performance_Apps is in .apk (Android Package file). By the standard installation, since Lunch 2 will be copied, and Contact is
removed, the icons of HOME screen will be changed. (Performance_Apps icon appears on the location of the telephone icon.)
$ wget http://software-dl.ti.com/dsps/dsps_public_sw/sdo_tii/TI_Android_DevKit/02_00_00/exports/Performance_Apps.tar.gz
$ tar xvfz Performance_Apps.tar.gz
$ cd Performance_Apps
$ vi install_rowboperf.sh
An Error occurs as executing Install_rowboperf.sh. To prevent the error, the script is modified as shown below.
*** 13,18 ****
--- 13,19 ----
echo "Error: Rootfs location `basename $1` does not exist"
exit $E_BADARGS
fi
+ cd -
echo "Rootfs location is $1"
After the modification is completed, point out the userland of Android and execute the script.
$ ./install_rowboperf.sh ~/TI_Android_FroYo_DevKit-V2/Android_Source_Manifest/rowboat-android/out/target/product/bc10/bc10-image
Due to execute Install_rowboperf.sh, these apks shown below are added and deleted.
cp -r ./0xbench/Benchmark-release.apk $1/system/app/
cp -r ./0xbench/armeabi/* $1/system/bin/
cp ./3D/OGLES* $1/system/app/
cp ./3D/lib* $1/system/lib/
cp ./StorageIO/StorageIO.apk $1/system/app/
cp ./rowboatBench/rowboat.benchmark.runner-debug.apk $1/system/app/
cp -r ./RowboPERF/bin/armeabi-v7a/* $1/system/bin/
cp ./RowboPERF/RowboPERF.apk $1/system/app/
cp ./StorageIO/StorageIO.apk $1/system/app/
cp ./Launcher2/Launcher2.apk $1/system/app/
rm $1/system/app/Contacts.apk
rm $1/system/app/Mms.apk
rm $1/system/app/SpeechRecorder.apk
About CameraPreview Overlay †
- As displaying the preview of camera,
- Specifications and limitations are shown below.
- Work with V4L2 camera
- The resolution of the camera is configured as 640x480, this is fixed.
- According to the display area, it is possible to make the screen larger or smaller. The enlargement or reduction of screen
is done by hardware.
- To create an application, the size of Surfaceview, which manages Camera and size of Preview must be identical.
- Event though this modification test is only performed on Logcool Orbit AF and bc10's embedded camera, this will work
on USB camera, which is compatible with Linux UVC.
Limitations †
Revision History †
- 2010/12/24 This article is initially uploaded