Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう
Windows 11のArduino IDE 1.8.21/2.3.4ともに発生した現象です。
ここしばらくはまってしまいました。その対策のメモです。
(あくまでも、個人的な調査で保証のないた対応方法です)
Arduino STM32(Roger氏版)では、ツールチェーンの定義があいまいで、
ARM系の別のボート用パッケージ(Arduuino Uno R4など) をインストールしたりすると、
STM32のスケッチのコンパイル時に別のツールチェーンにてコンパイルされてしまうようです。
上の例ではSTM32環境では、arm-none-eabi-gcc 4.8.3-2014q1を利用していたのですが、
Arduino Uno R4のボード用のパッケージをインストールすると
arm-none-eabi-gcc-7-2017q4(gcc 7.2.1)が使われてしまっています。
調べると、Arduino STM32のボード関連の設定のhardware\Arduino_STM32\STM32F1\platform.txt の
ツールチェーンの設定と思われる個所が、
compiler.path={runtime.tools.arm-none-eabi-gcc.path}/bin/
となっていて、これだと指定があいまいのようです。
C:\Users\user\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\ に
ある複数のツールチェーン環境がある場合(下の画像)には、
別のツールチェーンが選択されてしまうようです。
arm-none-eabi-gcc フォルダにツールチェーン環境が複数あると、フォルダ名の降順で選択されるのかな?
試しに、7-2017q4フォルダを一時的にゴミ箱に移動してコンパイルしたところ、
4.8.3-2014q1 の方を利用してくれました。
対策として、hardware\Arduino_STM32\STM32F1\platform.txt の compiler.path を
compiler.path={runtime.tools.arm-none-eabi-gcc-4.8.3-2014q1.path}/bin/
とき修正することで、4.8.3-2014q1 の方を利用してくれました。
platform.txtの修正部分(抜粋)
・・・・・ # compiler variables # ---------------------- #compiler.path={runtime.tools.arm-none-eabi-gcc.path}/bin/ compiler.path={runtime.tools.arm-none-eabi-gcc-4.8.3-2014q1.path}/bin/ compiler.c.cmd=arm-none-eabi-gcc ・・・・・ |
ちなみにArduino Uno R4の場合、
\hardware\renesas_uno\1.3.2\boards.txt にツールチェーンの設定がしてあるようで、
・・・・・ minima.name=Arduino UNO R4 Minima minima.build.core=arduino minima.build.crossprefix=arm-none-eabi- minima.build.compiler_path={runtime.tools.arm-none-eabi-gcc-7-2017q4.path}/bin/ ・・・・・ |
となっていて、曖昧なく設定されているようです。
Arduino_Core_STM32の方も見てみましたが、曖昧なく設定されていました。
ArduinoのSTM32環境は、Roger氏版のメンテナンスがいまいちになってきており、
そろそろCore版の方に切り替えた方が良さそうですね。
最近のコメント