0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Arduino for Visual Studio Code to PlatformIO

Posted at

動機

Arduino開発、ファイルを分割してC/C++で書く、VSCodeで開発環境の整備を行いましたが......

Arduino for Visual Studio Code が、そろそろヤバそう(deprecated)
deprecated.png

色々見た感じ、PlatformIOが良さそう。
PlatformIO.png

PlatformIOで、少し悩んだ部分を記録しておきます。
が、ぶっちゃけ、Arduino for Visual Studio Codeよりだいぶ楽でした。

※この記事を読む方にお願いしたいこと

Warningを最大限出す設定(-Wall)としてほしい。
最大限はどうしても許容しがたくても、必ずWarningは出す設定とし、コーディングしてほしい。

実行しないとわからない、かもしれない、もしかしたら実行した結果大丈夫かもしれないし、ダメかもしれない、

......のと、

コンパイルしたらダメっぽいのがわかる

......のでは、雲泥の差があります。時は金なり。

粗悪なコードでのArduino界隈の汚染を防ぎましょう。

目標

  1. ソースコードのフォルダ分けができること
  2. 出来上がったelfやhexがアクセスしやすい場所に配置されること
  3. 可能な限り厳しいワーニングレベル(-Wall)でコンパイルされること

インストール、プロジェクト作成

省略します。他の方々が散々やってくれているので......
Arduino PlatformIO などでググるべし。

結果

ソースコードのフォルダ分けができること

srcディレクトリ以下にソースコードを配置すれば、ビルドするメンバにはしてくれます。ただし、platformio.iniに、インクルードディレクトリの指定が必要。

ソースディレクトリ.png

platformio.ini
build_flags =
    -Isrc/Module01

出来上がったelfやhexがアクセスしやすい場所に配置されること

普通にできてました。素晴らしい。Excellent!
.pioディレクトリ以下に出来上がります。
ビルド結果.png

後は、objdumpできればなー......これはまた後か。

可能な限り厳しいワーニングレベル(-Wall)でコンパイルされること

-w(全ての警告メッセージを抑制します。)を除外する設定を行う。

platformio.ini
build_unflags =
    -w

なんか知らんが-wが入っている。(なぜバレたかは後述Tips参照) 極めて有害で理解しかねる。
いくら-Wallしても出てこないのでなんで?って思ってたら、しれっと入っていたので除外します。

最終的に、以下の設定となりました。

platformio.ini
build_unflags =
    -w

build_flags =
    -Isrc/Module01
    -Wall

※build_flagsの-Wallは、現状、実はいらないのですが、一応入れています。

Tips(Verbose modeでビルドする)

可能な限り厳しいワーニングレベル(-Wall)でコンパイルされること

が、最初分からなかった。build_flagsに-Wallを指定しても出てこない。そもそもWarning自体出てこない......?
これを解決するにあたり、どんなオプションでコンパイルされているのか知りたい。で......
ビルド時TERMINALに以下のような表示があったため

Verbose mode can be enabled via `-v, --verbose` option

じゃあそれどうすんの、がなかなか見つからなかったのですが、結局以下の方法で行いました。何か他にいい方法をご存じの方はコメントください。

ターミナルを開く

openterminal.png

ターミナルが開く。
terminalopened.png

以下のコマンドを実行する

PS <project_dir>> C:\Users\<Username>\.platformio\penv\Scripts\platformio.exe run -v

すると、Verbose mode でビルドが実行される。

ちなみに、そのときのコンパイルオプション
arm-none-eabi-gcc -o .pio\build\uno_r4_wifi\src\Module01\Module01.c.o -c -std=gnu11 -Waggregate-return -Wall -Wconversion -Wextra -Wfloat-equal -Wlogical-op -Wmissing-declarations -Wpointer-arith -Wshadow -Wuninitialized -Wunused -fdata-sections -ffunction-sections -fmessage-length=0 -fsigned-char -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mthumb -Os -iprefixC:/Users/Username/.platformio/packages/framework-arduinorenesas-uno @C:/Users/Username/.platformio/packages/framework-arduinorenesas-uno/variants/UNOWIFIR4/includes.txt -w -fno-builtin -DPLATFORMIO=60116 -DARDUINO_UNOWIFIR4 -DARDUINO_ARCH_RENESAS_UNO -DARDUINO_UNOR4_WIFI -DNO_USB -DBACKTRACE_SUPPORT -DLWIP_DNS=1 -DCFG_TUSB_MCU=OPT_MCU_RAXXX -D_RA_CORE=CM4 -D_RENESAS_RA_ -DARDUINO=10810 -DARDUINO_ARCH_RENESAS -DARDUINO_FSP -D_XOPEN_SOURCE=700 -DF_CPU=48000000L -Iinclude -Isrc -Isrc\Module01 -IC:\Users\Username\.platformio\packages\framework-arduinorenesas-uno\cores\arduino\tinyusb -IC:\Users\Username\.platformio\packages\framework-arduinorenesas-uno\cores\arduino -IC:\Users\Username\.platformio\packages\framework-arduinorenesas-uno\cores\arduino\api\deprecated -IC:\Users\Username\.platformio\packages\framework-arduinorenesas-uno\cores\arduino\api\deprecated-avr-comp -IC:\Users\Username\.platformio\packages\framework-arduinorenesas-uno\variants\UNOWIFIR4 src\Module01\Module01.c

なげーよ!
って......あ......
ア゛ツツツツッツーーーーーーー!
しれっと-w.png

あ゛に゛き゛ぃぃぃぃぃいいいいーーー!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?