[[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のビルド環境手順は以下のサイトを参照ください。~
http://source.android.com/download ~

* Android Sorce File 取得 [#b1c50257]
* Android Source File 取得 [#b1c50257]
以下の手順で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 ビルド [#ma18da1f]
 $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の設定 [#p29da315]
ビルド完了後、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ビルド [#t45c08be]
デフォルトのビルドをそのまま行えば、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イメージ作成 [#h841f140]
注:今回は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}

* キー配置 [#lf3b2086]
デフォルトビルドのままのキー配置は ~
 BACK:ESCキー
 MENU:windowsキー
 HOME:HOMEキー
です。~

* beagleboard Android 起動 [#da45fbc3]
イメージを作成した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 を配置しているキーを押すと元の画面に戻ります。~

* 制限事項 [#r8050368]
- ネットワーク ~
usb-etherを接続した際にeth0がDOWNもしくはDHCPが取れていないことがあります。~
その場合は以下のコマンドを入力してみてください。~

 # netcfg eth0 up
 # netcfg eth0 dhcp

- アプリケーション ~
一部のアプリケーションが正しく動作していません。~

- Gstreamer ~
タイトルがGstreamer Integrationですが、~
今回は Android のビルドと kernel のビルドが主目的なため~
まだ Gstreamer を試してみていません。~

BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。
トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS