[[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 を試してみていません。~