鳥なき里のマイコン屋(76) VS CodeでNucleo、PlatformIO超便利!

JosephHalfmoon
JosephHalfmoon

元々、STM32Fマイコン特集に触発されて始めた筈のVS CodeとPlatformIOだったのですが、ついついM5Stackの方へいってしまっておりました。今回は、STM32搭載、Nucleoボードにターゲットを変更してみます。Nucleo用には結構いろいろな環境試してみているのですけれど、正直、VS Code+PlatformIOは楽な上に強力!

STマイクロエレクトロニクス社のSTM32マイコン(Armコア)搭載開発ボードNucleoに対しては、ふりかえってみると以下のような環境を試してみています。結構多いな。

どれもそれなりに特徴あり、用途に応じて向き、不向きがある、と申し上げておきます。しかし、どれか一つ選べと言われたら、多分、今回の

VS Code + Platform IO

の組み合わせを選んでしまうかもしれません。まだ、ちょっと触り始めただけなのですが、とっても良いものだと感じております。ありがちですが、良い点をあげれば

  1. マルチプラットフォーム、いろいろな環境で動作する超強力エディタVS Code
  2. マルチターゲット、いろいろなMCU、開発ボードに対応するPlatform IO
  3. マルチプラットフォーム(ターゲット上で走らせるOSや実行環境)をサポートするPlatform IO、面倒な設定はほとんどやってくれてしまう。

実際、最初M5Stackで始めましたが、本来のArduinoIDEと同じことをほとんど一撃、難しい設定など何も無しにできてしまいました。そして、本日はと言えば、Nucleo F401REボード用に「とりあえずのLチカ」をやらせるにあたっても、ほとんど、マウスを何度かクリクリして、ほんのわずかな文字をソースに打ち込んだだけで、動いてしまいました。なお、Nucleoに対しては、ST社純正のSTM32Cubeプラットフォームでも、Arm社純正Mbedプラットフォームでも、あるいはArduinoなどでも選択可能な中でです。それも、

  • ボードを指定: Nucleo F401RE
  • プラットフォームを指定: Mbed

だけでセットアップされ、即プログラム可能な状態となります。Nucleoボードを接続してやれば、自動で認識されて、クロスコンパイルした結果を流し込めると。何てお手軽。

ああ、昔のマイコンツールって何してたんだ。。。

と憮然とすることしきり。さらに言えば、Nucleoの場合、M5Stackではできなかったことができるのです。デバッグです。デバッグ用の回路を「脇に」搭載してくれているNucleoの良いところです。

デバッグメニューからデバッグ開始を選んでやれば

デバッグビルドがなされ、デバッグモード(裏でOpenOCDが動いている)に入ります。以下の「MbedでLチカ」のVS Code画面を御覧ください。ヘルプメニューの下あたりに、デバッグ用のアイコンが現れているのがお分かりでしょうか。そして、左側にはデバッグ用の変数やコールスタックの表示ウインドウが現れております。Edit nucleo sample in VSCode

他の多くのIDE同様にブレークポインタの設定が可能です。デバッグ時はmainの頭に自動的にブレークポイントが置かれてそこで停止した状態から開始なので、実行結果をみると、ブレークが2回かかっていることがわかります。こんな感じ。Break point at Run

止まったら、所望の変数などを調べてデバッグしていくわけですが、当然、CPUレベルでのデバッグ機能も使用できます。レジスタダンプのウインドウはこちら。

やはりアセンブラ見ないと落ち着かない人のためには、ちゃんとディスアセンブル表示へのスイッチも用意されてます。

 

 

 

 

 

 

 

ディスアセンブルモードにすれば、ソース表示変じてArmのアセンブリコードが現れます。Nucleo DisAssemble

何か、今までちょっと「苦労したのは何」と言いたくなるくらい簡単。専用のIDEと比べるても遜色ない。

鳥なき里のマイコン屋(75) VS CodeでM5Stack、ちょっと設定 へ戻る

鳥なき里のマイコン屋(77) VS CodeでMicro:bit、デバッガも使えます へ進む