2010年10月27日にテキサスインスツルメンツ社より TI-Android-FroYo-Devkit-V2 がリリースされました。
TI-Android-FroYo-Devkit-V2 は、主に TI 製品向けの froyo の安定版です。
TI-Android-FroYo-Devkit-V2 をbc10用に変更の仕方ついて記載します。
(注):開発マシンのメモリが 1GB未満の場合 repo sync で prebuilt や sdk のfetch で
エラーが起こります。以下の手順は 1GB 以上のメモリで動作確認をしています。
TI-Android-FroYo-DevKit-V2_ReleaseNotes
TI-Android-FroYo-DevKit-V2_UserGuide
TI-Android-FroYo-Devkit-V2 は、OMAP35x EVM, AM35x EVM, AM37x EVM, Beagleboard Rev Cx, Beagleboard XM
向けの SDK パッケージです。
一般に、xmlファイルには各プロダクトコンポーネントの Commit ID / Baseline が記載されています。
Froyo も各プロダクトごとのリビジョンを含んだ TI-Android-Froyo-Devkit-V2.xml で管理されています。
TI-Android-Froyo-Devkit-V2 の取得方法を記載します。
TI_Android_DevKit 02_00_00 Product Download Page
から TI_Android_FroYo_DevKit-V2.tar.gz をダウンロードし解凍します。
$ tar xvfz TI_Android_FroYo_DevKit-V2.tar.gz
Android のソースファイルを取得するのためにTI-Android-FroYo-DevKit-V2.xml を使用します。
xml ファイルは TI_Android_FroYo_DevKit-V2/Android_Source_Manifest にあります。
(注):ファイル取得完了までに時間がかかることがあります。
また、作業には1GB以上のメモリを必要とします。開発マシンのメモリが 1GB未満の場合 repo sync で prebuilt や
sdk のfetch の際にエラーが起こります。
$ 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
bc10 用 TI-Android-Froyo-Devkit-V2 の patch を添付します。
bc10-devkitV2-patch.sh 内のANDROID_DIR 、SETUP_DIR、 PATCH_DIRは以下のように設定しています。
bc10-devkitV2-patch.sh の中の以下の環境変数をファイルの PATH に合うよう修正してください。
### 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
patch 適用後、 device/ti 以下に bc10 ディレクトリが作成されます。
$ 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
bc10 用設定ファイルを読み込みビルドします。
$ cd ~/TI_Android_FroYo_DevKit-V2/Android_Source_Manifest/rowboat-android/ $ source build/envsetup.sh $ lunch bc10-eng $ make
ビルドが終了したらビルドされた userland のバイナリを起動可能な配置に整えます。
userland を整えるスクリプト mkbc10-image.sh を使用します。
mkbc10-image.sh内の ANDROID_DIR は以下のように設定しています。
ファイルの PATH に合うよう修正してください。
### 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
実行後、/TI_Android_FroYo_DevKit-V2/Android_Source_Manifest/rowboat-android/out/target/product/bc10/ に
bc10-image ディレクトリが作成され、このディレクトリ内に android userland が配置されます。
boot に必要な x-loader、u-boot、kernel は Android のソースコードと共に配布されている
toolchain を使用してビルドを実行します。
ビルド時に以下の toolchain で cross compile が実行されるよう環境変数の設定をします。
PATH のディレクトリ位置は上記の設定に合わせています。
$ 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-
$ 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
bc10/froyo と同じ手順で TI Android SGX SDK を取得します。
(注):取得完了までに時間がかかることがあります。
bc10/froyoにてOMAP35x_Android_Graphics_SDK_3_01_00_03をインストール済みの場合は
同じファイルなので転用しても問題ありません、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
インストールディレクトリ位置を聞かれるので今回はデフォルトインストールディレクトリ
の${HOME}/OMAP35x_Android_Graphics_SDK_3_01_00_03 を指定します。
To download TI's Android SGX SDK
Rules.make のHOME、GRAPHICS_INSTALL_DIR、ANDROID_ROOT、CSTOOL_DIR、
KERNEL_INSTALL_DIRをそれぞれのファイルPATHに合うよう修正してください。
以下の Rules.make は上記設定にあわせています。
$ 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)/
RULE.make 変更完了後 make、make install を実行します。
$ make $ make OMAPES=3.x install
$ 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
$ cd ~/bc10 $ 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はOMAP BootROMの仕様とフォーマットが合っていないので、このままNAND Flashや
SDカードに書きこんでもブートローダとして動作させることができません。
この問題を解決するために、signGPというツールでx-load.binを加工する必要があります。
signGPの実行ファイルは以下の場所からダウンロードすることができます。
signGPからダウンロードしたsignGP
を以下のように実行します。
$ ./signGP x-loader.bin
boot.scr を以下のように作成します。
bc10/froyoでは video_mode の設定をしていましたが、
kernel 2.6.32 にはvideo_mode の代わりに omapfb.mode と
omapdss.def_disp を使用して表示デバイスの設定と選択をします。
以下の boot.scr を u-boot に初期値として埋め込んでいます。
setenv bootargs 'mem=256M androidboot.console=ttyS2 console=tty0 console=ttyS2,115200n8 root=/dev/mmcblk0p2 init=/init rootwait omapdss.def_disp=lcd'
DVI 出力の場合は omapdss.def_disp=dvi と設定し以下のboot.scr を作成してください。
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'
詳細については、kernel ソースファイル内の kernel/Documentation/arm/OMAP/DSS をご覧ください。
デフォルトの表示デバイスro.sf.lcd_density は 120 に設定しています。
DVI に出力の際はアイコン表示など画面に比べて小さく表示されている場合は任意で
ro.sf.lcd_densityを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
このPerformance_Apps の導入については必須ではありません。
Performance_Apps は 2D、3Dの描画やCPUベンチマークソフト群です。
ベンチマークを導入したい場合は以下の手順をご覧ください。
デフォルト設定の状態でインストールすると、LuncherからLuncher2への入れ替えと
Contacts、Mms、SpeechRecorder が削除されます。
TI_Android_DevKit 02_00_00 Product Download Page
上記WebページにあるPerformance_Apps.tar.gz をダウンロードします。
Performance_Apps は apk で提供されています。また標準で Luncher2 もコピーされ
Contactsが削除されるためHOME画面上のボタン表示が変化します。
(電話アイコンの位置にPerformance_Apps アイコンが表示されます。)
$ 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
install_rowboperf.sh を実行時にエラーが発生します、以下のように修正をします。
*** 13,18 **** --- 13,19 ---- echo "Error: Rootfs location `basename $1` does not exist" exit $E_BADARGS fi + cd - echo "Rootfs location is $1"
完了後Androidのユーザランドを指定してスクリプトを実行します。
$ ./install_rowboperf.sh ~/TI_Android_FroYo_DevKit-V2/Android_Source_Manifest/rowboat-android/out/target/product/bc10/bc10-image
install_rowboperf.sh で追加されるapk と削除される apk は以下のとおりです。
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
$ 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これで起動後のスクリーンロックを解除したあとは電源を切らない限り sleep しなくなります。