mipsEJTAGプロファイル
Mips Ejtag Profile
EJTAG : MIPS拡張 JTAGの。 IEEE 1149.1 JTAGテストアクセスポート(TAP)標準によって提供されるインフラストラクチャを活用して外部インターフェイスを提供し、MIPS命令セットと特権リソースアーキテクチャを拡張して、統合システムデバッグ用の標準ソフトウェアアーキテクチャを提供します。 Mips 公式リファレンスドキュメント: http://www.t-es-t.hu/download/mips/md00047f.pdf その他の参考資料: http://www.loongnix.org/ftp/embed/ls1b/ejtag/ejtag.pdf 《 mipsの実行を参照してください 》
この記事を読む前に、以下をお読みください。 jtag インターフェイス規格 .docx
「EJTAG」 サポートをデバッグする前 --- ブレークポイント命令と CP0 観測点 Mips のアーキテクチャ EJTAG 試運転前は、ユニットは長年存在していたように見えたため、次のような従来のデバッグ機能がいくつかあります。 ブレーク 単に例外につながる指令、 CPU しかし、最大4つの観測点、いくつかのハードウェアを実現するためにも CP0 制御レジスタ、各観測点は仮想アドレスを指定し、各フェッチ、ストア、およびロード操作をチェックするために、アドレスが一致した場合に例外をトリガーし、 EJTAG もちろん、ファジーアドレスマッチングではなく、オブザベーションポイントと比較すると、オブザベーションポイントが一般的なトリガーの異常を引き起こした後は、例外処理のデバッグには使用できません。
EJTAGのコンポーネントとオプション EJTAGハードウェアサポートは、MIPSプロセッサコアの拡張、EJTAGテストアクセスポート、デバッグ制御レジスタ、およびハードウェアブレークポイントユニットなど、いくつかの異なるコンポーネントで構成されています。
- EJTAGプロセッサコア拡張
- デバッグ例外とデバッグモード
デバッグモードのアドレス空間 マップされていないアドレス空間へのデバッグモードアクセスは、カーネルモードのアクセスと同じです。マップされたアドレスは、カーネルモードと同様にアクセスできます。 さらに、オプションのキャッシュおよびマップされていないデバッグセグメントdseg(EJTAGエリア)がアドレス範囲0xFFFF FFFF FF20000から0xFFFFFFFF FF3FFFFFに表示されます。これにより、dsegセグメントは互換性セグメントのkseg部分に表示されます。 デバッグレジスタのNoDCRビットの実装に依存する値は、dsegセグメントの存在を示します。dsegセグメントが存在しない場合、デバッグモードのプロセッサからのすべてのトランザクションはカーネルモードのアドレス空間に送られます。デバッグソフトウェアは、dsegセグメントにアクセスする前に、DebugNoDCRビットをチェックする必要があります。
dsegセグメントは、dmseg(EJTAGメモリ)セグメントとdrseg(EJTAGレジスタ)セグメントに細分されます。 dmsegセグメントは、プローブがメモリセグメントにサービスを提供するときに使用されます。 drsegセグメントは、メモリマップドデバッグレジスタにアクセスするときに使用されます。
dmseg(EJTAGメモリ)アドレス範囲へのアクセス
dmsegセグメントアクセスでProbEnが0に等しい場合、デバッグソフトウェアがdmsegセグメントにアクセスしました ProbEnビットが0の場合、要求を処理するために使用できるプローブがないことを示します。デバッグソフトウェアは、dmsegセグメントを参照する前に、DCRレジスタのProbEnビットの状態を読み取る必要があります。ただし、ProbEnが0のときにdmsegセグメントにアクセスすると、ProbEnビットを1としてサンプリングするデバッグソフトウェアとプローブが0にクリアする間に固有の競合が発生する可能性があります。したがって、プローブは、dmsegセグメントへの参照が決してProbEnビットが動的に0にクリアされた場合に発生します。ProbEnが0のときにデバッグソフトウェアがdmsegセグメントを参照すると、プローブが満たされるまで参照がハングします。 drseg(EJTAGレジスタ)アドレス範囲へのアクセス
drsegからの命令フェッチは許可されていません。プロセッサがdrsegセグメントからの命令フェッチを試行した場合、プロセッサの動作は未定義です。 デバッグレジスタのNoDCRビットが0の場合、プロセッサがdrsegセグメント全体へのアクセスを許可されていることを示しているため、drsegセグメント内のすべてのトランザクションに対して応答が発生します。 drsegセグメントのオフセット0x0000にあるDCRレジスタは、dsegセグメントが存在する場合は常に使用可能です。デバッグソフトウェアは、DCRレジスタを読み取って、drsegに存在する他のメモリマップドレジスタを判別することが期待されています。 デバッグモードで発生する例外 リセットとソフトリセット以外のデバッグモードで生成された例外の処理は、デバッグレジスタとDEPCレジスタのみが更新されるという点で、非デバッグモードで生成された例外とは異なります。他のすべてのCP0レジスタは、デバッグモードで発生した例外によって変更されません。例外ベクトルは、デバッグ例外ベクトルと同じです(を参照)。 44ページのセクション2.3.2 )、プロセッサはデバッグモードのままです。 一部の非デバッグモード例外イベントのみが、デバッグモードで例外を引き起こします。残りのイベントはブロックされます。 デバッグ例外ベクトルでハンドラーにネストされたエントリが発生する前に、Debug、DEPC、およびDESAVEレジスタの内容を保存するのはデバッグハンドラーの責任です。ハンドラーは、プロセッサーをデバッグモードに保つために、DERETではなくジャンプ命令によってデバッグ例外ハンドラーに戻ります。 不正確なエラーの例外 デバッグモードでは、命令フェッチまたはデータアクセスのバスエラー、キャッシュエラー、またはマシンチェックが原因で、不正確なエラーの例外が発生する可能性があります。 デバッグレジスタのIECIビットは、デバッグモードへのエントリまたは再エントリ時に不正確なエラー例外をブロックします。デバッグモードとデバッグハンドラーに安全に再入力できるように十分なコンテキストが保存された後、デバッグ例外ハンドラーによって再度有効にすることができます。 命令フェッチバスエラー、データアクセスバスエラー、キャッシュエラー、およびマシンチェックによる保留中の例外は、デバッグレジスタのIBusEP、DBusEP、CacheEP、およびMCheckPビットによって示され制御されます。
- ブレークポイント命令のデバッグ
- EJTAGコプロセッサー0レジスタ
NoDCR: 読み取り専用 ビット 示す dseg それは存在しますか LSMN :お望みならば dseg 消えた、設定 ビット ために 1 、たとえ デバッグ モードも、カバーされるメモリ領域にアクセスするために、 EJTAG ほとんどの制御システムは使用できないため、特定の場所でのみ使用できます ロード/ストア 使用前後の説明 IEXI : この ビット プット 1 不正確な例外が遅れた場合。デフォルトでデバッグモードに入るように設定されている場合。 1 クリア、去る 0 、しかし、あなたはそれが明らかになれば、延期された例外が自宅ですぐに発生することを書くことができます 1 異常異常により遅れる場合 ペンドビット 表示先:
DSS、DBp、DDBL、DDBS、DIB、DINT : 原因 デバッグ 異常の原因、読み取り専用 ビット 、原因を記録します デバッグ 異常な
DExcCode : 記録 デバッグ その他の異常の発生なし デバッグ 例外の原因は、通常の状況では、に記録されています 原因 登録 ExcCode フィールド、最初に入力 デバッグ 異常、未定義のフィールド
- EJTAGテストアクセスポート
ここでいくつかの用語を選択してください データレジスタ(TAP命令DATA、ALL、またはFASTDATA) 読み取り/書き込みデータレジスタは、プロセッサアクセス中のオペコードおよびデータ転送に使用されます。データレジスタの幅は、32ビットプロセッサの場合は32ビット、64ビットプロセッサの場合は64ビットです。 データレジスタで読み取られた値は、書き込みのためのプロセッサアクセスが保留中の場合にのみ有効です。この場合、データレジスタはストア値を保持します。データレジスタに書き込まれた値は、保留中の読み取りに対するプロセッサアクセスが後で終了した場合にのみ使用されます。この場合、書き込まれたデータ値はフェッチまたはロードの値です。この動作は、データレジスタが、以前に書き込まれた値を後で読み取ることができるメモリ位置ではないことを意味します。 アドレスレジスタ(TAP命令ADDRESSまたはALL) 読み取り専用アドレスレジスタは、プロセッサアクセス用のアドレスを提供します。レジスタの幅は、プロセッサ実装の物理アドレスのサイズ(32〜64ビット)に対応します。特定の長さは、他の場所では示されていないため、アドレスレジスタをシフトすることによって決定されます。 レジスタに読み込まれた値は、プロセッサアクセスが保留中の場合は有効です。それ以外の場合、値は未定義です。 レジスタの2つまたは3つのLSBは、EJTAG制御レジスタからのPszフィールドとともに使用され、保留中のプロセッサアクセス転送のサイズとデータ位置を示します。これらのビットは、ロード/ストアによって参照されるアドレスから直接取得されません。 EJTAG制御レジスタ(ECR)(TAP命令制御またはALL) 32ビットEJTAG制御レジスタ(ECR)は、プロセッサリセットとソフトリセットの表示、デバッグモードの表示、アクセスの開始、終了、サイズ、および読み取り/書き込みの表示を処理します。 ECRも: •デバッグベクトルの場所とサービスプロセッサアクセスの表示を制御します。 •デバッグ割り込み要求を許可します。 •プロセッサの低電力モードを示し、および •実装に依存するプロセッサと周辺機器のリセットを可能にします。 Rocc(ビット31)であるリセットがすでに0であるか、同時に0に書き込まれない限り、EJTAG制御レジスタはUpdate-DR状態で更新/書き込みされません。この条件により、リセット後のプロセッサアクセスの適切な処理が保証されます。
- デバッグ制御レジスタ
- ハードウェアブレークポイントユニット
- ハードウェアブレークポイント
- 高速デバッグチャネル
- 複雑なブレークポイントとトリガー(CBT)ブロック
- PCサンプル
- PDtrace
- シングルステップ実行
- EJTAG 制御する方法 CPU
- どのように 調査 (( dmseg )コードを実行する