Arduinoの設定 - デバッグ

2024年12月19日 (木) 23:01時点におけるWiki (トーク | 投稿記録)による版 (→‎修正方法 3)

概要

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のスケッチをデバッグするには、以下のようにする必要がある。

  1. リセットがコンデンサC5から切り離されていることを確認する。
    2ピンのヘッダを接続している場合は、ヘッダからジャンパーを取り外す。
  2. ICSPのシルクがあるコネクタにAtmel-ICEを接続する。
    接続方法は、Atmel-ICEコネクタのタブ(出っ張り)を、ArduinoのコンデンサC5に向けて接続する。
  3. PCとArduinoをUSBケーブルで接続して、ArduinoのDCジャックに電源を供給する。
図.




Arduino UNO R4 WiFi

手順

  1. Arduino UNO R4 WiFiに外部電源 (ACアダプタ) を接続する。
  2. Arduino IDE 2の[ツール]メニューバー - [ARM CMSS-DAP互換]を選択する。
  3. Arduino IDE 2の[スケッチ]メニューバー - [デバッグに最適化]を選択する。
    Arduino IDEでは、ボード上でより効率的に (クロックサイクルやメモリ使用量等) 実行できるよう、コンパイラがプログラムを最適化するように自動設定される。
    しかし、最適化を行うと生成されるプログラムがソースコードと大きく異なってしまい、デバッガが使用可能な結果を得られないことがある。
    そこで、デバッグ時には最適化レベルを下げる。
  4. 再コンパイルしてアップロードする。
  5. デバッグコンソールを開いている場合は閉じる。
  6. 既にGDB Serverを起動している場合は、Arduino IDEのメイン画面左上にある[Stop]アイコンを選択する。
  7. デバッグを開始する。


エラー

以下に示すようなエラーが表示される場合がある。

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