[[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'''.~
(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>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~
'''/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


Front page   Edit Diff Backup Upload Copy Rename Reload   New List of pages Search Recent changes   RSS of recent changes