Arduinoの設定 - デバッグ
概要
Atmel Studio 7を使用すると、Arduinoのスケッチをインポートしてデバッグできる。
これにより、Arduinoはプロの設計エンジニアツールとなる。
Arduino UNO R3
前提条件
Arduinoをデバッグするには、以下のような注意点がある。
- Arduino ICSP接続ができるデバッガが必要となる。
(例: Atmel-ICE等) - Atmel Studio 7をインストールする必要がある。
- ArduinoでdebugWireを動作させるため、Arduinoの回路を変更する必要がある。
Atmel Studio 7で設計を行う場合、Arduinoのブートローダが消去される。
そのため、他の開発環境でArduinoを使用する場合は、ブートローダを再び書き込む必要がある。
Arduinoの回路の変更
Arduino Unoには、ATmega 328Pとブートローダ(optiboot_atmega328.hex)が搭載されている。
ブートローダは、リセット時に実行されて、シリアルインターフェイスを介して送信された値により、ATmega 328のメモリをプログラムする。
これは、新しいスケッチをArduinoにアップロードできるようにするものである。
DTR信号の状態が一時的に変化する時、ブートローダが開始される。
下図に示す回路において、CH1がDTRであり、CH2がRESETである。
下図に、スケッチがArduinoにアップロードされた時、オシロスコープにより計測されたリセットパルスを示す。
回路図のコンデンサC5は、debugWIREインターフェースに影響を与えており、また、ATmega 328Pのリセット制御にも依存している。
幸い、リセットラインからコンデンサC5を切り離すことができるジャンパーカットをPCBに残している。
剃刀等の鋭利な工具を使用して、"RESET EN"または"RESET ON"と書かれた2つの錫メッキパッドを接続するパターンをカットする。
(C5までのパターンを切らないように注意すること)
パッドのパターンをカットした後、Arduinoのデバッグが可能になる。
※注意
このパターンを切断している状態では、ブートローダが書き込まれている場合でも、Arduino IDEはスケッチをアップロードできない。
下図のように、パッドに2ピンのヘッダを接続して、debugWIREインターフェースと標準のArduinoのブートロードを切り替えられるようにするとよい。
切り替えは、ジャンパの接続または取り外すことで行う。
Arduinoのスケッチをデバッグするには、以下のようにする必要がある。
- リセットがコンデンサC5から切り離されていることを確認する。
2ピンのヘッダを接続している場合は、ヘッダからジャンパーを取り外す。 - ICSPのシルクがあるコネクタにAtmel-ICEを接続する。
接続方法は、Atmel-ICEコネクタのタブ(出っ張り)を、ArduinoのコンデンサC5に向けて接続する。 - PCとArduinoをUSBケーブルで接続して、ArduinoのDCジャックに電源を供給する。
Arduino UNO R4 WiFi
手順
- Arduino UNO R4 WiFiに外部電源 (ACアダプタ) を接続する。
- Arduino IDE 2の[ツール]メニューバー - [ARM CMSS-DAP互換]を選択する。
- Arduino IDE 2の[スケッチ]メニューバー - [デバッグに最適化]を選択する。
- Arduino IDEでは、ボード上でより効率的に (クロックサイクルやメモリ使用量等) 実行できるよう、コンパイラがプログラムを最適化するように自動設定される。
- しかし、最適化を行うと生成されるプログラムがソースコードと大きく異なってしまい、デバッガが使用可能な結果を得られないことがある。
- そこで、デバッグ時には最適化レベルを下げる。
- 再コンパイルしてアップロードする。
- デバッグコンソールを開いている場合は閉じる。
- 既にGDB Serverを起動している場合は、Arduino IDEのメイン画面左上にある[Stop]アイコンを選択する。
- デバッグを開始する。
エラー
以下に示すようなエラーが表示される場合がある。
Arduino R4 WiFi Debug OpenOCD: GDB Server Quit Unexpectedly. See gdb-server output for more details.
修正方法 1
Arduino UNO R4 WiFiに外部電源 (ACアダプタ) を再接続する。
修正方法 2
最新のopenocd.exeをインストールする。
https://github.com/xpack-dev-tools/openocd-xpack
修正方法 3
Linuxの場合は、udevルールファイルを再インストールする。
git clone https://github.com/arduino/ArduinoCore-renesas.git cd ArduinoCore-renesas
sudo ./post_install.sh
Arudino UNO R4 WiFiのudevファイルがインストールされる。
/etc/udev/rules.d/60-arduino-renesas.rules