App Note Template - Texas Instruments Wiki

Stellaris® LM3S9B96 Microcontroller
5 章 JTAG インターフェイス
。
JAJU117
SPMS182D 翻訳版(5 章)
最新の英語版:
http://www.ti.com/lit/gpn/lm3s9b96
この資料は、Texas Instruments Incorporated(TI)が英文で記述した資料を、皆様のご理解の一助として頂くために日本テキサ
ス・インスツルメンツ(日本 TI)が英文から和文へ翻訳して作成したものです。資料によっては正規英語版資料の更新に対応して
いないものがあります。日本 TI による和文資料は、あくまでも TI 正規英語版をご理解頂くための補助的参考資料としてご使用下
さい。製品のご検討およびご採用にあたりましては必ず正規英語版の最新資料をご確認下さい。TI および日本 TI は、正規英語
版にて更新の情報を提供しているにもかかわらず、更新以前の情報に基づいて発生した問題や障害等につきましては如何なる
責任も負いません
JAJU117
5
JTAG インターフェイス
JTAG (Joint Test Action Group) ポートはIEEE規格で、デジタル集積回路用の テスト・アクセス・ポート (TAP)と バ
ウンダリ・スキャン・アーキテクチャを定義し、関連するテスト・ロジックを制御するための標準化されたシリアル・イン
ターフェイスを提供します。TAP、命令レジスタ (IR)、データ・レジスタ (DR) を使用し、組み立てられたプリント基板の
配線テストや、各部品の製造情報を取得することができます。またJTAG ポートは、I/O ピンの観測や制御、スキャ
ン・テスト、デバッグ等の、テスト容易化設計手法も提供します。
JTAG ポートはTCK、 TMS、 TDI、TDOの4つのピンから成ります。データはシリアル送信され、TDI を通じてデバイ
スに、あるいはTDO を通じてデバイスから送信されます。このデータの解釈は、TAPコントローラの現在のステートに
依存します。JTAG ポートとTAP コントローラの動作の詳細については、IEEE Standard 1149.1-Test Access Port
and Boundary-Scan Architecture を参照してください。
TDO出力をマルチプレクスすることにより、Cortex-M3 コアに組み込まれたARM JTAG コントローラとStellaris®
JTAG コントローラとが連携して機能します。ARM JTAG の命令は ARM TDO 出力を選択し、Stellaris® JTAG 命
令では Stellaris® TDO 出力を選択します。マルチプレクサはStellaris® JTAG コントローラにより制御されます。
Stellaris® JTAG コントローラには、ARM、Stellaris®、および実装されていないJTAG命令用の包括的なプログラミン
グ機能が備わっています。
Stellaris® JTAG モジュールには次のような機能があります。
■ IEEE 1149.1-1990 互換 テスト・アクセス・ポート (TAP) コントローラ
■ JTAG 命令格納用の4ビット 命令レジスタ (IR) チェーン
■ IEEE 標準命令: BYPASS、 IDCODE、 SAMPLE/PRELOAD、 EXTEST、 INTEST
■ ARM 追加命令: APACC、 DPACC、ABORT
■ 組み込み ARM シリアル・ワイヤ・デバッグ (SWD)
– シリアル・ワイヤ JTAG デバッグ・ポート (SWJ-DP)
–ブレークポイント実装用のフラッシュ・パッチ&ブレークポイント(FPB)ユニット
–ウォッチポイント、トリガ・リソース、およびシステム・プロファイリング実装用のデータ・ウォッチポイント&トリガ
(DWT) ユニット
– printf 形式のデバッグをサポートするための計装トレース・マクロセル (ITM: Instrumentation Trace Macrocell)
–トレース・ポート・アナイザへのブリッジ用のトレース・ポート インターフェイス・ユニット (TPIU)
ARM JTAG コントローラの詳細については、ARM® Cortex™-M3 Technical Reference Manual を参照してくださ
い。
Stellaris LM3S9B96 Microcontroller Data Sheet (Rev. D) 5章 翻訳版
5.1 ブロック図
図 5-1. JTAG モジュールのブロック図
5.2 信号の説明
表 5-1と表 5-2にJTAG/SWD コントローラの外部信号を記載し、各機能を説明します。JTAG/SWD コントローラ 信
号 ピンは、GPIO信号ピンの一部をマルチプレクスして使用していますが、リセット・ステート直後はJTAG/SWD 機能
用ピンであることに注意してください。
JTAG/SWD コントローラ 信号は不用意に設定を変更できないようになっており、GPIOとして構成するには特別な処
理が必要になります。詳細は”コミット制御(Commit Control)”を参照してください。下の表中にある「ピン Mux/ピン割
り当て」という見出しの列には、JTAG/SWD コントローラ 信号用のGPIOピンの配置が記載されています。
JTAG/SWD 機能を選択するには、GPIO 代替機能選択(GPIOAFSEL) レジスタにある AFSEL ビットを設定します。
カッコ内の数字は、GPIOポート制御(GPIOPCTL)レジスタ の PMCn フィールド中にプログラムする数値コードで、指
定されたGPIOポート・ピンにJTAG/SWD コントローラ信号を割り当てるために必要です。GPIOの構成の詳細につい
ては、“General-Purpose Input/Outputs (GPIOs)”の章を参照してください。
表 5-1. JTAG_SWD_SWO (100LQFP)の信号
ピン名
SWCLK
SWDIO
SWO
TCK
TDI
TDO
TMS
a.
ピン番号
80
79
77
80
78
77
79
ピンMux /
ピン割り当て
PC0 (3)
PC1 (3)
PC3 (3)
PC0 (3)
PC2 (3)
PC3 (3)
PC1 (3)
a
ピンのタイプ
バッファのタイプ
I
I/O
O
I
I
O
I
TTL
TTL
TTL
TTL
TTL
TTL
TTL
説明
JTAG/SWD CLK.
JTAG TMS と SWDIO.
JTAG TDO と SWO.
JTAG/SWD CLK.
JTAG TDI.
JTAG TDO と SWO.
JTAG TMS と SWDIO.
バッファのタイプの列に記載されているTTLとは、ピンがTTL互換の電圧レベルを持っていることを示しています。
表 5-2. JTAG_SWD_SWO (108BGA)の信号
ピン名
SWCLK
SWDIO
SWO
TCK
TDI
TDO
TMS
a.
ピン番号
A9
B9
A10
A9
B8
A10
B9
ピンMux /
ピン割り当て
PC0 (3)
PC1 (3)
PC3 (3)
PC0 (3)
PC2 (3)
PC3 (3)
PC1 (3)
a
ピンのタイプ
バッファのタイプ
I
I/O
O
I
I
O
I
TTL
TTL
TTL
TTL
TTL
TTL
TTL
説明
JTAG/SWD CLK.
JTAG TMS と SWDIO.
JTAG TDO と SWO.
JTAG/SWD CLK.
JTAG TDI.
JTAG TDO と SWO.
JTAG TMS と SWDIO.
バッファのタイプの列に記載されているTTLとは、ピンがTTL互換の電圧レベルを持っていることを示しています。
5.3 機能の説明
図5-1は、概念的に示したJTAGモジュールのブロック図です。JTAG モジュールは、テスト・アクセス・ポート (TAP) コ
ントローラと、パラレル更新レジスタを持つシリアル・シフト・チェーンから成ります。TAP コントローラは、TCK 入力と
TMS 入力で制御される単純なステート・マシンです。
TAP コントローラの現在のステートは、TCKの立ち上がりエッジ時にサンプリングされたTMSのシーケンスの値に
よって決まります。TAP コントローラは、シリアル・シフト・チェーンが新しいデータをキャプチャすると、データをTDI か
ら TDO へシフトさせたり、パラレル・ロード・レジスタを更新したりします。また、TAP コントローラの現在のステートに
従い、インストラクション・レジスタ (IR)・チェーンあるいはデータ・レジスタ (DR)・チェーンのどちらにアクセスするかが
決まります。
パラレル・ロード・レジスタが付いているシリアル・シフト・チェーンは、ひとつの命令レジスタ (IR) チェーンと、複数の
データ・レジスタ (DR) チェーンから成ります。パラレル・ロード・レジスタにロードされている現在の命令により、TAP
コントローラの配列中にどのDRチェーンが取り込まれるか、シフトされるか、更新されるかが決定されます。
EXTEST や INTESTのように、現在DRチェーンにあるデータに対して動作し、どのチェーンの捕捉、シフト、更新も行
わない命令もあります。実装されていない命令は、BYPASS 命令に対してデコードを行い、TDI~TDO間のシリア
ル・パスが常に確実に接続されるようにします。 (実装されている命令については、表 5-4にのリストを参照してくださ
い)
JTAG のタイミング図については、“JTAG and Boundary Scan”を参照してください。
注: すべての可能なリセット・ソースのうち、JTAG モジュールに影響するのはパワーオン・リセット (POR) と
入
力の アサート(アクティブ化) のみです。ピン構成は
入力と POR の両方によりリセットされますが、内部 JTAG ロ
ジックはPORでのみリセットされます。リセットの詳細については、P 103 “Reset Sources”を参照してください。
5.3.1 JTAG インターフェイスのピン
JTAG インターフェイスは、標準的にはTCK、TMS、TDI、TDO の4ピンで構成されます。パワーオン・リセットまたは
入力によるリセット後の、これら4ピンの状態を表5-3 に掲載します。
これらのピンのコンフィグレーションをリプログラムする方法については、“General-Purpose Input/Outputs (GPIOs)”
を参照してください。
表 5-3. パワーオン・リセットまたは
ピン Name
TCK
TMS
TDI
TDO
データ方向
入力
入力
入力
出力
内部プルアップ
イネーブル
イネーブル
イネーブル
イネーブル
アサート後のJTAG ポートのピン・ステート
内部プルダウン
ディセーブル
ディセーブル
ディセーブル
ディセーブル
駆動力
N/A
N/A
N/A
2mA ドライバ
駆動値
N/A
N/A
N/A
高Z
5.3.1.1 テスト・クロック入力 (TCK)
TCK ピンは、JTAG モジュール用のクロックです。このクロックを提供することで、テスト・ロジックは他のどのシステ
ム・クロックからも独立して動作します。また、互いにデイジーチェーン接続された複数のJTAG TAP コントローラは、
コンポーネント間でシリアル・テスト・データを同期通信できるようになります。
通常動作では、TCK は50%デューティ・サイクルの自走クロックで駆動されます。また、必要に応じて、TCK を一定
時間0または1で停止しておくことも可能です。TCKが0または1で停止されている間、TAP コントローラのステートは変
化せず、JTAG インストラクション・レジスタとデータ・レジスタにあるデータは保持されます。
デフォルトでは、リセット後にTCKピンの内部プルアップ抵抗がイネーブルになり、ピンが外部信号源から駆動されな
い限りクロッキングが発生しないようになっています。内部プルアップ抵抗と内部プルダウン抵抗をオフにして、TCK
ピンが外部信号源に駆動されている間の内部消費電力を低減することも可能です。
5.3.1.2 テスト・モードの選択 (TMS)
TMS ピンは、JTAG TAP コントローラの次のステートを選択する信号です。TMS は、TCKの立ち上がりエッジでサン
プリングされます。現在の TAP のステートとサンプリングされたTMSの値に応じて、次のステートが選択されます。
TMS ピンはTCKの立ち上がりエッジでサンプリングされるため、IEEE Standard 1149.1では、TMS の値 がTCK の
立ち下りエッジで変化することを求めています。
連続した 5 TCK サイクルの間 TMS をHigh に保持することにより、TAP コントローラのステート・マシンはTest Logic
Reset (テスト・ロジックのリセット) ステートへ移ります。TAP コントローラがTest Logic Reset (テスト・ロジックのリ
セット) ステートに入ると、JTAG モジュールと関連レジスタがデフォルト値にリセットされます。この手順の実行で、
JTAG コントローラが初期化されます。JTAG テスト・アクセス・ポートのステート・マシンの全体は、図 5-2 で見ること
ができます。
デフォルトでは、リセット後にTMS ピンの内部プルアップ抵抗がイネーブルになります。GPIO ポート C のプルアップ
抵抗の設定値(settings)を変更した場合には、PC1/TMSピンの内部プルアップ抵抗はイネーブルの設定のままであ
ることを確認します。そうでない場合は、JTAG の通信が途切れる可能性があります。
5.3.1.3 テスト・データの入力 (TDI)
TDI ピンは、シリアルデータ化されたJTAGのインストラクションやデータを、インストラクション・レジスタ(IR)チェーン
やデータ・レジスタ(DR)チェーンに送り込みます。TDIは、TCK の立ち上がりエッジでサンプリングされ、現在のTAP
ステートと命令に従って、送り込まれたデータを適切なシフト・レジスタ・チェーンに渡します。TDI ピンはTCKの立ち上
がりエッジでサンプリングされるため、IEEE Standard 1149.1 では、TDI の値 がTCK の立ち下りエッジで変化する
ことを求めています。
デフォルトでは、リセット後にTDI ピンの内部プルアップ抵抗がイネーブルになります。GPIO ポート C でのプルアップ
抵抗の設定値(settings)を変更した場合には、PC2/TDI ピンの内部プルアップ抵抗はイネーブルの設定のままであ
ることを確認します。そうでない場合は、JTAG の通信が途切れる可能性があります。
5.3.1.4 テスト・データの出力 (TDO)
TDO ピンからは、IR チェーンまたはDR チェーンからのJTAGインストラクションやデータがシフトアウトされます。
TDOの値は、現在のTAPステートと命令、アクセスしているチェーンにあるデータに依存します。JTAG ポートが使用
されていない時の消費電力低減のため、データをシフトアウトさせていない時のTDO ピンの駆動ステートは非アク
ティブになります。TDOは、デイジーチェーンで他のTAPコントローラのTDIに接続可能なため、IEEE Standard
1149.1 では、TDO の値が TCKの立ち下がりエッジで変化することを求めています。
デフォルトでは、リセット後にTDO ピンの内部プルアップ抵抗がイネーブルになり、JTAGポートが使用されていない
時にはピンが一定の論理レベルに保たれるようになります。TAP コントローラのステート遷移においてHi-Z 出力が許
される場合には、内部プルアップ抵抗と内部プルダウン抵抗をオフにすることで内部消費電力を低減することも可能
です。
5.3.2 JTAG TAP コントローラ
図 5-2はJTAG TAP コントローラのステート・マシンです。TAP コントローラのステート・マシンは、パワーオン・リセット
(POR)がアクティブの時に、Test Logic Reset ステートに遷移します。マイクロコントローラが起動された後にJTAG
モジュールをリセットするには、5TCK クロック・サイクルの間TMS 入力をHIGHに保持します。これにより、TAP コン
トローラおよび関連するすべてのJTAGチェーンがリセットされます。TMS ピンに適切なシーケンスをアサートすること
により、JTAG モジュールは、新しい命令をシフトしたり、データをシフトしたり、特別なテストシーケンスのために一定
時間アイドリングに留まらせることが可能になります。TAP コントローラの機能と各ステートでの動作の詳細について
は、IEEE Standard 1149.1 を参照してください。
図 5-2. テスト・アクセス・ポートのステート・マシン
5.3.3 シフト・レジスタ
シフト・レジスタは、シリアル・シフト・レジスタ・チェーンとパラレル・ロード・レジスタから構成されます。シリアル・シフ
ト・レジスタ・チェーンはTAP コントローラのCAPTUREステートでは取り込みたい情報(テストデータやインストラクショ
ン)をサンプリングし、TAP コントローラのSHIFTステートではシリアル・シフト・レジスタ・チェーン上の情報(テスト結
果等)をTDO方向へ1ビットシフトアウトします。
シリアル・シフト・レジスタ・チェーンでは、TDOからサンプリングされたデータがシフトアウトすると同時に、新しいデー
タがTDIからシリアル・シフト・レジスタの中にシフトインされます。この新しいデータは、TAP コントローラのUPDATE
ステートでパラレル・ロード・レジスタに格納されます。
各シフト・レジスタについては“レジスタの説明”で詳細に解説されています。
5.3.4 動作に関する考慮事項
JTAG モジュールを使用する場合に考慮が必要な動作パラメータがあります。JTAG ピンをプログラミングしてGPIO
にすることも可能であるため、これらのピンに関してのボード構成とリセット条件を考慮する必要があります。加えて、
JTAG モジュールにはARM シリアル・ワイヤ・デバッグ(SWD)が組み込まれているため、次のセクションではこの2
つの動作モードの切り替え方法を説明します。
5.3.4.1 GPIOの機能
マイクロコントローラがPOR または
のどちらかでリセットされると、デフォルト・コンフィグレーションでは
JTAG/SWD ポート・ピンは(GPIOとしてではなく)JTAG/SWDとして使用するようコンフィグレーションされます。さら
に、デフォルト・コンフィグレーションでは、
JTAG/SWD ピンのデジタル機能(digital functionality)のイネーブル (ポート C GPIO デジタル・イネーブル
(GPIODEN) レジスタに設定されたDEN[3:0])、プルアップ抵抗のイネーブル (ポート C GPIO プルアップ選択
(GPIOPUR) レジスタに設定されたPUE[3:0])、プルダウン抵抗のディセーブル (ポート C GPIO プルダウン選択
(GPIOPDR) レジスタでクリアされたPDE[3:0])、代替ハードウェア機能のイネーブル (ポート C GPIO 代替機能選択
(GPIOAFSEL) レジスタに設定されたAFSEL[3:0])です。
ソフトウェアでは、ポート C GPIOAFSEL レジスタのAFSEL[3:0] をクリアすることにより、リセット後にこれらのピンを
GPIOとして構成することが可能です。デバッグやボードレベルのテスティングにJTAG/SWD ポートを必要としない場
合は、これによりさらに4つのGPIOが設計で使用できるようになります。
注意 – デバッガがStellaris®マイクロコントローラに接続できないようにするソフトウェア・シーケンスを作成すること
も可能です。フラッシュ・メモリにロードされたプログラム・コードによりJTAG ピンの機能が即座にGPIOに変更された
場合、デバッガがコントローラに接続して停止させるための十分な時間が、JTAG ピン機能の切り替え前に取れない
こともあります。その結果、デバッガがその部分からロックアウトされる可能性があります。この問題は、外部的なトリ
ガまたはソフトウェア・トリガに基づいてJTAG 機能を回復させるソフトウェア・ルーチンを使用すれば回避できます。
GPIO 保護(Commit Control)レジスタでは、予期しないプログラミングから重要なハードウェア・ペリフェラルを保護
する機能のレイヤを提供します。保護機能は現在、NMI ピン (PB7)および4つのJTAG/SWD ピン (PC[3:0]) に提供
されています。GPIO ロック (GPIOLOCK) レジスタのロックが解除されないかぎり、またGPIO コミット (GPIOCR) レ
ジスタの適切なビットが設定されていないかぎり、GPIO 代替機能選択(GPIOAFSEL) レジスタ、GPIO プルアップ選
択 (GPIOPUR) レジスタ、GPIO プルダウン選択 (GPIOPDR) レジスタ 、GPIO デジタル・イネーブル (GPIODEN)
レジスタの保護ビットへの書き込みは行われません。
5.3.4.2 JTAG/SWDとの通信
デバッグ・クロックとシステム・クロックは異なる周波数で動作することも可能なため、JTAG/SWDインターフェイスとの
確実な通信を維持するように注意する必要があります。Capture DRステートでは、3ビットのACK応答とともに、前回
のトランザクションの結果(存在する場合)が返されます。新しいトランザクションを開始する前に、ソフトウェアでは
ACK応答をチェックして、前回の動作が完了したことを確認する必要があります。システム・クロックの速度が、少なく
ともデバッグ・クロック(TCK か SWCLK)速度の1/8であれば、前回の動作が完了する時間が十分にあるため、ACK
ビットをチェックする必要はありません。
5.3.4.3 "ロックされた" マイクロコントローラの復元
注: 下に述べるシーケンス(手順)を行うと、“Nonvolatile Register Programming” で説明した不揮発性レジスタ
が工場出荷時設定の値に戻ります。このシーケンスによって、不揮発性レジスタが回復されるより前に、フラッ
シュ・メモリの大量消去が発生します。
ソフトウェアにより任意のJTAG/SWD ピンがGPIO として構成され、デバッガとの通信機能がなくなった場合に、マイ
クロコントローラの復元に使用できるデバッグ・シーケンスがあります。マイクロコントローラをリセット状態に保持しな
がら、合計10のJTAG-SWD および SWD-JTAG スイッチ・シーケンスを実行することで、フラッシュ・メモリを大量消
去できます。マイクロコントローラを復元するためのシーケンスは次の通りです。
1.
信号をアサートして保持します。
2. P 97のセクション “JTAG-SWD Switching” に記載のJTAG-SWD スイッチ・シーケンスの ステップ1と2を実行しま
す。
3. P 97のセクション “SWD-JTAG Switching” に記載のSWD-JTAG スイッチ・シーケンスの ステップ1と2を実行しま
す。
4. JTAG-to-SWD スイッチ・シーケンスのステップ1と2を実行します。
5. Perform steps 1 and 2 of the SWD-to-JTAG スイッチ・シーケンスのステップ1と2を実行します。
6. Perform steps 1 and 2 of the JTAG-to-SWD スイッチ・シーケンスのステップ1と2を実行します。
7. Perform steps 1 and 2 of the SWD-to-JTAG スイッチ・シーケンスのステップ1と2を実行します。
8. Perform steps 1 and 2 of the JTAG-to-SWD スイッチ・シーケンスのステップ1と2を実行します。
9. Perform steps 1 and 2 of the SWD-to-JTAG スイッチ・シーケンスのステップ1と2を実行します。
10. Perform steps 1 and 2 of the JTAG-to-SWD スイッチ・シーケンスのステップ1と2を実行します。
11. Perform steps 1 and 2 of the SWD-to-JTAG スイッチ・シーケンスのステップ1と2を実行します。
12.
信号を解放します。
13. 400 ms 間待機します。
14. マイクロコントローラの電源を切断し、再度起動します。
5.3.4.4 ARM シリアル配線デバッグ (SWD)
ARM シリアルワイヤデバッグ (SWD) 機能をシームレスに組み込むには、JTAG サイクルを行わなくても、または
JTAG サイクルの知識がなくても、シリアルワイヤデバッガをCortex-M3 コアに接続することが可能になっている必要
があります。SWDセッションが始まる前に発行されるSWDプリアンブルを使用すれば、この組み込みを実現できます。
SWJ-DP モジュールのSWD インターフェイスをイネーブルにするために使用されるスイッチング・プリアンブルは、
TAP コントローラがTest Logic Reset ステートで始まります。ここから、プリアンブルはTAP コントローラを次に述べ
るステートに遷移させます。Run Test Idle 、 Select DR、 Select IR、 Test Logic Reset 、 Test Logic Reset、 Run
Test Idle、 Run Test Idle、 Select DR、 Select IR、 Test Logic Reset、 Test Logic Reset、 Run Test Idle、 Run
Test Idle、 Select DR、 Select IR、Test Logic Reset states。
TAP ステート・マシンの上記のシーケンスを通して行うことで、SWD インターフェイスがイネーブルになり、JTAG イン
ターフェイスがディセーブルになります。この動作とSWD インターフェイスの詳細については、ARM® Cortex™-M3
Technical Reference Manual and the ARM® CoreSight Technical Reference Manual を参照してください。
前述のシーケンスは、JTAG 動作中に発行される可能性のあるシーケンスなので、厳密に言えばARM JTAG TAP
コントローラ はIEEE Standard 1149.1.に完全に準拠しているわけではありません。なお、このインターフェイスは、
ARM JTAG TAP コントローラ が仕様に完全に準拠していない唯一のケースです。TAP コントローラの通常の動作
時にこのシーケンスが発生する可能性は低いため、JTAG インターフェイスの通常のパフォーマンスに影響を与える
ことはないはずです。
JTAG-SWD スイッチング
デバッグ・アクセス・ポート (DAP) の動作モードをJTAGモードからSWDモードに切り替えるには、外部デバッグ・ハー
ドウェアでスイッチング・プリアンブルをマイクロコントローラに送信する必要があります。SWD モードへの切り替え用
の16ビットTMSコマンドは b1110.0111.1001.1110と定義され、最初にLSB が送信されます。なお、このコマンドは
0xE79E とも表現できます。完全なスイッチ・シーケンスは、次に示すTCK/SWCLK 信号と TMS/SWDIO 信号のトラ
ンザクションで構成する必要があります。
1.
TMS/SWDIO信号がHigh の状態で、最低50 TCK/SWCLK サイクルを送信し、JTAG と SWD が両方ともリ
セット・ステート/アイドル・ステートになるようにします。
2.
16ビット JTAG-SWD スイッチ・コマンド 0xE79Eを TMSで送信します。
3.
TMS/SWDIO信号がHigh の状態で、最低50 TCK/SWCLK サイクルで送信し、SWJ-DPがすでにSWD モード
にある場合はスイッチ・シーケンスを送信する前にSWD がライン・リセット・ステートに入るようにします。
SWD-JTAG スイッチング
デバッグ・アクセス・ポート (DAP) の動作モードをSWDモードからJTAG モードに切り替えるには、外部デバッグ・
ハードウェアでスイッチ・コマンドをマイクロコントローラへ送信する必要があります。JTAG モードへの切り替え用の
16ビットTMS コマンドはb1110.0111.0011.1100と定義され、最初にLSB が送信されます。
なお、このコマンドは0xE73Cとも表現できます。完全なスイッチ・シーケンスは、次に示すTCK/SWCLK信号と
TMS/SWDIO 信号のトランザクションで構成する必要があります。
4.
1. TMS/SWDIO信号がHigh の状態で、最低50 TCK/SWCLK サイクルを送信し、JTAG と SWD が両方ともリ
セット・ステート/アイドル・ステートになるようにします。
5.
2. 16ビットSWD- JTAG スイッチ・コマンド 0xE73Cを TMSで送信します。
6.
3. TMS/SWDIO信号がHigh の状態で、最低50 TCK/SWCLK サイクルで送信し、SWJ-DP がすでにJTAG
モードにある場合はスイッチ・シーケンスを送信する前にJTAG がTest Logic Reset ステートに入るようにします。
5.4 初期化と構成
パワーオン・リセットまたは外部リセット (
)後、JTAG ピンは自動的にJTAG 通信に設定されます。ユーザー定義
の初期化やコンフィグレーションは必要ありません。ただし、ユーザーのアプリケーションでこれらのピンをGPIO 機能
に変更した場合は、JTAG 通信が回復される前にこれらを元のJTAG 機能に構成し直す必要があります。ピンを
JTAG 機能に戻す場合は、GPIOAFSEL レジスタを使用して4つのJTAG ピン(PC[3:0]) の代替機能をイネーブルに
してください。
代替機能のイネーブルの他にも、4つのJTAG ピン (PC[3:0]) のGPIOパッド構成に対する変更はどれもデフォルトの
設定に戻す必要があります。
5.5 レジスタの説明
JTAG TAP コントローラ またはシフト・レジスタ・チェーンのレジスタにはメモリ割り当てがされていないため、オンチッ
プのAPB (Advanced Peripheral Bus) を介してアクセスすることはできません。その代わり、TAP コントローラを介し
てJTAG コントローラ内の全レジスタにシリアルにアクセスできます。これらのレジスタは、命令レジスタと6つのデー
タ・レジスタからなります。
5.5.1 命令レジスタ (IR)
JTAG TAP 命令レジスタ (IR)は、JTAGの TDI ピン~ TDO ピン間で接続された、パラレル・ロード・レジスタを備えた
4ビットのシリアル・スキャン・チェーンです。TAP コントローラが正しいステートになると、ビットをIRにシフトできるよう
になります。これらのビットがチェーンにシフトされて更新されると、現在の命令として解釈されます。表5-4はIR ビット
のデコードです。表に続くセクションで、各命令の詳細を関連データ・レジスタとともに説明します。
表 5-4. JTAG 命令レジスタのコマンド
IR[3:0]
0x0
命令
EXTEST
0x1
INTEST
0x2
SAMPLE /
PRELOAD
0x8
0xA
0xB
0xE
0xF
その他す
べて
ABORT
DPACC
APACC
IDCODE
BYPASS
予約
説明
SAMPLE/PRELOAD 命令によりバウンダリ・スキャン・チェーンにプリロードされた値を駆動してパッドに送りま
す。
SAMPLE/PRELOAD命令によりバウンダリ・スキャン・チェーンにプリロードされた値を駆動してコントローラに
送ります。
新しいプリロード・データがバウンダリ・スキャン・チェーンにシフトインされている間、現在の I/O 値を捕捉し、サ
ンプリングされた値をバウンダリ・スキャン・チェーンからシフトアウトします。
ARM デバッグ・ポートのアボート・レジスタにデータをシフトします。
ARM DP アクセス・レジスタの内外にデータをシフトします。
ARM AC アクセス・レジスタの内外にデータをシフトします。
IEEE Standard 1149.1で定義されたメーカー情報をIDCODEチェーンにロードし、シフトアウトします。
単体のシフト・レジスタ ・チェーンを介して TDI を TDOに接続します。
デフォルトのBYPASS 命令に戻り、 TDI が常時TDO に接続されているようにします。
5.5.1.1 EXTEST 命令
EXTEST 命令は、データ・レジスタ・チェーンには関連付けられていません。代わりに、EXTEST 命令では、
SAMPLE/PRELOAD 命令でバウンダリ・スキャン・データ・レジスタにプリロードされたデータを使用します。命令レジ
スタにEXTEST 命令 が取り込まれると、出力イネーブルと入力イネーブルに関連付けられたバウンダリ・スキャン・
データ・レジスタ内のプリロードされたデータを使用して、GPIOパッドをドライブします(コアから来る信号は使用しな
い)。既知の値をコントローラから送信するテストでは、この 命令を使用してコネクティビティを検証できます。
EXTEST 命令が命令レジスタに存在している間は、バウンダリ・スキャン・データ・レジスタにアクセスして現在のデー
タをサンプリングしてシフトアウトし、新しいデータをバウンダリ・スキャン・データ・レジスタにロードすることが可能にな
ります。
5.5.1.2 INTEST 命令
INTEST 命令は、データ・レジスタ・チェーンには関連付けられていません。代わりに、INTEST 命令では、
SAMPLE/PRELOAD 命令でバウンダリ・スキャン・データ・レジスタにプリロードされたデータを使用します。命令レジ
スタにINTEST 命令 が取り込まれると、入力に関連付けられたバウンダリ・スキャン・データ・レジスタ内にプリロード
されたデータを使用して、内部コアへ入る信号をドライブします(GPIOパッドから来る信号は使用しない)。既知の値
をコントローラへ送信するテストでは、この命令をテストに使用できます。RST 入力ピンは バウンダリ・スキャン・デー
タ・レジスタ・チェーンに接続していますが、観測のみが可能であることに注意する必要があります。
INTEST 命令が命令レジスタに存在している間は、バウンダリ・スキャン・データ・レジスタにアクセスして現在のデー
タをサンプリングしてシフトアウトし、新しいデータをバウンダリ・スキャン・データ・レジスタにロードすることが可能にな
ります。
5.5.1.3 SAMPLE/PRELOAD 命令
SAMPLE/PRELOAD 命令 は、バウンダリ・スキャン・データ・レジスタ・チェーンをTDI ~ TDO 間で接続します。この
命令では、現在のピンの状態をサンプリングし確認したり、新しいテスト・データをプリロードします。各GPIOパッドに
はそれぞれ、関連する入力信号、出力信号、出力イネーブル信号があります。この命令の実行時にTAP コントローラ
のステートがCapture DR の場合、各GPIOパッドにおいて入力信号、出力信号、出力イネーブル信号がキャプチャさ
れます。TAP コントローラのステート が Shift DR ステートの場合、サンプルされた信号はTDO 方向にシリアルにシ
フトアウトされ、各種テストでの観測や比較に使用できます。
入力信号、出力信号、出力イネーブル信号がサンプルされバウンダリ・スキャン・データ・レジスタからシフトアウトされ
ていると同時に、新しいデータがTDI からバウンダリ・スキャン・データ・レジスタにシフトインされます。TAP コントロー
ラのステートがUpdate DR の場合、バウンダリ・スキャン・データ・レジスタにシフトインされた新しいデータはパラレ
ル・ロード・レジスタに保存されます。このパラレル・ロード・レジスタの更新により、入力信号、出力信号、出力イネー
ブル信号にそれぞれ関連付けられたバウンダリ・スキャン・データ・レジスタにデータがプリロードされます。このプリ
ロードされたデータをEXTEST と INTEST 命令とともに使用して、コントローラの内外にデータを送信できます。詳細
については、“バウンダリ・スキャン・データ・レジスタ” を参照してください。
5.5.1.4 ABORT 命令
ABORT 命令は、アボート・データ・レジスタ・チェーンをTDI ~ TDO 間で接続します。この命令は、ARM デバッグ・
アクセス・ポート (DAP)のアボート・レジスタを読み書きします。正しいデータをこのデータ・レジスタにシフトすることに
より、各種エラー・ビットをクリアしたり、前回のリクエストのDAP アボートを初期化することができます。詳細について
は、“ABORT データ・レジスタ” を参照してください。
5.5.1.5 DPACC 命令
DPACC 命令は、DPACC データ・レジスタ・チェーンをTDI ~ TDO 間で接続します。この命令は、ARM デバッグ・ア
クセス・ポート (DAP)のDPACC レジスタを読み書きします。このレジスタに正しいデータをシフトし、このレジスタから
出力されるデータを読み取ることにより、ARM デバッグ・レジスタとステータス・レジスタの読み取りと書き込みが可能
になります。詳細については、“DPACC データ・レジスタ” を参照してください。
5.5.1.6 APACC 命令
APACC 命令 は、APACC データ・レジスタ・チェーンをTDI ~ TDO 間で接続します。この命令は、ARM デバッグ・
アクセス・ポート (DAP)のAPACC レジスタを読み書きします。このレジスタに正しいデータをシフトし、このレジスタか
ら出力されるデータを読み取ることにより、内部部品およびデバッグ・ポートを通るバスの読み取りと書き込みが可能
になります。詳細については、“APACC データ・レジスタ” を参照してください。
5.5.1.7 IDCODE 命令
IDCODE 命令は、IDCODE データ・レジスタ・チェーンをTDI ~ TDO 間で接続します。この命令は、メーカー、部品
番号、ARMコアのバージョンの情報を提供します。テスト装置とデバッガは、これらの情報を使用して入力および出力
データ・ストリームを自動構成します。IDCODEは、パワーオン・リセット(POR) がアサートされた時か、Test Logic
Reset (テスト・ロジックのリセット) ステートに入った時に、JTAG 命令レジスタにロードされるデフォルトの命令です。
詳細については、“IDCODE データ・レジスタ” を参照してください。
5.5.1.8 BYPASS 命令
BYPASS 命令は、BYPASS データ・レジスタ・チェーンをTDI ~ TDO 間で接続します。この命令を使用して、TDI
ポート~TDOポート間に最小限の長さのシリアル・パスを作成します。BYPASS データ・レジスタは、シングルビット
のシフト・レジスタです。この命令は、テストの効率を向上させます。BYPASS 命令により、JTAG スキャン・チェーン
でテストする必要のない個別部品をバイパスできるようになります。詳細については、“BYPASS データ・レジスタ” を
参照してください。
5.5.2 データ・レジスタ
JTAGモジュールには、6つのデータ・レジスタが含まれます。これらのシリアル・データ・レジスタ・チェーンには、
IDCODE、 BYPASS、 バウンダリ・スキャン、 APACC、 DPACC、 ABORT が含まれます。これらについて、以降の
セクションで説明します。
5.5.2.1 IDCODE データ・レジスタ
図 5-3は、IEEE Standard 1149.1 で定義された32ビットIDCODE データ・レジスタのフォーマットです。IEEE
Standard 1149.1では、JTAG準拠のマイクロコントローラはIDCODE 命令か BYPASS 命令をデフォルトの命令とし
て実装することを要求しています。BYPASS 命令(0というLSBを持つ)と区別するために、IDCODE データ・レジスタ
のLSBは1になるように定義されます。この定義により、どの命令がデフォルト命令かをオート・コンフィグレーション・
テスト・ツールが判断できるようになります。
JTAG ポートは、メーカーによる部品組み立てとプログラム開発とデバッグのテストに主に使用されます。オート・コン
フィグレーション・デバッグ・ツールを使用しやすくするために、IDCODE 命令は 0x4BA0.0477 という値を出力します。
この値により、デバッガが自身を自動的にコンフィグレーションして、デバッグ中にCortex-M3とともに正しく動作する
ことが可能になります。
図 5-3. IDCODE レジスタのフォーマット
5.5.2.2 BYPASS データ・レジスタ
図 5-4は、IEEE Standard 1149.1で定義された1ビット BYPASS データ・レジスタのフォーマットです。IEEE
Standard 1149.1では、どのJTAG準拠のマイクロコントローラでもBYPASS 命令かIDCODE 命令をデフォルトの命
令として実装することを要求しています。IDCODE 命令(1というLSBを持つ)と区別するために、BYPASS データ・レ
ジスタのLSBは0になるように定義されます。この定義により、どの命令がデフォルト命令かをオート・コンフィグレー
ション・テスト・ツールが判断できるようになります。
図 5-4. BYPASS レジスタのフォーマット
5.5.2.3 バウンダリ・スキャン・データ・レジスタ
図 5-5は、バウンダリ・スキャン・データ・レジスタのフォーマットです。JTAG ポート・ピンの隣のGPIO ピンは、バウン
ダリ・スキャン・データ・レジスタに含まれています。各 GPIO ピンには、バウンダリ・スキャン・チェーンに含まれる3つ
のデジタル信号があります。これらの信号は、入力信号、出力信号、出力イネーブル信号であり、図に示す通りの順
序で配置されています。
SAMPLE/PRELOAD 命令によりバウンダリ・スキャン・データ・レジスタがアクセスされると、各デジタル・パッドから
の入力信号、出力信号、出力イネーブル信号がサンプリングされ、その後チェーンからシフトアウトされ、サンプリング
したデータは検証に使われます。TAP コントローラがCapture DR ステートの場合に、TCK の立ち上がりエッジでこ
れらの値のサンプリングが行われます。TAP コントローラがShift DRステートの場合、サンプリングされたデータがバ
ウンダリ・スキャン・チェーンからシフトアウトされると同時に、チェーンには新しいデータがプリロードされEXTEST お
よび INTEST 命令において使用することが可能です。EXTEST 命令 はデータをコントローラから強制的に出し、
INTEST 命令はデータを強制的にコントローラに入れます。
図 5-5. バウンダリ・スキャン レジスタのフォーマット
5.5.2.4 APACC データ・レジスタ
ARMにより定義された35ビット APACC データ・レジスタのフォーマットは、ARM® Cortex™-M3 Technical
Reference Manual で説明されています。
5.5.2.5 DPACC データ・レジスタ
ARMにより定義された35ビットDPACC データ・レジスタ のフォーマットは、ARM® Cortex™-M3 Technical
Reference Manual で説明されています。
5.5.2.6 ABORT データ・レジスタ
ARMにより定義された35ビットABORT データ・レジスタのフォーマットは、ARM® Cortex™-M3 Technical
Reference Manual で説明されています。