debugWIRE は、 Atmelによって設計されたシリアル通信プロトコルです。AVRマイクロコントローラのオンチップ デバッグに使用されます。
プロトコル
debugWIRE はJTAGのよりシンプルな代替手段として設計されており、リソースが限られたマイクロコントローラ(MCU) を対象としています。これは、従来のATtinyおよびATmega328などの一部の小型 ATmega MCUでサポートされています。debugWIRE を使用すると、すべてのメモリへの完全な読み取りおよび書き込みアクセスと、実行フローの完全な制御が可能になります。これは、シングルステップ、カーソルまで実行、ステップアウト、およびソフトウェアブレーク命令をサポートしています。ブレークポイント(カーソルまで実行) は、 BREAK [1] オペコードをMCU のフラッシュメモリに再プログラムすることで設定されます。デバイスの保証書き込みサイクル数が限られている (10000) ため、注意が必要です。[2]
プログラマーモデル
debugWIREは、 Microchip社のすべての最新ハードウェアデバッガーでサポートされています。これには、Atmel-ICE、[3]、 JTAGICE3、AVR Dragon、JTAGICE mkII、SNAP [4]が含まれます。また、一般的なUSBシリアルアダプターやATtiny85ボード[7] 、またはCH552マイクロコントローラー[8]を使用して、オープンソースのArduinoスケッチ[6]に基づいて安価なdebugWIREハードウェアデバッガー[5]を構築することも可能です。
debugWIRE仕様
debugWIRE は、通常上位ヒューズ バイトにあるヒューズ DWEN (debugWIRE 有効) を設定する (ゼロにプログラムする) ことによってアクティブになります。このアクションの後、/RESET ピン機能は使用できなくなり、ISP プロトコルは使用できなくなります。debugWIRE は、debugWIRE 機能を一時的に無効にし、次の電源切断サイクルまで /RESET と ISP を再度有効にする特別なリセット コマンドを送信することで、前述のデバッガのいずれかで無効にできます。debugWIRE はデバイスのヒューズをプログラムできません。debugWIRE を永久に無効にしたい場合は、一時的に機能を無効にし、現在使用可能な ISP 機能を使用してヒューズをプログラムする必要があります。[9] debugWIRE は 1 線オープン ドレインシリアル接続を使用します。使用されるデフォルトのボー レートは MCU クロック/128 です。BREAK を送信すると、ボーレートを検出するために使用される 0x55 が返されます。MCU は、debugWIRE 接続でブレークポイントにヒットするか衝突が検出されると、BREAK を返します。 0x06はdebugWIREを無効にし、/RESETとISPを再度有効にするために使用され、0x07はMCUをリセットし、0xF0はPCを返し、0xF3はdebugWIRE IDです。[10] [11] [12]
参考文献
- ^ AVR 命令セットマニュアル
- ^ ATtiny25-ATtiny45-ATtiny85_データシート概要.pdf
- ^ アトメル-ICE
- ^ MPLAB SNAP インサーキットデバッガ
- ^ 10 ユーロ未満の debugWIRE ハードウェア デバッガ
- ^ dw-link---Arduino ベースの debugWIRE デバッガー
- ^ dwire デバッグ
- ^ Arduino IDE 2.0.0 の CH552 デバッガーを使用して Uno/ATmega328P をデバッグするための Arduino ボード パッケージ
- ^ debugWIRE の記事 (ドイツ語)
- ^ debugWIRE プロトコル
- ^ シンプルなスタンドアロンの debugWIRE デバッガー (オープンソース)
- ^ Microchip Makes (2015 年 11 月 25 日)。「Arduino ボードを使用した高度なデバッグ」 – YouTube 経由。
