Android USBパケットをキャプチャーし、UMSプロトコルを解析する!!実践しながら学ぶ Android USBガジェットの仕組み(11)(1/3 ページ)

今回は、USBデバイスドライバを効率的に開発するための統合開発環境「UDK(USB Device driver development Kit)」を使用して、UMS(USB Mass Storage)のパケットの流れとSCSIデータを解析する。

» 2013年04月16日 09時30分 公開
[村上雅彦、舟元拓斗、森崇(永和システムマネジメント 組込み技術センター),MONOist]

1.はじめに

 筆者が某メーカーのAndroid USBデバイスドライバを開発していたころの話です。開発現場では、以下に起因する“苦労”を目の当たりにしてきました……。

  1. Android端末不足
  2. USBプロトコルアナライザ不足
  3. デバッグ効率の悪さ

シーン1:Android端末不足

Aさん:すいません。昨日のバグの原因の直し方が見えてきたので、ちょっと試してみたいのですが。Android端末の空きはありますか?


Bさん:あー。今日は、再現テストで何台もAndroid端末を使うので、ちょっと空きがないですねぇ……。


Aさん:えっ……。


シーン2:USBプロトコルアナライザ不足

Aさん:あれ? PCとAndroidをUSB接続したのに、USBメモリとして認識されないなぁ。どこで何が起きているんだろう? USBプロトコルアナライザでパケットキャプチャーして調べるかな……。


――ガラッ!!(机の引き出しを開ける音)

Aさん:あ、あれ? いつもこの机の引き出しに入っているのに、どこにもないぞ。


Bさん:あ〜。そのアナライザなら、他のバグ調査で使っていますよ。


Aさん:USBプロトコルアナライザは高価で、チームに1台しか支給されていないから順番待ちが多いなぁ〜。やれやれ。


シーン3:デバッグ効率の悪さ

Aさん:USBデバイスドライバのバグ原因が特定できたのでソースコードの修正まで完了したぞ! 早速、デバッグするために以下の要領でデバッグの準備を始めるか。

  1. 修正ソースコードをコンパイルしてROMイメージを作成
  2. Android端末とコンパイルマシンをUSB接続
  3. Android端末のブートローダを起動
  4. ROMイメージをAndroid端末に焼き込む
  5. USB接続を解除し、Android端末をリブート

Aさん:さーて、準備ができたし、USB接続してデバッグを開始するぞ〜。

……わっ! ブルー画面だ!!注1 どれどれ、パニックメッセージは……。うっ、NULLポインタアクセス!?

あー、単純な修正ミスだ。またROM焼きしないと……。はぁ、面倒だなぁ〜。


 現在、われわれが開発している「PCRescuroid(ピーシーレスキュロイド)」は、AndroidカーネルにUSBデバイスドライバとしてCD-ROMドライバを新たに追加する必要があります。このドライバ開発でも、筆者がこれまで経験してきたような“苦労”が繰り返されることは容易に想像できます……。

 本連載の第89回では、こういった問題に対処するためのソリューションを模索してきましたが、今回、USBデバイスドライバを効率的に開発するための統合開発環境「UDK(USB Device driver development Kit)」を正式に作り上げることができました!

 そこで、今回から、実際にUDKを使って、CD-ROMドライバを追加するための方法を紹介していきます。

※注1:筆者が開発に従事していた環境では、Androidカーネルの不具合などでパニックが発生すると、Android端末の画面全体がブルーになって、パニックメッセージが表示されていました。そのため筆者らは、これをよく「ブルー画面」と呼んでいました。


       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.