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

という出力あり。とりあえずデバイスは認識しているようですが、この後どうすりゃいいのやら。

とりあえず

chrootAndroid 起動。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 読み。