6.7 ベアメタル対称型マルチプロセスシステムのデバッグについて

DS-5 デバッガはベアメタル 対称的マルチプロセス (SMP)システムのデバッグをサポートしています。デバッガは、SMP システムが以下の要件を満たしていると想定しています。
  • すべてのプロセッサ上で動作する同じ ELF イメージ。
  • すべてのプロセッサに同じデバッグハードウェアがある必要があります。例えば、ハードウェアブレークポイントとウォッチポイントリソースの数は同じでなければなりません。
  • ブレークポイントとウォッチポイントは、すべてのプロセッサが、物理メモリと仮想メモリの両方でメモリマップが同じである領域のみで設定する必要があります。ARM マルチコアプロセッサのプライベートペリフェラルの場合と同様に、同じアドレスでマッピングされる同じペリフェラルの別のインスタンスを持つプロセッサは、この要件を満たしていると見なされます。

設定と接続

デバッガで SMP サポートを有効にするには、最初に[Debug Configurations]ダイアログボックスでデバッグセッションを設定する必要があります。SMP デバッグをサポートするターゲットは、SMP を[Debug operation]ドロップダウンリストで指定することによって識別されます。
デバッガで SMP サポートを有効にするために必要なことは、単一の SMP 接続の設定だけです。接続時にシステム内のすべての SMP プロセッサをデバッグするには、[Debug Control]ビューで選択します。

SMP システムのデバッグ時は、常に SMP 接続を使用することをお勧めします。SMP 接続の代わりにシングルコア接続を使用すると、再開する方法がないソフトウェアブレークポイントでその他のコアが停止してしまう可能性があります。

イメージとシンボルのロード

SMP システムのデバッグ時は、イメージとシンボルのロード操作がすべての SMP プロセッサに適用されます。イメージのロードの場合、これは、いずれかのプロセッサを介してイメージのコードとデータがメモリに 1 回書き込まれ、同じアドレスの他のプロセッサを介してアクセス可能であると見なされることを意味します。これは同じメモリを共有するためです。シンボルのロードの場合、これは、デバッグ情報は 1 回ロードされ、いずれかのプロセッサのデバッグ時に使用可能であることを意味します。

実行、停止、およびステップ実行

SMP システムのデバッグ時は、1 つのプロセッサを実行しようとすると、システム内の他のすべてのプロセッサが自動的に実行されます。同様に、プロセッサが停止すると(停止を要求したか、またはブレークポイントに到達するなどのイベントによって)、システム内のすべてのプロセッサが停止します。
命令レベルのシングルステップ実行(stepi コマンドと nexti コマンド)の場合、現在選択されているプロセッサは 1 つの命令をステップ実行します。例外は、nexti 操作が関数呼び出しをステップオーバーする必要がある場合です。この場合、デバッガはブレークポイントを設定してから、すべてのプロセッサを実行します。他のすべてのステップ実行コマンドは、すべてのプロセッサに影響を及ぼします。
システムによっては、実行中または停止中のプロセッサと、実行中または停止中の別のプロセッサの間に遅延がある可能性があります。デバッガでは手動ですべてのプロセッサを個別に実行または停止する必要があるので、この遅延は非常に大きくなる可能性があります。
めったにありませんが、1 つのプロセッサが停止し、そのために他のプロセッサが停止できなくなることがあります。例えば、これは、セキュアモードでコードを実行しているプロセッサが一時的にデバッグ機能を無効にしたときに発生することがあります。これが発生すると、デバッグ制御ビューに各プロセッサの個々の状態(実行中または停止)が表示されるので、停止できなかったプロセッサを確認できます。すべてのプロセッサが停止するまで、後続の実行およびステップ実行操作を正常に動作できない場合があります。

ブレークポイント、ウォッチポイント、およびシグナル

デフォルトでは、SMP システムのデバッグ時は、ブレークポイント、ウォッチポイント、およびシグナル(ベクタキャッチ)操作がすべてのプロセッサに適用されます。これは、条件を満たすコードをいずれかのプロセッサが実行するときに 1 つのブレークポイントをトリガするよう設定できることを意味します。デバッガがブレークポイント、ウォッチポイント、またはシグナルのために停止したときは、イベントを発生させたプロセッサがコマンドビューに表示されます。
関連する[Properties]ダイアログボックスで必要なプロセッサを選択することによって、1 つまたは複数のプロセッサについてブレークポイントまたはウォッチポイントを設定できます。あるいは、break-stop-on-cores コマンドを使用することもできます。この機能はシグナルには使用できません。

ターゲットの状態の検査

レジスタ、コールスタック、メモリ、逆アセンブリ、式、変数などターゲット状態のビューには、プロセッサ固有の内容が含まれています。
ブレークポイント、信号、コマンドなどのビューは、SMP システム内のすべてのプロセッサで共有され、プロセッサが現在選択されているかどうかに関係なく、同じ内容を表示します。

トレース

トレースのサポートを有効にする接続を使用している場合は、システム内の各プロセッサのトレースを表示できます。デフォルトでは、トレースビューには、デバッグ制御ビューで現在選択されているプロセッサのトレースが表示されます。または、トレースビューでツールバーの[Linked: context] オプションを使用して、そのトレースビューを特定のプロセッサにリンクすることもできます。特定のプロセッサにリンクされる複数のトレースビューを作成すると、複数のプロセッサからトレースを同時に表示できるようになります。トレースビューのインデックスは、別のプロセッサと同時に同じポイントを表しているとは限りません。
関連する概念
6.6 big.LITTLE システムのデバッグについて
4.1 ターゲットへのイメージのロードについて
4.2 デバッガへのデバッグ情報のロードについて
関連する参考文書
4.5 ブレークポイントとウォッチポイントの使用
4.8 トレースポイントの設定
4.9 Streamline の始点と終点の設定
4.6 条件ブレークポイントの使用
4.6.1 既存のブレークポイントへの条件の割り当て
4.7 ブレークポイントとウォッチポイントの保留について
4.10 アプリケーションのステップ実行
10.4 [Breakpoints]ビュー
10.6 [Commands]ビュー
10.7 [Debug Control]ビュー
10.8 [Disassembly]ビュー
10.14 [Memory]ビュー
10.16 [Modules]ビュー
10.17 [Registers]ビュー
10.26 [Variables]ビュー
関連情報
DS-5 デバッガコマンド
非機密扱いPDF file icon PDF 版ARM DUI0446VJ
Copyright © 2010-2015 ARM.All rights reserved.