CMODE 0 Tx_clk
24. プログラミングとデバッグ用インターフェース
24.1. 要点
● プログラミング
● PDIインターフェースを通す外部プログラミング ● 高速動作のための最小の規約付随負荷
● 確かな動作のための組み込みの異常検出と処理
● 何れかの通信インターフェースを通すプログラミング用のブート ローダ支援
● デバッグ
● 不干渉、実時間、チップ上デバッグ システム
● ピン接続を除き、デバイスから必要とされるソフトウェアまたはハードウェアなし
● プログラムの流れ制御
● 実行、停止、リセット、1行実行、内側実行、外側実行、カーソルまで実行
● 無制限数の使用者プログラム中断点(ブレークポイント)
● 無制限数の使用者データ中断点、以下で中断 ● データ位置読み、書き、または読み書き両方 ● データ位置内容が値と等しいまたは等しくない ● データ位置内容が値よりも大きいまたは小さい ● データ位置内容が範囲の内側または外側
● デバイス クロック周波数での制限なし
● プログラミングとデバッグ用インターフェース(PDI)
● 外部のプログラミングとデバッグ用の2ピン インターフェース
● リセット ピンと専用ピンを使用
● プログラミングまたはデバッグ中にI/Oピンの必要なし 24.2. 概要
プログラミングとデバッグ用インターフェース(PDI)はデバイスの外部プログラミングとチップ上デバッグ用のAtmel専有インターフェースです。
PDIはフラッシュ、EEPROM、ヒューズ、施錠ビット、使用者識票列の不揮発性メモリ(NVM)の高速プログラミングを支援します。これはNVM制御 器をアクセスして、205頁の「メモリ プログラミング」で記述されるようにNVM制御器命令を実行することによって行われます。
デバッグは不干渉、実時間のデバッグを提供するチップ上デバッグ システムを通して支援されます。これはデバイス ピン接続を除いてどんなソ フトウェアまたはハードウェアも必要としません。Atmelのツール チェーン使用は完全なプログラムの流れ制御を提供し、プログラムと複雑なデータの無 制限数の中断点(ブレークポイント)を支援します。応用デバッグはアセンブラと逆アセンブラ レベルからだけでなく、Cまたは他の高位言語ソース コードのレベルからも行うことができます。
プログラミングとデバッグはPDI物理層を通して行えます。これはクロック入力用のリセット ピン(PDI_CLK)とデータ入出力用の他の1つの専用検 査ピン(PDI_DATA)を使用する2ピン インターフェースです。何れかの外部書き込み器またはチップ上デバッガ/エミュレータがこれらインターフェースの どちらかへ直接的に接続することができます。
図24-1. PDI物理層でのPDI、密接に関連する部署(青枠)
プログラミングとデバッグ用インターフェース(PDI) PDI 制御器 PDI
(物理層)
OCD NVMメモリ NVM制御器 PDIバス
内部インターフェース PDI_CLK
PDI_DATA
24.3. PDI物理層
PDI物理層は低位直列通信を扱います。これは(丁度USRT動作でのUSARTのように)双方向半二 重同期直列送受信器を使用します。物理層は構造体開始検出、構造体異常検出、パリティ生成、
パリティ異常検出、衝突検出を含みます。
PDI_CLKとPDI_DATAに加え、PDI_DATAピンは内部プルアップ抵抗を持ち、VCCとGNDは外部書き 込み器/デバッガとデバイス間で接続されなければなりません。図24-2.は代表的な接続を示します。
図24-5. PDI物理層に関するキャラクタとタイミング
St D0 D1 D2 D3 D4 D5 D6 D7 P 停止 1 DATAキャラクタ
1 BREAKキャラクタ 1 IDLEキャラクタ
BREAK IDLE
図24-2. PDI接続
VCC PDI_CLK PDI_DATA
GND PDI
コネクタ VCC
本項の残りはAtmel AVR XMEGAデバイスに対する第3者開発書き込み器またはプログラミング支援による使用だけを意図したもので す。
24.3.1. 許可方法
PDI物理層は使用前に許可されなければなりません。これは最初にPDI_DATA線を外部リセット最小パルス幅と等しい長さよりも長い期 間、Highに強制することによって行われます(外部リセット パルス幅のデータについてはデバイスのデータシートを参照してください)。これは ヒューズ設定によって未だ禁止されていない場合に、リセット ピンのRESET機能を禁止します。
次に、PDI_DATAを16PDI_CLK周期間、High保持を継続してください。最初のPSI_CLK周期はリセット ピンのRESET機能が禁止された 後、100μsよりも遅れてはなりません。これがその時間で起きない場合、許可手順は始めから再び開始されなければなりません。許可 の流れは図24-3.で示されます。
図24-3. PDI許可の流れ
リセット(PDI_CLK)ピンのRESET機能禁止 PDI活性(有効)化 PDI_DATA
PDI_CLK
RESETピンはPDIインターフェースが許可されている時に採取されます。そしてリセット レジスタはRESETピンの状態に従って設定され、このピン のリセット機能が禁止された後でのコード走行からデバイスを保護します。
24.3.2. 禁止方法
PDI_CLKのクロック周波数が概ね10kHzよりも低い場合、これはクロック線での無活動と見なします。それはPDIを自動的に禁止します。
ヒューズによって禁止されていなければ、リセット(PDI_CLK)ピンのリセット機能が再び許可されます。これは最低プログラミング周波数が概ね 10kHzであることも意味します。
24.3.3. 構造体形式とキャラクタ
PDI物理層は開始ビット、パリティ ビット、2つの停止ビットを持 つ8ビット データの1キャラクタで定義される固定構造体形式 を使用します。
図24-4. PDI直列構造体形式
St D0 D1 D2 D3 D4 D5 D6 D7 (St/IDLE)
(IDLE) P Sp1 Sp2
1構造体
St : 開始ビット (常にLow) Spn : 停止ビット (常にhigh)
Dn : データ ビット (0~7) P : パリティ ビット (偶数パリティを使用) DATA,BREAK,IDLEの3つの異なるキャラクタが使用されま
す。BREAKキャラクタは12ビット長のLowレベルと当価です。
IDLEキャラクタは12ビット長のHighレベルと当価です。BREAK とIDLEのキャラクタは12ビット長を超えて延ばすことができま す。
24.3.4. 直列送受信
PDI物理層は送信動作(TX)または受信動作(RX)のどちらかです。既定で はそれがRX動作で、開始ビットを待ちます。
書き込み器とPDIは書き込み器によって供給されるPDI_CLKで同期して動 作します。クロック端とデータ採取またはデータ変更の間の依存性は固定化さ れています。図24-6.で図解されるように、(書き込み器またはPDIのどちら かからの)出力データは常にPDI_CLKの下降端で設定(変更)され、PDI_CLK の上昇端で採取されます。
図24-6. データの変更と採取 PDI_CLK
PDI_DATA
採取 採取 採取
24.3.5. 直列送信
データ送信がPDI制御器によって開始されると、送信部は開始ビット、データ ビット、パリティ ビット、2つの停止ビットをPDI_DATAへ単純にシフ ト出力します。送信速度はPDI_CLK信号によって指示されます。送信動作の間では、連続するDATAキャラクタ間の隙間を可能な限り満 たすためにIDLEビット(Highビット)が自動的に送信されます。送信中に衝突が検出された場合、出力駆動部が禁止されてインターフェース はBREAKキャラクタを待つRX動作に置かれます。
24.3.6. 直列受信
開始ビットが検出されると、受信部は8つのデータ ビット収集を始めます。パリティ ビットがデータ ビットのパリティに対応していない場合、パリティ 異常が発生しています。1つまたは両方の停止ビットがLowなら、構造体異常が発生しています。パリティ ビットが正しくて構造体異常が 検出されないなら、受信データ ビットはPDI制御器で利用可能です。
PDIがTX動作の時に、書き込み器によるBREAKキャラクタの合図はBREAK(中断)として解釈されませんが、一般的なデータ衝突を代わり に引き起こします。PDIがRX動作の時に、BREAKキャラクタはBREAKとして認識されます。(1つ以上のHighビットによって分けられていな ければならない)2つの連続するBREAKキャラクタの送信によって、PDIが始めにTXまたはRX動作のどちらだったかに拘らず、最後の BREAKキャラクタが常にBREAK(中断)として認識されます。これはTX動作に於いて最初のBREAKが衝突として見えるためです。その 後にPDIはRX動作に移動して2つ目のBREAKをBREAK(中断)として知ります。
24.3.7. 方向変更
半二重動作に対して正しいタイミングを保証するため、保護時間機構が使用されます。PDIがRX動作からTX動作へ動作変更する時で 開始ビットが送信される前に形態設定可能なビット数のIDLEビットが挿入されます。RXとTXの動作間の最小遷移時間は2IDLE周期で、
これらが常に挿入されます。PDI制御器の制御(CTRL)レジスタ内の保護時間(GUARDTIME)ビット書き込みが追加保護時間を指定しま す。既定保護時間は128ビットです。
図24-7. IDLEビット挿入によるPDI方向変更
St PDI データ受信(RX) P Sp1 Sp2
1 DATAキャラクタ 方向変更
IDLEビット St PDI データ送信(TX) P Sp1 Sp2 1 DATAキャラクタ
書き込み器からPDIインターフェースへのデータ
保護時間IDLEビット数挿入
PDIインターフェースから書き込み器へのデータ
外部書き込み器は目的PDIがRX動作からTX動作へ変更する点でPDI_DATA線の制御を失うでしょう。保護時間は通信のこの重要な 段階を緩和します。書き込み器がRX動作からTX動作へ変更する時は、開始ビットが送信される前に最小で単一IDLEビットが挿入され るべきです。
24.3.8. 駆動競合と衝突検出
駆動競合(PDIと書き込み器が同時にPDI_DATAを駆動) の影響を低減するために衝突検出用機構が使用されま す。この機構はPDI_ DATA線でのデータ出力のPDI駆動方 法に基きます。図24-8.で示されるように、PDI出力駆動部 は出力値が変化(0⇒1または1⇒0)する時にだけ活性(有 効)です。従って、2つ以上の連続するビット値が同じ場合、
その値は最初のクロック周期だけ能動的に駆動されます。こ の時点の後はPDI出力駆動部が自動的にHi-Zにされ、
PDI_DATAピンは出力駆動部がビット値での変化のために 再許可されるまでピン値を無変化に保つ責任があるバス保 持器を持ちます。
図24-8. バス保持器を使用するPDI_DATAでのデータ出力駆動 PDI_CLK
出力許可 駆動出力 PDI_DATA
1 0 1 1 0 0 1