Visual Studio CodeでArduinoのデバッグを行うために色々と調べた結果・・・

スポンサーリンク
Arduino
スポンサーリンク

この記事は

さらばArduino IDE! Visual Studio Codeの拡張機能でArduino開発環境を整える
この頃、Arduinoを使って電子工作のまね事をやっていますが、公式のIDEが結構使いにくい・・・。と、思っていたらなんとVisual Studio Codeの拡張機能でMicrosoft製の「Visual Studio Code exte...

の続きです。

スポンサーリンク

拡張機能の説明を確認

Visual Studio Code extension for Arduino」の真ん中少し下あたりに書いてある「Debugging Arduino Code」の内容をなんとなく翻訳してみます。

Arduinoコードのデバッグを開始する前に、こちらのドキュメントを読んで、Visual Studio Codeでのデバッグの基本的な仕組みを理解してください。参照用にdebugging for C++ in VSCodeも見てください。
お持ちのArduinoボードがSTLinkJlink、またはEDBGで動作することを確認してください。デバッグサポートは現在、以下のボードで完全にテストされています。

デバッグを始める手順:

  1. ボードを開発マシンに適切に差し込みます。これらのボードにオンボードのデバッグチップがない場合は、STLinkまたはJLinkコネクタを使用する必要があります。
  2. デバッグビュー(Ctrl + Shift + D)に移動します。ソースファイルにブレークポイントを設定します。
  3. F5を押してデバッグ環境を選択します
  4. ブレークポイントがヒットしたら、デバッグサイドバーで変数を確認して式を追加することができます。

はい。これを読む限りArduinoのデバッグを行うためには、Arduinoにデバッグチップが搭載されているか、もしくはSTLinkまたはJLinkなるものを使う必要があるようです。

ちょっと解説

  • 組み込みプログラムは、多くの場合ターゲット(今回はArduino)で動作するプログラムを開発マシン(PC)上で開発します
  • 組み込みプログラムの開発時、ターゲットに搭載されたチップの状態(ROM、RAM、汎用/制御レジスタなど)を確認したり変更したりしながらデバッグを行います
  • この時に開発マシンとターゲットの通信を仲介するデバッグインターフェースが必要となります
  • デバッグインターフェースには、インサーキット・エミュレータ(ICE)やオンチップ・エミュレータなど(以降)の種類があり、先の文章で出てきたSTLinkやJLinkもオンチップ・エミュレータの一種です
  • デバッグインターフェースは、ターゲットの外部に専用の機器を接続する場合とターゲットの基板上に実装されている場合があります(下図参照)

ターゲットの外部にデバッグインターフェース

ターゲットの上にデバッグインターフェース実装

ちょうど良い図がSEGGER社のWebサイトにあったのでお借りしてきました。

ちなみに私は普段RenesasのRL78シリーズという16bitマイコンを使った開発を行うことが多いので、E1エミュレータというオンチップデバッグエミュレータを使うことが多いです。

Arduino Unoのデバッグを考える

まず、Arduino Unoの回路図を見る限り、Arduino Unoにはデバッグエミュレータは搭載されていないです。ATmega16U2-MUは多分USBコントローラです。
また、Arduino Unoに搭載されているチップはATmega328Pというものなので、ATmega328P用のエミュレータを別途用意する必要があります。ただ、Arduino Uno基板でデバッグを行うためにはどうやら基板の改造が必要なようです。

それに、ATmega328P用のエミュレータを用意したとしてもVisual Studio Codeから使えるかどうかは不明です。

じゃあArduinoのデバッグは諦めるしかない?

そんなことは無いです。

Arduino M0 ProというArduinoにはEmbedded Debugger(EDBG)が基板上に実装されているので、USBケーブルでパソコンとつなげばデバッグ可能となるようです。Arduinoでデバッガを使ったデバッグが必要なほどの規模のプログラムを開発するのであれば、Arduino UnoではなくArduino M0 Proを使ったほうが良さそうです。

コメント