| |||
Home > 組み込みシステムのデバッグ > AHB バスと APB バスへのアクセスについて |
ARM ベースのシステムでは、バスを使用してプロセッサ、メモリおよびペリフェラルを接続します。 標準的なバスタイプの例には、AMBA ハイパフォーマンスバス(AHB)とアドバンストペリフェラルバス(APB)が含まれます。
システムにより、デバッグインタフェースからこれらのバスにアクセスできる場合があります。 この場合、DS-5 デバッガはベアメタルまたはカールデバッグを実行する際にこれらのバスへのアクセスを提供します。 デバッガ内では、バスは追加のアドレス空間として公開されます。 これらのバスへのアクセスは、プロセッサが実行中に使用できます。
DS-5 デバッガのデバッグセッションで、info memory
コマンドを使用してどのバスが使用できるのかを知ることができます。
このコマンドの出力のアドレス列と説明列に、各アドレス空間の意味とバッガのアクセス方法の説明があります。
これらのバスに対しては、AHB:
と APB:
のアドレス接頭辞を使用して、デバッガのどの場所でもアドレスと式を通常に入力することができます。
たとえば、デバッガが APB アドレス空間を提供すると仮定し、次のコマンドを使用してアドレスゼロの内容を出力できます。
x/1 APB:0x0
バスの正確なトポロジとデバッグインタフェースへの接続はシステムに依存します。 詳細については、ハードウェアの CoreSight 仕様を参照して下い。 通常、これらのバスへのデバッグアクセスはプロセッサをバイパスするため、プロセッサ自身でのメモリマッピングやキャッシュは考慮しせん。 システム内の L2 キャッシュまたは L3 キャッシュなどのその他のキャッシュの前にバスにアクセスするか、または後にアクセスするかなの実装に依存します。 デバッガは、これらのバスにアクセスするとき、システムのキャッシュ間のコヒーレンシを確保しようとはしません。しがって、このことを考慮して、必要に応じて削除またはフラッシュ操作を手動で行うのはユーザの責任です。
たとえば、プロセッサレベル 1 のキャッシュを有効にした画像をデバッグするときにキャッシュコヒーレンシを確保するには、アプリケーションードまたはデータを AHB アドレス空間を使用して変更する前に、L1 キャッシュ部分を削除して無効にする必要があります。 これによって、キャシュ内で行われた変更が、そのアドレス空間に書き込まれる前にメモリに書き出され、プロセッサは、実行の再開時に変更内容を正しく読み取るようになります。
割り当てられていないアドレスへのアクセスが未定義でシステムに依存する場合、バスをロックアップする可能性があります。
システム内で定義ずみの特定のアドレスにのみアクセスすることをお勧めします。 memory
コマンドを使用してデバッガ内のメモリ領域を再定義し、アクセス権を変更してアドレスを制御することができます。 x
コマンドに
オプションを付けて使用し、読み出されるメモリ量を制限することができます。count