[[bc10]] ~ #contents ~ * bc10/TI-Android-FroYo-Devkit-V2 [#pd6dc9a3] ~ 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>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]] ~ ** 主な特徴 [#g21c8b3e] 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 で管理されています。~ ** ファイルの取得 [#ka26666a] TI-Android-Froyo-Devkit-V2 の取得方法を記載します。~ [[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]] ~ から 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 用 DevKit V2 patch [#n52377d4] bc10 用 TI-Android-Froyo-Devkit-V2 の patch を添付します。~ #ref(devkitv2-patches-for-bc10.tar.gz);~ 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 ** Android のビルド [#df16b7a8] bc10 用設定ファイルを読み込みビルドします。~ $ cd ~/TI_Android_FroYo_DevKit-V2/Android_Source_Manifest/rowboat-android/ $ source build/envsetup.sh $ lunch bc10-eng $ make ** イメージの作成 [#lcb0a86c] ビルドが終了したらビルドされた 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 が配置されます。~ ** 環境変数の設定 [#qce4f67a] 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- ** kernel のビルド [#w755860b] $ 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 ** SGX SDK のビルド [#g555a2b6] [[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>http://code.google.com/p/rowboat/wiki/Source#To_download_TI%27s_Android_SGX_SDK]] ~ ~ *** Rules.make の変更 [#ke48d729] 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 ** bc10 u-boot ビルド [#y508c77b] $ 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 ** bc10 x-loader ビルド [#c697b16a] $ 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はOMAP BootROMの仕様とフォーマットが合っていないので、このままNAND Flashや~ SDカードに書きこんでもブートローダとして動作させることができません。~ この問題を解決するために、signGPというツールでx-load.binを加工する必要があります。~ signGPの実行ファイルは以下の場所からダウンロードすることができます。~ [[signGP>http://beagleboard.googlecode.com/files/signGP]]からダウンロードしたsignGP を以下のように実行します。 ~ $ signGP x-load.bin ** bc10 boot.scr 作成 [#j167bcc5] ** bc10 boot.scr について [#j167bcc5] 2010/12/20 ~ u-boot-bc10 のアップデートにて、有機ELを表示デバイスの初期値とする ~ boot.scr を埋め込むように修正しています。~ ~ %%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 をご覧ください。~ *** Android 起動時の build.prop [#l51b1e38] デフォルトの表示デバイス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 の導入について [#pa0d4ada] このPerformance_Apps の導入については必須ではありません。~ Performance_Apps は 2D、3Dの描画やCPUベンチマークソフト群です。~ ベンチマークを導入したい場合は以下の手順をご覧ください。~ デフォルト設定の状態でインストールすると、LuncherからLuncher2への入れ替えと~ Contacts、Mms、SpeechRecorder が削除されます。~ [[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]] ~ 上記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 ** CameraPreview Overlayについて [#m21127b7] - カメラのプレビュー表示時に、ハードウェアオーバレイを使用するように変更しました。 - 仕様・制限は以下のとおりです。 -- V4L2カメラで動作します。 -- カメラ解像度の設定は640*480固定です。 -- 表示領域に合わせて、画面の拡大・縮小が可能です。拡大・縮小はハードウェアでおこないます。 -- アプリケーション作成時は、Cameraに登録するSurfaceViewのサイズとPreviewのサイズを同じものにしてください。 -- この変更点の動作確認は Logicool Orbit AF と本体内蔵のカメラで行っていますが、~ Linux UVC に対応した USBカメラであればどれでも動作可能です。 ** 制限事項 [#r5ff3992] - 現在、バックライト消灯時間に設定した時間を越えて sleep に入ってしまうと~ 「ホーム」や「戻る」のハードウェアキーを押しても sleep から復帰できません。~ これを避けるためには、一度起動したあと設定データベースに書き込まれた sleep までの時間を~ 直接書き換えてしまいます。~ 起動用SDカードを作業用PCにマウントし(/media/EXT3 に第2パーティションがマウントされた前提で)~ $ 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 しなくなります。