bc9-android-sdk
Vmware †bc9-android-sdk でのVmwareイメージの設定を記述します。
android (Android Open Source project) †repo のインストールなど android の build に必要な setup の手順は下記 URL に従ってください。 今回使用する branch は android-sdk-1.5_r3 です。 初期化 †/home/beat/ に android-sdk-1.5_r3 ディレクトリを作成しrepoの初期化します。 $ cd ~/ $ mkdir android-sdk-1.5_r3 $ repo init -u git://android.git.kernel.org/platform/manifest.git -b android-sdk-1.5_r3 取得内容の追加(local_manifest) †repo init 後、.repo に以下の内容で local_manifest.xml を作成します。 <?xml version="1.0" encoding="UTF-8"?> <manifest> <project path="kernel" name="kernel/common" revision="refs/heads/android-2.6.29"/> <project path="external/alsa-lib" name="platform/external/alsa-lib"/> <project path="hardware/alsa_sound" name="platform/hardware/alsa_sound"/> </manifest> ソースの取得 †上記設定が終了したら、repo syncをしソースを取得します。 $ repo sync ソースファイル修正 †repo sync 後、取得したソースに以下の修正を追加します。
--- Android.mk.orig 2009-07-09 07:05:41.000000000 -0700 +++ Android.mk 2009-07-09 07:05:48.000000000 -0700 @@ -55,7 +55,7 @@ -fPIC -DPIC -D_POSIX_SOURCE \ -DALSA_CONFIG_DIR=\"/system/usr/share/alsa\" \ -DALSA_PLUGIN_DIR=\"/system/usr/lib/alsa-lib\" \ - -DALSA_DEVICE_DIRECTORY=\"/dev/snd/\" + -DALSA_DEVICE_DIRECTORY=\"/dev/\" LOCAL_SRC_FILES := $(sort $(call all-c-files-under, src))
# config.mk # # Product-specific compile-time definitions. # # The generic product target doesn't have any hardware-specific pieces. TARGET_NO_BOOTLOADER := true TARGET_NO_KERNEL := true TARGET_NO_RADIOIMAGE := true HAVE_HTC_AUDIO_DRIVER := true BOARD_USES_ALSA_AUDIO := true #BOARD_USES_GENERIC_AUDIO := true ※コメントアウト
$ cd android-sdk-1.5_r3 $ patch -p1 < ../dummy-battery.patch ビルド †ここまでの調整が終わったら build します。 $ cd android-sdk-1.5_r3 $ make OpenWnn †上記の build では OpenWnn は build されないので、source に調整を加え追加 build を行います。 $ cd android-sdk-1.5_r3/packages/inputmethods/OpenWnn $ git checkout korg/cupcake-release branch 切り替え後、landscape 表示時の software keyboard を有効にします。 $ vim android-sdk-1.5_r3/packages/inputmethods/OpenWnn/src/jp/co/omronsoft/openwnn/JAJP/DefaultSoftKeyboardJAJP.java 843行目 Create the keyboard for landscape mode 以下、
$ cd android-sdk-1.5_r3/build/ $ source envsetup.sh $ cd android-sdk-1.5_r3/packages/inputmethods/OpenWnn $ mm これで、OpenWnn.apk と、 android-sdk-1.5r3/out/target/product/generic/system/lib/ 以下に OpenWnnのlibファイル群がビルドされます。 oggファイル †android-sdk-1.5_r3/frameworks/base/data/sounds $ cp AudioPackage2.mk Android.mk $ cd android-sdk-1.5_r3/build/ $ source envsetup.sh $ cd android-sdk-1.5_r3/frameworks/base/data/sounds $ mm これで android-sdk-1.5_r3/out/target/product/generic/system/media/audio/以下に音声ファイルがコピーされます。 rootfilesystemの作成 †androidのビルドが正常に完了したら、android-rootというディレクトリを作成し以下に $ cd ~/ $ mkdir android-root $ cp -a ~/android-sdk-1.5_r3/out/target/product/generic/root/* ~/android-root/ $ cp -a ~/android-sdk-1.5_r3/out/target/product/generic/system/* ~/android-root/system/ init.rcの編集 †android-root/init.rc に以下を追加します。 chmod 0666 /dev/bc9_leds setprop alsa.mixer.playback.master Master setprop alsa.mixer.capture.master Capture setprop alsa.mixer.playback.earpiece Master setprop alsa.mixer.capture.earpiece Capture setprop alsa.mixer.playback.headset Master setprop alsa.mixer.playback.speaker Master chmod 0777 /dev/pcmC0D0c chmod 0777 /dev/pcmC0D0p chmod 0777 /dev/controlC0 chmod 0777 /dev/timer chown root audio /dev/controlC chown root audio /dev/pcmC0D0c chown root audio /dev/pcmC0D0p chown root audio /dev/timer on boot # basic network init また、yaffs2 でmountしている箇所をコメントアウトします。 default.propの編集 †android-root/default.prop の末尾に以下を追加します。 net.eth0.dns1=208.66.222.222 net.dns1=208.67.222.222 次に、音を鳴らすための設定をします。 asound.stateの作成 †android-root/system/etc/ に asound.state と asound.conf を作成します。 state.Gumstix { control.1 { comment.access 'read write' comment.type INTEGER comment.count 1 comment.range '0 - 4' iface MIXER name 'Tone Control - Bass' value 0 } control.2 { comment.access 'read write' comment.type INTEGER comment.count 1 comment.range '0 - 2' iface MIXER name 'Tone Control - Treble' value 0 } control.3 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name 'Headphone Playback Switch' value true } control.4 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name De-emphasis value false } control.5 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name 'DC Filter' value true } control.6 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name 'Hi-pass Filter' value true } control.7 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name 'ADC Filter' value true } control.8 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name 'Master Playback Switch' value true } control.9 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 63' iface MIXER name 'Master Playback Volume' value.0 63 value.1 63 } control.10 { comment.access 'read write' comment.type ENUMERATED comment.count 2 comment.item.0 Mic comment.item.1 CD comment.item.2 Video comment.item.3 Aux comment.item.4 Line comment.item.5 Mix comment.item.6 'Mix Mono' comment.item.7 Phone iface MIXER name 'Capture Source' value.0 Mic value.1 Mic } control.11 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name 'Capture Switch' value true } control.12 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 15' iface MIXER name 'Capture Volume' value.0 15 value.1 15 } control.13 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name 'Loudness (bass boost)' value false } } asound.confの作成 †以下の asound.conf は asound.state を元に作成したものです。 ctl.AndroidPlayback { type hw card 0 } ctl.AndroidRecord { type hw card 0 } pcm.AndroidPlayback { type hooks slave.pcm { type hw card 0 device 0 } hooks.0 { type ctl_elems hook_args [ { name 'Tone Control - Bass' value 0 } { name 'Tone Control - Treble' value 0 } { name 'Headphone Playback Switch' value true } { name 'De-emphasis' value false } { name 'DC Filter' value true } { name 'Hi-pass Filter' value true } { name 'ADC Filter' value true } { name 'Master Playback Switch' value true } { name 'Master Playback Volume' value [ 55 55 ] } { name 'Capture Source' value [ Mic Mic ] } { name 'Capture Switch' value true } { name 'Capture Volume' value [ 15 15 ] } { name 'Loudness (bass boost)' value false } ] } } pcm.AndroidPlayback_Speaker_normal { type hooks slave.pcm { type hw card 0 device 0 } hooks.0 { type ctl_elems hook_args [ { name 'Tone Control - Bass' value 0 } { name 'Tone Control - Treble' value 0 } { name 'Headphone Playback Switch' value true } { name 'De-emphasis' value false } { name 'DC Filter' value true } { name 'Hi-pass Filter' value true } { name 'ADC Filter' value true } { name 'Master Playback Switch' value true } { name 'Master Playback Volume' value [ 55 55 ] } { name 'Capture Source' value [ Mic Mic ] } { name 'Capture Switch' value true } { name 'Capture Volume' value [ 15 15 ] } { name 'Loudness (bass boost)' value false } ] } } pcm.AndroidPlayback_Speaker { type hooks slave.pcm { type hw card 0 device 0 } hooks.0 { type ctl_elems hook_args [ { name 'Tone Control - Bass' value 0 } { name 'Tone Control - Treble' value 0 } { name 'Headphone Playback Switch' value true } { name 'De-emphasis' value false } { name 'DC Filter' value true } { name 'Hi-pass Filter' value true } { name 'ADC Filter' value true } { name 'Master Playback Switch' value true } { name 'Master Playback Volume' value [ 55 55 ] } { name 'Capture Source' value [ Mic Mic ] } { name 'Capture Switch' value true } { name 'Capture Volume' value [ 15 15 ] } { name 'Loudness (bass boost)' value false } ] } } pcm.AndroidPlayback_Headset { type hooks slave.pcm { type hw card 0 device 0 } hooks.0 { type ctl_elems hook_args [ { name 'Tone Control - Bass' value 0 } { name 'Tone Control - Treble' value 0 } { name 'Headphone Playback Switch' value true } { name 'De-emphasis' value false } { name 'DC Filter' value true } { name 'Hi-pass Filter' value true } { name 'ADC Filter' value true } { name 'Master Playback Switch' value true } { name 'Master Playback Volume' value [ 55 55 ] } { name 'Capture Source' value [ Mic Mic ] } { name 'Capture Switch' value true } { name 'Capture Volume' value [ 15 15 ] } { name 'Loudness (bass boost)' value false } ] } } pcm.AndroidPlayback_Speaker_incall { type hooks slave.pcm { type hw card 0 device 0 } hooks.0 { type ctl_elems hook_args [ { name 'Tone Control - Bass' value 0 } { name 'Tone Control - Treble' value 0 } { name 'Headphone Playback Switch' value true } { name 'De-emphasis' value false } { name 'DC Filter' value true } { name 'Hi-pass Filter' value true } { name 'ADC Filter' value true } { name 'Master Playback Switch' value true } { name 'Master Playback Volume' value [ 55 55 ] } { name 'Capture Source' value [ Mic Mic ] } { name 'Capture Switch' value true } { name 'Capture Volume' value [ 15 15 ] } { name 'Loudness (bass boost)' value false } ] } } pcm.AndroidPlayback_Headset_incall { type hooks slave.pcm { type hw card 0 device 0 } hooks.0 { type ctl_elems hook_args [ { name 'Tone Control - Bass' value 0 } { name 'Tone Control - Treble' value 0 } { name 'Headphone Playback Switch' value true } { name 'De-emphasis' value false } { name 'DC Filter' value true } { name 'Hi-pass Filter' value true } { name 'ADC Filter' value true } { name 'Master Playback Switch' value true } { name 'Master Playback Volume' value [ 55 55 ] } { name 'Capture Source' value [ Mic Mic ] } { name 'Capture Switch' value true } { name 'Capture Volume' value [ 15 15 ] } { name 'Loudness (bass boost)' value false } ] } } pcm.AndroidPlayback_Earpiece_incall { type hooks slave.pcm { type hw card 0 device 0 } hooks.0 { type ctl_elems hook_args [ { name 'Tone Control - Bass' value 0 } { name 'Tone Control - Treble' value 0 } { name 'Headphone Playback Switch' value true } { name 'De-emphasis' value false } { name 'DC Filter' value true } { name 'Hi-pass Filter' value true } { name 'ADC Filter' value true } { name 'Master Playback Switch' value true } { name 'Master Playback Volume' value [ 55 55 ] } { name 'Capture Source' value [ Mic Mic ] } { name 'Capture Switch' value true } { name 'Capture Volume' value [ 15 15 ] } { name 'Loudness (bass boost)' value false } ] } } pcm.AndroidPlayback_Bluetooth { type hooks slave.pcm { type hw card 0 device 0 } hooks.0 { type ctl_elems hook_args [ { name 'Tone Control - Bass' value 0 } { name 'Tone Control - Treble' value 0 } { name 'Headphone Playback Switch' value true } { name 'De-emphasis' value false } { name 'DC Filter' value true } { name 'Hi-pass Filter' value true } { name 'ADC Filter' value true } { name 'Master Playback Switch' value true } { name 'Master Playback Volume' value [ 55 55 ] } { name 'Capture Source' value [ Mic Mic ] } { name 'Capture Switch' value true } { name 'Capture Volume' value [ 15 15 ] } { name 'Loudness (bass boost)' value false } ] } } pcm.AndroidRecord_Microphone { type hooks slave.pcm { type hw card 0 device 0 } hooks.0 { type ctl_elems hook_args [ { name 'Tone Control - Bass' value 0 } { name 'Tone Control - Treble' value 0 } { name 'Headphone Playback Switch' value true } { name 'De-emphasis' value false } { name 'DC Filter' value true } { name 'Hi-pass Filter' value true } { name 'ADC Filter' value true } { name 'Master Playback Switch' value true } { name 'Master Playback Volume' value [ 55 55 ] } { name 'Capture Source' value [ Mic Mic ] } { name 'Capture Switch' value true } { name 'Capture Volume' value [ 15 15 ] } { name 'Loudness (bass boost)' value false } ] } } vold.confの作成 †sdcard の mount は vold がおこないます。 $ vi android-root/system/etc/vold.conf 書式は以下のようにします。 ## vold configuration file for bc9 volume_sdcard { media_path /devices/platform/pxa2xx-mci.0/mmc_host/mmc0 media_type mmc mount_point /sdcard ums_path /devices/platform/usb_mass_storage/lun0 } キー割り当て †bc9にはボタンが3つあり、上からキーボードのF1,F2,F3が --- qwerty.kl-orig 2009-07-02 20:28:21.000000000 +0900 +++ qwerty.kl 2009-07-02 20:29:42.000000000 +0900 @@ -11,18 +11,18 @@ key 10 9 key 11 0 key 158 BACK WAKE_DROPPED key 230 SOFT_RIGHT WAKE -key 60 SOFT_RIGHT WAKE +key 60 MENU WAKE key 107 ENDCALL WAKE_DROPPED key 62 ENDCALL WAKE_DROPPED key 229 MENU WAKE_DROPPED key 139 MENU WAKE_DROPPED -key 59 MENU WAKE_DROPPED +key 59 HOME WAKE key 127 SEARCH WAKE_DROPPED key 217 SEARCH WAKE_DROPPED key 228 POUND key 227 STAR key 231 CALL WAKE_DROPPED -key 61 CALL WAKE_DROPPED +key 61 BACK WAKE key 232 DPAD_CENTER WAKE_DROPPED key 108 DPAD_DOWN WAKE_DROPPED key 103 DPAD_UP WAKE_DROPPED android-SDK †Android 1.5 SDK, Release 3 eclipse †Installing the Android SDK の記述に従い、 linux kernel source †android-sdk-1.5_r3 に local_manifest を追加して取得した android-2.6.29 kernel を使用します。 $ cd /home/beat/kernel_work/linux-android-2.6.29/ $ mv ../patch-kernel-2.6.29.4-bc9/patch-all.sh . $ mv ../patch-kernel-2.6.29.4-bc9/*.patch . $ ./patch-all.sh 17個 の patch がすべて当たったら、patch 済みとわかるよう名前を変えておきます。 $ mv linux-android-2.6.29 linux-android-2.6.29-bc9-r3 cross toolchain †bc9-oe-sdk で build した gumstix-oe の cross toolchain を /home/beat/kernel_work/cross 以下にコピーします。 |