1.3.1 SMP システムのデバッグ

DS-5デバッガ 側から見ると、対称型マルチプロセッサ(SMP)は、1 つのマルチコア実行ブロックとして密結合され使用される、アーキテクチャ上同じコアのセットを参照します。また、デバッガ側から見ると、これらは一緒に開始および停止する必要があります。

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

設定と接続

デバッガで SMP サポートを有効にするには、最初に[デバッグコンフィギュレーション]ダイアログボックスでデバッグセッションを設定する必要があります。デバッガで SMP サポートを有効にするために必要なことは、単一の SMP 接続の設定だけです。
SMP デバッグをサポートしているターゲットには、それらに対して指定される SMP があります。
図 1-1 Versatile Express A9x4 SMP コンフィギュレーション
Versatile Express A9x4 SMP コンフィギュレーション

ターゲットに接続したら、[デバッグ制御]ビューを使用して、SMP システムのすべてのコアと共に動作します。

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

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

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

SMP システムのデバッグ時は、1 つのプロセッサを実行しようとすると、システム内の他のすべてのプロセッサが自動的に実行されます。同様に、1 つのプロセッサが停止すると、停止要求か、ブレークポイントに到達するなどのイベントのためかのいずれかの理由で、システム内の他のプロセッサがすべて停止します。
命令レベルのシングルステップ実行コマンド( stepi および nexti )の場合、現在選択されているプロセッサは 1 つの命令をステップ実行します。
図 1-2 コア 1 は stepi コマンドで停止しました
コア 1 は stepi コマンドで停止しました

例外は、 nexti 操作が関数呼び出しをステップオーバーする必要がある場合です。この場合、デバッガは、ブレークポイントを設定してからすべてのプロセッサを実行します。他のすべてのステップ実行コマンドは、すべてのプロセッサに影響を及ぼします。
システムによっては、実行または停止しているさまざまなコア間で遅延がある場合があります。デバッガは各コアを個別に実行または停止する必要があるので、この遅延は非常に大きくなる可能性があります。ただし、ほとんどの SMP システムにおけるハードウェアクロストリガの実装により、遅延は最小限であり、数回のプロセッサクロックのサイクルに限定されることが確認されます。
めったにありませんが、1 つのプロセッサが停止し、そのために他のプロセッサが応答できなくなることがあります。例えば、これは、セキュアモードでコードを実行しているプロセッサが一時的にデバッグ機能を無効にしたときに発生することがあります。これが発生すると、[デバッグ制御]ビューに各プロセッサの個々の状態(実行中または停止)が表示されるので、停止できなかったプロセッサを確認できます。すべてのプロセッサが停止するまで、後続の実行およびステップ実行操作を正常に動作できない場合があります。

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

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

ターゲットの状態の検査

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

トレース

トレースのサポートが有効になる接続を使用している場合は、 [トレース]ビューを使用して、システム内の各プロセッサのトレースを表示できます。
デフォルトでは、[トレース]ビューには、[デバッグ制御]ビューで現在選択されているプロセッサのトレースが表示されます。あるいは、[トレース]ビューの[Linked: context]ツールバーオプションを使用することで、その[トレース]ビューを特定のプロセッサにリンクすることを選択できます。特定のプロセッサにリンクされる複数の[トレース]ビューを作成すると、複数のプロセッサからトレースを同時に表示できるようになります。

さまざまな[トレース]ビューのインデックスは、別のプロセッサと同じ時点を表しているとは限りません。
非機密扱いPDF file icon PDF 版ARM DUI0446WJ
Copyright © 2010-2015 ARM.All rights reserved.