6.2 AHB、APB、および AXI バスへのアクセスについて

ARM® ベースのシステムでは、バスを使用してプロセッサ、メモリおよびペリフェラルを接続します。標準的なバスタイプの例には、AMBA ハイパフォーマンスバス(AHB)、アドバンストペリフェラルバス(APB)、Advanced eXtensible Interface(AXI)が含まれます。

システムにより、デバッグインタフェースからこれらのバスにアクセスできる場合があります。この場合、DS-5デバッガはベアメタルまたはカーネルデバッグを実行する際にこれらのバスへのアクセスを提供します。デバッガ内では、バスは追加のアドレス空間として公開されます。これらのバスへのアクセスは、プロセッサが実行中か停止しているかに関係なく使用できます。

DS-5デバッガのデバッグセッションで、info memory コマンドを使用してどのバスが使用できるのかを知ることができます。このコマンドの出力のアドレス列と説明列に、各アドレス空間の意味とデバッガのアクセス方法の説明があります。

AHB:APB:、および AXI: を使用できます。のアドレス接頭辞を使用して、デバッガのどの場所でも、通常、アドレスと式を入力することができます。たとえば、デバッガが APB アドレス空間を提供すると仮定し、次のコマンドを使用してアドレスゼロの内容を出力できます。

x/1 APB:0x0

各アドレス空間には、アドレスを構成するビット数で表されるサイズがあります。組み込みデバイスやローエンドデバイスの一般的なアドレス空間のサイズは 32 ビットです。より大容量のメモリを必要とするハイエンドデバイスでは、32 ビットよりも大きい空間が使用される場合があります。例えば、 ARM アーキテクチャ ARMv7 に基づく一部のデバイスでは、プロセッサ内の仮想アドレスは 32 ビットであるにもかかわらず、AXI バスの物理アドレスを 40 ビットに拡張するために LPAE(Large Physical Address Extensions)が使用されます。

バスの正確なトポロジとデバッグインタフェースへの接続はシステムに依存します。詳細については、ハードウェアの CoreSight 仕様を参照してください。通常、これらのバスへのデバッグアクセスはプロセッサをバイパスするため、プロセッサ自身でのメモリマッピングやキャッシュは考慮しません。システム内の L2 キャッシュまたは L3 キャッシュなどのその他のキャッシュの前にバスにアクセスするか、または後にアクセスするかなどの実装に依存します。デバッガは、これらのバスにアクセスするとき、システムのキャッシュ間のコヒーレンシを確保しようとはしません。したがって、このことを考慮して、必要に応じて削除またはフラッシュ操作を手動で行うのはユーザの責任です。

たとえば、プロセッサのLevel 1キャッシュを有効にしたイメージをデバッグするときにキャッシュコヒーレンシを確保するには、アプリケーションコードまたはデータを AHB アドレス空間を使用して変更する前に、L1 キャッシュ部分を削除して無効にする必要があります。これによって、キャッシュ内で行われた変更が、そのアドレス空間に書き込まれる前にメモリに書き出され、プロセッサは、実行の再開時に変更内容を正しく読み取るようになります。

割り当てられていないアドレスへのアクセスが未定義でシステムに依存する場合、バスをロックアップする可能性があります。システム内で定義ずみの特定のアドレスにのみアクセスすることをお勧めします。memory コマンドを使用してデバッガ内のメモリ領域を再定義し、アクセス権を変更してアドレスを制御することができます。x コマンドに count オプションを付けて使用し、読み出されるメモリ量を制限することができます。

非機密扱いPDF file icon PDF 版ARM DUI0446ZJ
Copyright © 2010–2016 ARM.All rights reserved.