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

KGDBを使ってAndroid搭載の組み込みボードをリモートデバッグする。【後編】第3弾の今回は、「ターゲットボードのカーネルを変更し、グラフィカルなデバッガでデバッグする」について解説する。

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

はじめに

 前回は、Linux上でUSBデバイスドライバを作成する方法を解説しました。

 ターゲットボードをリモートデバッグするには、ボード上のカーネルを、「KGDB(Kernel Gnu DeBugger)」を組み込んだカーネルに変更する必要があります。

 そのための手順(図1)は、以下の通りであり、今回は「ターゲットボードのカーネルを変更し、グラフィカルなデバッガでデバッグする」について解説します。

カーネルを変更する 図1 カーネルを変更する

ターゲットボードのカーネルを変更するためには

 ターゲットボードのカーネルを変更するには、ターゲットボードのブートシーケンスを理解しておく必要があります。

 本ターゲットボードの電源をONにすると、まずブートローダ(U-Boot)に処理が渡されます。U-Bootは3秒間キー入力待ちをした後、NAND Flash上にあるカーネルイメージ(zImage)をメモリ上にロードします。そして、プログラムカウンタをそのメモリ領域の先頭に移動させることでカーネルに処理が移り、最終的にAndroidが起動します。

 つまり、NAND Flashに配置されているカーネルイメージを、変更したいカーネルに書き換えればよいわけです。ターゲットボードのカーネルイメージの配置場所は、以下の通りです(表1)。

先頭アドレス 0x900000
サイズ 0x300000
表1 カーネルイメージの配置場所

 ただし、NAND Flashは直接書き換えることはできません。以下のように、まず対象領域を消去し、その領域に変更したいカーネルイメージをコピーして、ターゲットボードをリセットすることで書き換えます。

$ nand erase 900000 300000

 とはいえ、カーネルイメージはホストPC上にあるわけですから、ホストPC上のカーネルイメージをターゲットボードに転送するところから始めなければなりません。これから、その方法について説明していきます。

カーネルイメージをUSBで転送する

 ホストPC上にあるカーネルイメージを、ターゲットボードに転送するための手順は、以下の3ステップです。

  • Step1:ホストPC上でUSBデバイスドライバをインストールする
  • Step2:U-Boot上でUSBデータ転送待ち状態にする
  • Step3:ホストPCからカーネルイメージを転送する

Step1:ホストPC上でUSBデバイスドライバをインストールする

 ホストPC上のUSBデバイスドライバは、前回作成した「dnw.zip」を使います。まずは、これを解凍して、USBデバイスドライバをコンパイルしましょう。

 「dnw.zip」を解凍すると、以下のファイルが展開されます。

image

 この状態で「make」コマンドを実行すると、必要なモジュールを全てコンパイルしてくれます。

image

 コンパイルが終わると、以下のようになります。

image

 このうち必要なものは、「dnw」と「androidbulk.ko」です。「dnw」は、アプリケーションであり、ユーザーがデータを転送する際に使用します。「androidbulk.ko」は、Linux USBデバイスドライバです。

 それでは、「insmod」コマンドを使って、USBデバイスドライバをインストールしてみましょう。インストールできたかどうかは、「lsmod」コマンドで確認します。

image

 うまくインストールできましたね。ちなみに、アンインストールは「rmmod」コマンドで行います。

image
       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.