ブログネタ
Android に参加中!
Gingerbread でも TI's Android SGX SDK を使用出来るようにしてみた。
実際に BeagleBoard で Gingerbread を使う場合、これを使用出来ないと使い物にならない。
現状 Gingerbread で TI's Android SGX SDK を使用する場合、課題がある。
初めに試した時は以下のようになった。
beagleboard-gingerbread-004beagleboard-gingerbread-005beagleboard-gingerbread-006
上にあるはずの時計や通知が表示されるバーが消えてしまう。
3つ目の画面は、Setting アプリを起動した状態。真っ黒になる。


上記の状況から surfaceflinger を確認したところ、NO_RGBX_8888 の定義の有無で処理を分けていた。
通常は、NO_RGBX_8888 は無効。これを有効にしたところ、表示が正常になった。
beagleboard-gingerbread-001beagleboard-gingerbread-002beagleboard-gingerbread-003
正しい対処はバイナリ提供されてるライブラリを Gingerbread 向けに修正?
もしそうなら、TI が Gingerbread 向けのものを提供してくれるまでこれで乗り切るしかない。


BeagleBoard での環境作成手順

ソースコード取得
$ mkdir -p /home/android/gingerbread
$ cd /home/android/gingerbread
$ git clone git://github.com/sola-dolphin1/OHA-Android-2.3_r1.0.git
$ cd OHA-Android-2.3_r1.0
$ export ANDROID=$PWD

kernel のビルド
$ cd $ANDROID/kernel/beagleboard
$ make ARCH=arm CROSS_COMPILE=$ANDROID/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- sola_omap3_beagle_android_defconfig
$ make ARCH=arm CROSS_COMPILE=$ANDROID/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- uImage -j8

Android のビルド
$ cd $ANDROID
$ source build/envsetup.sh
$ lunch beagleboard-eng
$ time make -j8

rootfs の作成
$ cd $ANDROID/out/target/product/beagleboard/
$ mkdir rootfs
$ sudo cp -a ./root/* ./rootfs/
$ sudo cp -a ./system/* ./rootfs/system/

TI's Android SGX SDK を組み込む
$ cd $ANDROID/out/target/product/beagleboard/
$ wget http://software-dl.ti.com/dsps/dsps_public_sw/sdo_tii/TI_Android_DevKit/02_00_00/exports/OMAP35x_Android_SGX_SDK.tar.gz
$ tar zxvf OMAP35x_Android_SGX_SDK.tar.gz
$ cd OMAP35x_Android_SGX_SDK
$ ./OMAP35x_Android_Graphics_SDK_setuplinux_3_01_00_03.bin
インストール先はどこでも良い。
ここでは、OMAP35x_Android_Graphics_SDK_setuplinux_3_01_00_03.bin を実行したディレクトリを指定する。
インストール完了後、Rules.make ( $ANDROID/out/target/product/beagleboard/OMAP35x_Android_SGX_SDK/Rules.make ) を編集。
※変更するところだけ抜粋
HOME=$(ANDROID)
GRAPHICS_INSTALL_DIR=$(ANDROID)/out/target/product/beagleboard/OMAP35x_Android_SGX_SDK
ANDROID_ROOT=$(ANDROID)/out/target/product/beagleboard/rootfs
CSTOOL_DIR=$(ANDROID)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/
KERNEL_INSTALL_DIR=$(ANDROID)/kernel/beagleboard

ビルドとインストール
$ cd $ANDROID/out/target/product/beagleboard/OMAP35x_Android_SGX_SDK
$ make
$ make install OMAPES=3.x

init.rc の編集
$ emacs $ANDROID/out/target/product/beagleboard/rootfs/init.rc
on boot のところに、
service pvr /system/bin/sgx/rc.pvr start
を追記する。(github の環境は既に追記済み)
GPU を有効にしない場合は、これをコメントアウトする。

rootfs を SD にコピー
$ cd $ANDROID/out/target/product/beagleboard/
$ sudo chmod 777 -R ./rootfs
$ sudo cp -a ./rootfs/* /SDCARD/