ザイリンクス システム デバッガーを使用すると、Linux カーネルをデバッグできます。次の手順に従って、ターゲットで実行される Linux カーネルに接続して、ソース コードをデバッグします。
- 次のコンフィギュレーション オプションを使用してカーネル ソースをコンパイルします。
CONFIG_DEBUG_KERNEL=y CONFIG_DEBUG_INFO=y
- Vitis ソフトウェア プラットフォームを起動します。
- をクリックします。
- アプリケーションを右クリックし、 をクリックします。
- [Debug Configurations] ページで Launch on Hardware (Single Application Debug) を選択して New ボタン () をクリックします。
- コンフィギュレーションに Zynq_Linux_Kernel_Debug という名前を付けます。
- 実行中ステートのプロセッサを使用してデバッグが開始されます。
- Pause ボタンをクリックし、プロセッサを一時停止します ()。[Disassembly] モードでデバッグが開始します。
- vmlinux シンボル ファイルを両方のプロセッサ コアに追加します。
- ARM Cortex-A9 MPCore#0 を右クリックし、Symbol Files をクリックします。
- add をクリックし、vmlinux シンボル ファイルを追加します。
- OK をクリックします。
- ARM Cortex-A9 MPCore#1 を右クリックし、Symbol Files をクリックします。
- add をクリックし、vmlinux シンボル ファイルを追加します。
- OK をクリックします。
- Linux マシンでコードを構築し、Windows でデバッガーを実行する場合は、ソース ルックアップを設定する必要があります。
- デバッグ コンフィギュレーション Zynq_Linux_Kernel_Debug を右クリックし、Edit Source Lookup をクリックします。
- Add をクリックします。
- Add Source ページから Path Mapping を選択します。
- Add をクリックし、コンパイル パスとローカル ファイル システム パスを追加します。
- ソース ファイルが問題なく設定されると、ソース コードをデバッグできるようになります。
- [Breakpoints] ビューのツールバーを使用すると、関数ブレークポイントを追加できます。
-
start_kernel
関数にブレークポイントを追加します。 - リセット ボタンをクリックします。Zynq-7000 SoC プロセッサが SD カードからブートされ、カーネル初期化の冒頭で停止します。 注記: Linux カーネルは常に完全に最適化され、インラインがイネーブルになった状態でコンパイルされます。このため、命令の順番が変わってしまう可能性があるので、コードのステップスルーが正しく動作しないことがあります。さらに、変数の中にコンパイラの最適化で削除されるものがあり、デバッガーで使用できないこともあります。