bc10


bc10/TI-Android-FroYo-Devkit-V2


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 用 DevKit V2 patch

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

Android のビルド

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-

kernel のビルド

$ 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 のビルド

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 の変更

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 ビルド

$ 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 ビルド

$ 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からダウンロードしたsignGP を以下のように実行します。

$ signGP x-load.bin

bc10 boot.scr について

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

デフォルトの表示デバイス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 の導入については必須ではありません。
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

CameraPreview Overlayについて

  • カメラのプレビュー表示時に、ハードウェアオーバレイを使用するように変更しました。
  • 仕様・制限は以下のとおりです。
    • V4L2カメラで動作します。
    • カメラ解像度の設定は640*480固定です。
    • 表示領域に合わせて、画面の拡大・縮小が可能です。拡大・縮小はハードウェアでおこないます。
    • アプリケーション作成時は、Cameraに登録するSurfaceViewのサイズとPreviewのサイズを同じものにしてください。
    • この変更点の動作確認は Logicool Orbit AF と本体内蔵のカメラで行っていますが、
      Linux UVC に対応した USBカメラであればどれでも動作可能です。

制限事項

  • 現在、バックライト消灯時間に設定した時間を越えて 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 しなくなります。

添付ファイル: filedevkitv2-patches-for-bc10.tar.gz 1478件 [詳細]

BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。
トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2011-01-12 (水) 11:20:55 (4847d)