Software/Android

  • Android For OMAP3 with Gstreamer Integration edition

  • 使用した機材
    ・beagleboard:revision B5
    ・HostOSはubuntu8.04
    ・ミニAピンUSBケーブル
    ・セルフパワードUSBハブ
    ・USBキーボード
    ・USBether(型番:LUA2-TX、Pegasus/PegasusIIのドライバーで動作)

今回は以下のURLを参考にして Android のビルドと kernel のビルドを行いました。
Android For OMAP3 with Gstreamer Integration
http://labs.embinux.org/index.php/Android_For_OMAP3_with_Gstreamer_Integration

Android Source File 取得

以下の手順でrepo init, repo sync, makeを行います。

$mkdir omap3droid
$cd omap3droid
$repo init -u git://labs.embinux.org/repo/android/platform/omap3manifest.git
$repo sync

Android for beagleboard では Toolchain の入れ替えを行いましたが、
今回 repo sync で取得したソースの prebuilt/linux-x86/toolchain には既に
arm-eabi-4.4.0が入っています。

Android ビルド

$cd ~/omap3droid
$source build/envsetup.sh
$choosecombo 1 1 beagle eng 
$make

http://labs.embinux.org/index.php/Android_For_OMAP3_with_Gstreamer_Integration
では 「$choosecombo 1 1 omap3evm eng --> For omap3evm 」
という記述もありますが、今回のビルド対象はbeagleboardなので「 $choosecombo 1 1 beagle eng」の設定だけをします。
envsetup.shを見ると Toolchain は arm-eabi-4.4.0 を使うように設定されています。

これでビルドを行うと

target Strip: libskiagl (out/target/product/beagle/obj/lib/libskiagl.so)
target asm: libdvm <= dalvik/vm/arch/arm/CallOldABI.S
target asm: libdvm <= dalvik/vm/arch/arm/CallEABI.S
dalvik/vm/arch/arm/CallEABI.S: Assembler messages:
dalvik/vm/arch/arm/CallEABI.S:157: Warning: s suffix on comparison instruction is deprecated
make: *** `out/target/product/beagle/obj/SHARED_LIBRARIES/libdvm_intermediates/mterp/out/InterpAsm-armv7-a.o' に必要なターゲット   `dalvik/vm/mterp/out/InterpAsm-armv7-a.S' を make  するルールがありません.  中止.

このようなエラーがでました。
omap3droid/dalvik/vm/mterp/out/ には InterpAsm-armv7-a.S というファイルが存在しませんでした。
以下のURLをみると
http://labs.embinux.org/git/cgit.cgi/repo/android/platform/dalvik.git/commit/?id=16effb0ebdcff13e80b06ff99d054d67352291a7
omap3droid/dalvik/vm/mterpにrebuild.shと、config-armv7-aがあるのでrebuild.shを実行すると
InterpAsm-armv7-a.Sが作成されます。

$ cd omap3droid/dalvik/vm/mterp
$ ./rebuild.sh

ただ、私が repo sync した際には commit されているはずの rebuild.sh が古く config-armv7-a が存在しませんでしたので
rebuild.sh を編集、config-armv7-a を作成し rebuild.sh を実行して InterpAsm-armv7-a.S を作成しました。
このファイルが作成できたのを確認し ~/omap3droid/に戻りビルドの続きを行えば、ビルドは完了します。
作成されたファイルは out/target/product/beagleにあります。

また、今回のソースにはalsaが入っていますのでサウンドが鳴るかを試すために
ringtoneなどのsoundファイルを配置するようにします。

$ cd ~/omap3droid/frameworks/base/data/sounds
$ cp AudioPackage2.mk Android.mk
$ mm

out/target/product/beagle/system/media/audio以下にファイルが作成されます。

Android RootFile Systemの設定

ビルド完了後、root file systemを一箇所に集めます。

$ cd ~/omap3droid/out/target/product/beagle
$ mkdir RFS
$ cp -a root/* RFS
$ cp -a data/* RFS/data/
$ cp -a system/* RFS/system/ 
$ cd RFS
$ sudo chown -R root.root *
$ sudo chmod -R 777 data system 
  • init.rcの設定
    eth0を有効にするため
    basic network init に
ifup eth0
setprop net.dns1 208.67.222.222

を追加します。

  • default.propの設定
    default.propの末尾に
net.eth0.dns1=208.66.222.222
net.dns1=208.67.222.222

を追加します。

kernelビルド

デフォルトのビルドをそのまま行えば、omap3_beagle_android_defconfig の設定で kernel がビルドされます。
Android for beagleboardと同様に、この設定ではUSB-Ether(Pegasus/PegasusII)が入っていませんので
カーネルをビルドしなおします。
PATHを通した状態で、~/omap3droid/kernel/kernel/arch/arm/configs にある
omap3_beagle_android_defconfig を、~/omap3droid/kernel/.config にコピーしリネームします。

$ cd ~/omap3droid/kernel/kernel/arch/arm/configs
$ cp omap3_beagle_android_defconfig ~/omap3droid/kernel/.config
$ make menuconfig 

ここでUSB-etherのドライバを入れます。
今回もPegasus/PegasusIIのドライバーをいれます。

-> DeviceDrivers  -> Network device support (NETDEVICES[=y]) -> USB Network Adapters 

にありますので、チェックをいれます。
設定が完了したらビルドを行います。

$ make CROSS_COMPILE=arm-eabi- ARCH=arm uImage

これで ~/omap3droid/kernel/kernel/arch/arm/bootにuImageが作成されます。

SDイメージ作成

注:今回はPanasonic製の2GBのSDカードを使用しました。
SDカードをgpartedなどで

1st partision:FAT32 1.5GB
2nd partision:ext3  500MB

(サイズは適宜変更してください)
でフォーマットします。

  • 1st partision
    http://www.embinux.com/download_beagle.php
    からイメージをダウンロードし、MLO,u-boot.binの順で1st partisionにコピーします。
    またビルドしたuImageもコピーします。
  • 2nd partision
    ビルドしたAndroidをコピーします。
$ cd ~/omap3droid/out/target/product/beagle/RFS
$ cp -a * /media/{ext3-partision}

キー配置

デフォルトビルドのままのキー配置は

BACK:ESCキー
MENU:windowsキー
HOME:HOMEキー

です。

beagleboard Android 起動

イメージを作成したSDカードをbeagleboradに挿入し電源を入れます。
「OMAP3 beagleboard.org #」このプロンプトが表示されるので以下のコマンドを打ちます。

OMAP3 beagleboard.org #setenv bootargs console=ttyS2,115200n8 noinitrd root=/dev/mmcblk0p2 video=omapfb.mode=dvi:1280x720MR-24@50 init=/init rootfstype=ext3 rw rootdelay=1 nohz=off androidboot.console=ttyS2 
OMAP3 beagleboard.org # mmcinit
OMAP3 beagleboard.org # fatload mmc 0 0x80300000 uImage
OMAP3 beagleboard.org # bootm 0x80300000

これで、Androidまで起動します。
今回のイメージは device_provisioned がされているイメージです。
起動時にロック画面が表示されますので、MENUボタンを押すとHOME画面が表示されます。

  • 音のテスト 「設定」から「着信音」を選択すると様々な着信音があります。
  • 画面のロック 「設定」-> 「ディスプレイ」->「消灯時間」が標準のままですと約1分でロック画面になります。
    ロック画面になったら MENU を配置しているキーを押すと元の画面に戻ります。

制限事項

  • ネットワーク
    usb-etherを接続した際にeth0がDOWNもしくはDHCPが取れていないことがあります。
    その場合は以下のコマンドを入力してみてください。
# netcfg eth0 up
# netcfg eth0 dhcp
  • アプリケーション
    一部のアプリケーションが正しく動作していません。
  • Gstreamer
    タイトルがGstreamer Integrationですが、
    今回は Android のビルドと kernel のビルドが主目的なため
    まだ Gstreamer を試してみていません。

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