今回は、USBデバイスドライバを効率的に開発するための統合開発環境「UDK(USB Device driver development Kit)」を使用して、UMS(USB Mass Storage)のパケットの流れとSCSIデータを解析する。
筆者が某メーカーのAndroid USBデバイスドライバを開発していたころの話です。開発現場では、以下に起因する“苦労”を目の当たりにしてきました……。
Aさん:すいません。昨日のバグの原因の直し方が見えてきたので、ちょっと試してみたいのですが。Android端末の空きはありますか?
Bさん:あー。今日は、再現テストで何台もAndroid端末を使うので、ちょっと空きがないですねぇ……。
Aさん:えっ……。
Aさん:あれ? PCとAndroidをUSB接続したのに、USBメモリとして認識されないなぁ。どこで何が起きているんだろう? USBプロトコルアナライザでパケットキャプチャーして調べるかな……。
――ガラッ!!(机の引き出しを開ける音)
Aさん:あ、あれ? いつもこの机の引き出しに入っているのに、どこにもないぞ。
Bさん:あ〜。そのアナライザなら、他のバグ調査で使っていますよ。
Aさん:USBプロトコルアナライザは高価で、チームに1台しか支給されていないから順番待ちが多いなぁ〜。やれやれ。
Aさん:USBデバイスドライバのバグ原因が特定できたのでソースコードの修正まで完了したぞ! 早速、デバッグするために以下の要領でデバッグの準備を始めるか。
Aさん:さーて、準備ができたし、USB接続してデバッグを開始するぞ〜。
……わっ! ブルー画面だ!!(注1) どれどれ、パニックメッセージは……。うっ、NULLポインタアクセス!?
あー、単純な修正ミスだ。またROM焼きしないと……。はぁ、面倒だなぁ〜。
現在、われわれが開発している「PCRescuroid(ピーシーレスキュロイド)」は、AndroidカーネルにUSBデバイスドライバとしてCD-ROMドライバを新たに追加する必要があります。このドライバ開発でも、筆者がこれまで経験してきたような“苦労”が繰り返されることは容易に想像できます……。
本連載の第8、9回では、こういった問題に対処するためのソリューションを模索してきましたが、今回、USBデバイスドライバを効率的に開発するための統合開発環境「UDK(USB Device driver development Kit)」を正式に作り上げることができました!
そこで、今回から、実際にUDKを使って、CD-ROMドライバを追加するための方法を紹介していきます。
Copyright © ITmedia, Inc. All Rights Reserved.