chakokuのブログ(rev4)

テック・コミック・ごくまれにチャリ

microbridge(ADB)を使ってAndroidとARMを繋ぐ

前回、ADKを使って、AndroidとARMを繋ごうとしたけど、スマフォ側のOSのバージョンが低くてADKをサポートしていなかった。今回は、古いバージョンにも搭載されているADBの実装である?microbridgeというやつで繋いでみた。ハード構成は左のとおりで、LPCXpresso(LPC1769)+USB HostShield(MAX3421E)+Android端末(Galaxy S2)です。ARMとAndroidの接続はできれば、LPC1769に内蔵されているUSB Host I/Fを使いたいのだけど、それにはもっと勉強が必要で自分のスキルでは実装できないので、microbridgeのリファレンスをそのまま踏襲して、USB Host Shield(MAX3421E)を流用した。一番苦労するUSBホストコントローラのハードがリファレンス実装と同じなので、MAX3421と接続するSPI周りの実装(max3421e.cpp)を修正するだけで、USBレイヤー(usb.cpp)、ADBレイヤー(adb.cpp)はほとんど修正なしでポーティングが可能です(コンパイラの関係で、C++ から Cには変更しました)。

NXPのデバッガで確認したコンソール出力の内容。まぁ詳細分かりませんが、OSの挙動が出ているのでしょう。。これで接続は確認できたので、このAPIを拡張して、データを流せば、スイッチやセンサーと接続できる、、はず。。でも次のステップがよく分からないのだが。。仮想TCP接続になる??

今回試したのは、LPC1769+USB Host Shieldの組み合わせです。ソースが整理できたらどこかにアップしたいとは思いますが。。なにしろ動かすのが最優先で、グチャグチャになっているので。。(前回の挫折プロジェクト(ADKによるARMとの接続)のソフト資産を流用したので、MDBサンプルソース修正と接続確認までは数日で済んだ。もしLCP1769の内蔵USBを使っていたら1ヶ月以上かかったかも。。ソースの価値が高いのは、内蔵USB Host I/Fを使った方なので、もうちょっと勉強して、USB Host Shieldを使わず直結できるようにしたいですが。。こっちはかなり壁が厚い)最低限の接続確認までできたので、このネタはちょっと休み。