Spresense development on VSCode PlatformIO

最終更新日

Spresenseで開発するために、Arduinoを利用していたが、もう、限界。

複数のプログラムを切り換えて使うたびに、そのWindowがどこにいったか探すのがめんどい。
Editorも気に入らない。
ここ何年かですごく進化したけど、元々ソフトやってたエンジニアにはきつい。

ということで、VSCode の PlatformIOを利用する。

以前の記事の続き。

PlatformIO で開発環境を作る

PlatformIO で開発環境を作る

2021.06.27

あと、VSCodeでは、MultiCoreの開発ができないと思っていたけど、そんなことはない。
親切とはいえないけど、 出来る ということを教えてくれただけでも有り難いページ。

ということで、なるべく親切に解説する。

PlatformIO の準備

install

VSCodeに、PlatformIO Pluginをinstallする。

現時点で、 v3.3.1

正しくinstall すると、左のサイドメニューに虫みたいなアイコンが表示される。
これが、PlatformIO の起動ボタン。

一度PlatfromIOを起動するば、以降、下部メニューにも虫と同じ機能の家アイコンがある。
初期画面(HOME)に戻りたいときは、そっちをクリックしてもよい。

虫ボタンをクリックすると、右のペインにPlatfromIO のHOME画面が表示される。

Spresense のDevice情報取得

前述のページにもあるけど、再掲。
githubから有志の方が提供している情報をDownloadする。

まずは、QUICK ACCESS ペインの メニュー Miscellaneous - PlatfromIO Core CLI をクリック。

VSCode Windowsの右下部あたりに、 Terminal が開く。 pio コマンドのhelpが表示されるはず。

Terminal内で、以下のコマンドを実行。

pio pkg install -g -p https://github.com/maxgerhardt/platform-sonyspresense.git

これが、Arduino の 設定 で board managerのURLを足したのと同様になる。

新規プロジェクトの作成

mainCoreでLED0を、subCore1でLED1をLチカするプログラムを作ってみる。

Create New Project をクリックする。

すると、こんな感じのダイアログが表示されるので、

  • Name … お好きなものを入力
  • Board .. Spresenseを選択

Finish するとちょっと時間がかかるけど、最終的に初期のtemplateが作成されて、以下のような画面になる。

platformio.ini の設定

platformio.ini は、ちょっと修正がいる。

SubCore1 を利用する場合、こんな感じ。

[env]
platform = sonyspresense
board = spresense
framework = arduino
monitor_speed = 115200
upload_port = /dev/cu.SLAB_USBtoUART
monitor_port = /dev/cu.SLAB_USBtoUART

[env:spresense_mainCore]
build_src_filter = +<main/>

[env:spresense_subCore1]
build_flags = -DPIO_FRAMEWORK_ARDUINO_CORE_SUB_CORE_1
build_src_filter = +<sub1/>

なんてことはない、SubCore用のMake&Uploadの場合、 PIO_FRAMEWORK_ARDUINO_CORE_SUB_CORE_1 をdefine しえやればいいらしい。

あとは、普通。

  • env セクションは、共通。
  • env:spresense_mainCore セクションは、MainCore用。ソースのディレクトリ(main.cpp)は、 src/main/ 配下とする。
  • env:spresense_sybCore1 セクションは、subCore1用。ソースのディレクトリ(main.cpp)は、 src/sub1/ 配下とする。

環境の切り換え

platformio.ini 上のどの env:xxxx を利用するかの選択は、下部のメニューから行うのがわかりやすい。

source code main.cpp

mainCore用のmain.cpp は、src 配下にフォルダ main を作成し、 src/main/main.cpp というファイル名にする。
subCore1 も同様に、 フォルダ sub1 を作成し、 src/sub1/main.cpp というファイル名にする。

main/main.cpp

setup() で、subCore1 の起動を行い、loop() で、LED0をチカチカする。

環境を切り換えて、compile&uploadする。

sub1/main.cpp

loop() で、LED1をチカチカする。

環境を切り換えて、compile&uploadする。

Demo

シェアする