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

» 2012年04月12日 10時30分 公開
[中垣内勇祐、森崇、中谷洋一(永和システムマネジメント),@IT MONOist]

Step2:U-Boot上でUSBデータ転送待ち状態にする

 ターゲットボードにUSB経由でデータ転送するためには、ボードに組み込まれているブートローダ(U-Boot)を使用します。

 まずは、ターゲットボードを起動し、U-Bootのコマンドプロンプトを表示させましょう。


image

 次に、ターゲットボードとホストPCをUSB接続し、U-BootのUSBデータ転送用のコマンド「dnw」を実行します(注1)。

image

 本コマンドを実行すると、ターゲットボード側は、ホストPC側からのデータ転送待ち状態になります。このときホストPC側では、USB接続の通知が行われます。

 つまり、このタイミングで今回作成したUSBデバイスドライバのprobe処理が行われ、デバイスファイルが出来上がるという手はずです。それでは、確認してみましょう。

$stat /dev/androidbulk0

 いかがですか。USBデバイスファイルが作られていますね。

image
注1:dnwの第1引数である「c0008000」は、ターゲットボードのメモリアドレスであり、ホストPCから転送されるカーネルイメージの転送先です。


Step3:ホストPCからカーネルイメージを転送する

 これで、ターゲットボードの準備が整いました。ホストPC側から「dnw」コマンドを使って、カーネルイメージを転送してみましょう。

$sudo ./dnw zImage /dev/androidbulk0

 すると、ターゲットボード上では、以下のようにダウンロード成功のメッセージが出力されます。

image

 チェックサムも無事通りましたので、これでターゲットボードのメモリ領域に書き込まれたわけです。

 後は、このカーネルイメージ(メモリの“c0008000”から始まる領域)を、以下のようにしてNAND Flashへコピーするだけです。

$nand write c0008000 900000 300000

 最後にターゲットボードをリセットして、再起動させれば完了です。リセットすると、以下のようにkgdboe(KGDB over Ethernet)のログが出力されるはずです。これでカーネルの書き換えは成功です。

image

Copyright © ITmedia, Inc. All Rights Reserved.