| |||
Home > ARM DS-5 チュートリアル > ロード可能なカーネルモジュールのデバッグ |
DS-5 を使用してロード可能なカーネルモジュールを開発し、デバッグすることができます。ロード可能なモジュールは、頻繁にカーネルをコンパルすることなく、開発時に実行中のカーネルとの間で動的に挿入および削除できるモジュールです。
DS-5 では、簡単なキャラクタデバイスドライバの例として、ターゲット上でコンパイル、実行、およびデバッグできる modex.c
を用意しています。また
Windows ユーザに対しては、DS-5 が提供する Linux ディストリビューションプロジェクトに相当するビルド済みイメージバイナリが提供されています。または、カーネルやモジュールのコンパイルの詳細については、kernel_module
サンプルに付属の readme.html
を参照してください。
モジュールをデバッグするには、その前に以下の条件を満たす必要があります。
カーネルソースコードが展開され、ターゲットとまったく同じカーネルバージョンに対してカーネルがコンパイルされていること。
ターゲットとまったく同じカーネルバージョンに対して、ロード可能なモジュールがコンパイルされていること。
これらのイメージは、いずれも必ずデバッグ情報とともにコンパイルしてください。デバッガがモジュールをデバッグする際、両方のイメージのンタイム情報が必要です。
ロード可能なモジュール modex.c
をデバッグするには
デバッガをターゲットに接続します。デバイスドライバのサンプルに、事前設定済みの起動ファイルが用意されています。
[実行]メニューから[デバッグコンフィギュレーション...]を選択します。
コンフィギュレーションツリーで、[DS-5 Debugger]を展開します。
module-beagle-example
エントリを選択します。
[Connection]タブには、[Debug Hardware Address]フィールドを除くほとんどの接続設定が含まれています。デバッガとデバッグハードウェアエージェント間の接続に使用する、IP アドレスまたは名前を入力します。
[Files]タブには、Linux カーネルとモジュールに関するデバッグ情報をロードするためのデバッガ設定が含まれています。例えば、以下の図に示すように[Application on host to download]フィールドを無視し、カーネルイメージとモジュールイメージの両方を選択します。
[Run]コントロールパネルの[Debugger]タブで、[Connect only]を選択します。
[Debug]をクリックしてターゲットにデバッガを接続します。
ターミナルシェルを設定し、ターゲットに接続します。これには DS-5 に付属のリモートシステムエクスプローラ(RSE)を使用できます。
RSE を使用し、コンパイル済みのモジュールをターゲットにコピーします。
ホストワークステーションの .../linux_system/kernel_module/stripped
ディレクトリに移動します。
モジュール modex.ko
をターゲットの書き込み可能なディレクトリにドラッグアンドドロップします。
モジュールの場所に移動します。
以下のコマンドを実行します。
insmod modex.ko
[Modules]ビューで、ロード済みのモジュールの詳細が更新されて表示されます。
モジュールのソースコードを変更するには
モジュールを挿入および削除すると、デバッガはターゲットを停止し、デバッグ情報と既存のブレークポイントのメモリ位置を自動的に解決します。したがって、ソースコードを再コンパイルする際に、デバッガを停止して再接続する必要はありません。
便利なターミナルシェルコマンド:
lsmod
ロード済みのすべてのモジュールに関する情報が表示されます。
insmod
ロード可能なモジュールを挿入します。
rmmod
モジュールを削除します。
便利な DS-5 デバッガコマンド
info
os-modules
接続後にロードされた OS モジュールのリストを表示します。
info os-log
OS ログバッファの内容を表示します。
info os-version
OS のバージョンの内容を表示します。
info processes
各プロセスの ID、現在の状態、および関連するスタックフレーム情報を示す一覧を表示します。
set os-log-capture
オペレーティングシステム(OS)のログメッセージのキャプチャとコンソールへの出力を制御します。
接続後にロードされた OS モジュールは、[Modules]ビューに表示されます。
『ARM® DS-5™ デバッガの使用』:
『ARM® DS-5™ デバッガの使用』:
『ARM® DS-5™:デバッガコマンドリファレンス』:
『★ARM® DS-5™ Using Eclipse』: