armadillo500fx で色々
昨日 make したカーネルとインターネットから取得した Android なイメージで起動試験実施。無事に Android が動作しているのが確認できたので、朝イチで頂戴したデバイスの動作確認を開始。
GPS
機器は BU353 というものらしい。試しに実機に差してみたら
usb 3-1: new full speed USB device using fsl-ehci and address 3 usb 3-1: configuration #1 chosen from 1 choice
抜いたら
usb 3-1: USB disconnect, address 3
というソレがカーネルバッファに出力されている模様。とりあえずここに記述されている通り、
- USB Serial Converter support
- USB Generic Serial Driver
- USB Prolific 2303 Single Port Serial Driver
なエントリを * 付けて、と思い make menuconfig でナニした後に make 起動したら config なナニがコンソールに出てきた。
むむむ、と言いつつ armadillo500fx_dev_android_defconfig して手動で .config の上記の記述な部分を y にして make 実行。実機に転送してカーネルバッファを見てみたら
pl2303 3-1:1.0: pl2303 converter detected usb 3-1: pl2303 converter now attached to ttyUSB0
という出力あり。とりあえずデバイスは認識しているようですが、この後どうすりゃいいのやら。
とりあえず
chroot で Android 起動。GPS なサンプルをぶち込んで様子を見てみるか。って例外吐いて死亡してますな。おそらく以下。
01-30 21:56:57.506: ERROR/LocationManagerService(1918): getLastKnownLocation got exception: 01-30 21:56:57.506: ERROR/LocationManagerService(1918): java.lang.IllegalArgumentException: provider=gps 01-30 21:56:57.506: ERROR/LocationManagerService(1918): at com.android.server.LocationManagerService._getLastKnownLocationLocked(LocationManagerService.java:1408) 01-30 21:56:57.506: ERROR/LocationManagerService(1918): at com.android.server.LocationManagerService.getLastKnownLocation(LocationManagerService.java:1393) 01-30 21:56:57.506: ERROR/LocationManagerService(1918): at android.location.ILocationManager$Stub.onTransact(ILocationManager.java:247) 01-30 21:56:57.506: ERROR/LocationManagerService(1918): at android.os.Binder.execTransact(Binder.java:287) 01-30 21:56:57.506: ERROR/LocationManagerService(1918): at com.android.server.SystemServer.init1(Native Method) 01-30 21:56:57.506: ERROR/LocationManagerService(1918): at com.android.server.SystemServer.main(SystemServer.java:497) 01-30 21:56:57.506: ERROR/LocationManagerService(1918): at java.lang.reflect.Method.invokeNative(Native Method) 01-30 21:56:57.506: ERROR/LocationManagerService(1918): at java.lang.reflect.Method.invoke(Method.java:521) 01-30 21:56:57.506: ERROR/LocationManagerService(1918): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 01-30 21:56:57.506: ERROR/LocationManagerService(1918): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 01-30 21:56:57.506: ERROR/LocationManagerService(1918): at dalvik.system.NativeStart.main(Native Method) 01-30 21:56:57.516: ERROR/LocationManagerService(1918): requestUpdates got exception: 01-30 21:56:57.516: ERROR/LocationManagerService(1918): java.lang.IllegalArgumentException: provider=gps 01-30 21:56:57.516: ERROR/LocationManagerService(1918): at com.android.server.LocationManagerService.requestLocationUpdatesLocked(LocationManagerService.java:861) 01-30 21:56:57.516: ERROR/LocationManagerService(1918): at com.android.server.LocationManagerService.requestLocationUpdates(LocationManagerService.java:831) 01-30 21:56:57.516: ERROR/LocationManagerService(1918): at android.location.ILocationManager$Stub.onTransact(ILocationManager.java:79) 01-30 21:56:57.516: ERROR/LocationManagerService(1918): at android.os.Binder.execTransact(Binder.java:287) 01-30 21:56:57.516: ERROR/LocationManagerService(1918): at dalvik.system.NativeStart.run(Native Method)
そもそも Android 側で GPS なデバイスの認識ができていない模様。これってソース見ないとダメって事なんだろうなぁ。
色々見てみた
LocationManager というナニが NmeaListener というソレで USBSerial から出てくるナニを云々してるのか。がしかし、具体的な部分が見えん。
実機で /dev/tty* なファイルを確認してみたんですが、それっぽいナニが見当りません。ただ、/dev/ttyUSB0 ではない、ってのは分かった。てか、adb shell で入って ls で確認とかってヤリにく杉。
とりあえず
職場から離脱してこれから SICP 読み。