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