[[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


Front page   New List of pages Search Recent changes   RSS of recent changes