- The added line is THIS COLOR.
- The deleted line is THIS COLOR.
[[bc10]]
-Contents
#Contents
* Background [#g3af6548]
>
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>http://processors.wiki.ti.com/index.php/TI-Android-FroYo-DevKit-V2_ReleaseNotes]]~
[[TI-Android-FroYo-DevKit-V2_UserGuide>http://processors.wiki.ti.com/index.php/TI-Android-FroYo-DevKit-V2_UserGuide]]~
** Characteristics of TI-Android-FroYo-DevKit-V2 [#p5857f86]
>
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 [#md03ea68]
>
Download '''TI-Android-Froyo-Devkit-V2.tar.gz''' and extract the file.~
[[TI_Android_DevKit 02_00_00 Product Download Page>http://software-dl.ti.com/dsps/dsps_public_sw/sdo_tii/TI_Android_DevKit/02_00_00/index_FDS.html]]~
$ 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 [#rbf017af]
>
This is a patch of 'TI-Android-FroYo-DevKit-V2, which is specifically designed for bc10.~
[[devkitv2-patches-for-bc10.tar.gz>http://labs.beatcraft.com/ja/index.php?plugin=attach&refer=bc10%2FTI-Android-FroYo-Devkit-V2&openfile=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 [#y2cc7472]
>
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 [#c253977a]
>
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 [#r4436adc]
>
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 [#p30efc9d]
>
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 [#e43e0038]
>
Applying the same method as [bc10/froyo] used, obtain '''TI Android 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'''.~
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>http://code.google.com/p/rowboat/wiki/Source#To_download_TI%27s_Android_SGX_SDK]]
*** Modify RULE.make [#h83d2ff9]
>
'''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 [#v6c79115]
>
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 [#ac449697]
>
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>http://beagleboard.googlecode.com/files/signGP]], and execute as shown below.
$ signGP x-load.bin
** Modify bc10 boot.scr [#mdfae169]
>
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 [#f44aa5a2]
>
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 [#e7f42588]
>
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>http://software-dl.ti.com/dsps/dsps_public_sw/sdo_tii/TI_Android_DevKit/02_00_00/index_FDS.html]]~
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 [#w1f85d3e]
>
- 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 [#z4a5b658]
>
- 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
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> .quit
As 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.~
* Revision History [#nd759156]
- 2010/12/24 This article is initially uploaded