連載
» 2012年04月12日 10時30分 公開

KGDBを使って、Android組み込みボードをリモートデバッグしよう!【後編】〜USBガジェットドライバをデバッグする(3)〜実践しながら学ぶ Android USBガジェットの仕組み(5)(4/4 ページ)

[中垣内勇祐、森崇、中谷洋一(永和システムマネジメント),@IT MONOist]
前のページへ 1|2|3|4       

リモートデバッグのデモ

 リモートデバッグのデモとして、Android USBガジェットの基本情報を簡単に見ていくことにしましょう。

 USBガジェットとしては、幾つかの機能がありますが、今回は、USBマスストレージ機能について見ていきたいと思います。USBマスストレージ機能とは、ターゲットボードに挿したSDカードなどのデータを、USBを通して、ホストPC上で閲覧するための機能です。

 まずは、Android USBガジェットの“親玉変数”である「_android_dev」から始めます。以下のコマンドを実行して、「_android_dev」の情報を表示します。


(gdb) graph display *_android_dev
image

 画面左側の文字は、構造体メンバの名前であり、右側の値はそのメンバに設定されている値です。「cdev」というメンバにはアドレス「0xc5afb9a0」が設定されており、ここからメモリ探索していくことで、Android USBガジェットの全ての情報を参照できます。

 それでは、マウスで「cdev」を選択し、右クリックのショートカットメニューで「Display」を選択してメモリ探索を開始します。メモリを表示すると、以下のように右側に次のデータ構造が表示されます。

image

 どうやら、「cdev」の先には、USBデバイスの基本情報である「デバイスディスクリプタ」が入っているようです。「desc」というメンバをダブルクリックして、その中を見てみると、デバイスディスクリプタのフィールド名と一致した情報が読み取れます。

 ここから、ベンダID(idVendor)は「6353(=0x18D1)」、プロダクトID(idProduct)は「45060(=0xB004)」であることが分かります。

 さらに、「configs」というメンバをダブルクリックすると、「interface」というアドレステーブルが表示されます。

image

 USBにおけるインタフェースは、USBデバイスの機能を表しておりますので、本ターゲットボードのAndroid USBデバイスとしては、全部で2つの機能があるということを意味しています。つまり、どちらか一方が、USBマスストレージということになります。

 まずは、1つ目(0xc5b26c00)を表示してみると、nameに“usb_mass_storage”とあります。これこそが探し求めていたUSBマスストレージです。

image

 hs_descriptorsには、インタフェースディスクリプタが格納されておりますので、以下のコマンドでその内容を参照できます。

(gdb) graph display *(struct usb_interface_descriptor*) ((_android_dev->cdv->config->interface[0]->hs_descriptors[0]) 

 ちなみに、USBマスストレージの仕様については、http://www.usb.org/developers/devclass_docs/Mass_Storage_Specification_Overview_v1.4_2-19-2010.pdfを参照することで、詳しい内容を確認できます。ここでは、インタフェースディスクリプタの代表的なメンバの値とその内容について示します(表3)。

代表的なメンバ 説明
bInterfaceClass 0x8 Mass Storage Class
bInterfaceSubClass 0x6 ホストPCからのコマンドフォーマットの種類は「SCSI transparent command set」
bInterfaceProtocol 0x50(=80) データ転送は、バルク転送(USB Mass Storage Class Bulk-Only (BBB) Transport)
bNumEndpoints 2 エンドポイント数は2個(送受信用)
表3 インタフェースディスクリプタの代表的なメンバの値とその内容



 今回は、USB用語が突然出てきたので戸惑われた方も多かったのではないでしょうか。次回からは、USBマスストレージを中心に、詳しく説明していきたいと思います。お楽しみに! (次回に続く)


Android コーナー

Androidコーナー
「Android(アンドロイド)」の組み込み機器への適用からアプリ開発、レポート、ニュースなどさまざまな技術情報・最新動向をお届けする!!

>>コーナーTOPはこちらから


前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.