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
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.
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.gzTo 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
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}/patchesAfter 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
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
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.shAfter 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.
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-
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
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.binAs 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
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
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
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 $ makex-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
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
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
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.shAn 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-imageDue 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
- 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.
- Once pass the time to turn off the back light and shift into sleep mode, bc10 will NOT return from the sleep mode even though
HOME or RETURN buttons are pushed. To avoid this incident, after the booting up bc10, rewrite the information of sleeping mode,
which is located at the configuration data base. Change the duration of time before bc10 actually goes into sleep mode. Mount a
bootable SD card on the working environment of the PC. This is assuming that the second partition of the SD card is mounted at /media/EXT3.
$ cd /media/EXT3/data/data/com.android.providers.settings/databases/ $ sudo sqlite3 settings.db sqlite> update system set value="-1" where name="screen_off_timeout"; sqlite> .quitAs completing this process, bc10 is needed to be booted. After screen lock is released, bc10 never goes to sleep mode unless turning
off its power.