2012年1月2日月曜日

Android ADK+秋月電子USBホストマイコンボードのその後

Xperia X10を買ってから約1年半.
何か面白い事をやってやろうと思っているうちに時間はドンドンながれて,新しい機種が次々と発表されて,持っている機種への満足度は,指数関数的に減退していくのでございます.
中でもAndroid2.3.4から導入されたAccsessory Development Kitは,ぜひとも使ってみたい機能であったのだけど,私の古ぼけたX10では,使うことができなくて諦めていた.
そこへADKをサポートしたと思われるXperia X10用のカスタムファームを見つけてしまった.これが去年の7月ころのこと.
そのカスタムファームを導入すれば,あとはUSBホスト機能のあるマイコンを使って,Androidの周辺機器を作って楽しめるのではないかと睨んだ私は,まず安く手に入るUSBホスト機能のあるマイコンボードを探してみた.
目に止まったのは「秋月電子 H8 3069/USBホストボードキット」 価格は3000円也.
USBホストドライバーは,SL811が乗っかってる.使ったことはない.
このボードは2004年に発売開始された歴史のあるもののようなので,きっと誰かが使いこなす雛形ソースなどを公開していると期待して調べてみたが,予想は裏切られ見つけることが出来なかった.
サンプルソースコードがついていると秋月のサイトに書いてあったので,それを期待して購入したのだが,残念ながらサンプルとしてしか成立しないレベルの程度のものしかついていなかった.
仕方ないのでADKのArudino用サンプルソースを参考にしながら,H8 3069/USBホストボードで動作するADKデバイス開発を目指し,空き時間に作り込んでみることにしたのだが,今にいたってもADKデバイスを動かすところまでできていない.
なぜかというと,私がX10に導入したカスタムファームは,AndroidのJAVA階層レベルでは,ADKのAPIをサポートしているもののLinuxカーネルがADKに必要な機能を持っていないようなのだ.具体的に言うとカーネルバージョン2.6.29ベースではNGで,2.6.34といったバージョンが必要らしい.
やっとファームの方に,ADKの認識プロトコルを実装し,ADKの門前をくぐることができると期待していた私は,門前払いを受けたことに大いにショック状態となった.
しょぼいファームだけど,それなりにめんどくさい作業をしたので,文字通りガックリ状態.
Xperia X10用の2.6.34系カーネルが公開されるか,あと半年まって新機種に乗り換えるかするまで塩漬けするしかない.

折角つくったファームなので,こっそり公開させて頂きます.AKI-ADKソースコード
HOS-V4を使わせて頂いております.素晴らしいRTOSを公開いただきありがとうございます.
メモリー配置は,GDBでデバッグする状態になっているのでROMに焼いて動作するようにするには,リンカスクリプトをちょっといじらねばなりません.

このファームは,リセット後,ひたすらにUSBスレーブデバイスを探し続け,見つけると接続したデバイスを列挙し,もしAndroidケータイがつながっているなら,ADK接続モードになるはず.
きっと本家Androidならアクセサリとして認識されるんじゃないかと期待しております.
お金があればGoogleから,開発デバイスを買うんだけれどなあ.