Spresense development on VSCode PlatformIO
Spresenseで開発するために、Arduinoを利用していたが、もう、限界。
複数のプログラムを切り換えて使うたびに、そのWindowがどこにいったか探すのがめんどい。
Editorも気に入らない。
ここ何年かですごく進化したけど、元々ソフトやってたエンジニアにはきつい。
ということで、VSCode の PlatformIOを利用する。
以前の記事の続き。
あと、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する。