PlatformIOで最新のArduino core for the ESP32ライブラリがエラーになる問題(解決)

Arduino/ESP32Arduino,ESP32,PlatformIO,エラー,ライブラリ

さて前記事で、PlatformIOで導入しているプラットホーム「Espressif 32」が使用するarduinoフレームワーク「framework-arduinoespressif32」がちょっと古いみたいな事が判明しまして。

デフォルトで導入されるバージョン 3.10004.200129 は、package.jsonのタイムスタンプを見る限りでは2020/01/29とありますので、バージョンの200129と一致。

今年の1月29日バージョンという事ですね。

さてGitHubにある現行の「Arduino core for the ESP32」は、、

package.jsonが更新されておらず、よく判らない訳ですが、、、

Gitの更新履歴からmasterブランチは9日前にマージされているみたいです。

確実に新しそうですし、一応masterブランチなので使って大丈夫やろという事で、、

後々ESP32ではBLE関連も使って遊ぶ目論見がありますので、導入方法を調べてみました。

どうやらPlatformIO上でマウスポチポチするだけでは出来ない様でして・・・

PlatformIOのドキュメントにこんな記述がありました。

どうやらプロジェクトに作られる「platformio.ini」に、Gitリポジトリを指定して書いてコンパイルして見てチョ、という事らしい。

早速やってみます。

[env:nodemcu-32s]
platform = espressif32
board = nodemcu-32s
framework = arduino
monitor_speed = 115200
platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git

末行に「platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git」を追加しました。

念のためcleanしてから、、、

ポチッ

ぎゃああああぁああぁあぁぁあぁ

大量の警告と、コンパイルできまへんでしたとのメッセージ。

これは、、、なんか足りない時のリンクエラーな感じ?

大量過ぎて読む気が全く起きません

アカンのんか、、しかしmasterブランチやぞ、、

それでもアカンのんか、、、?

と、往生際悪く解決方法を探し回る事数時間

PlatformIOのGitリポジトリにissuesがポストされておりました。

GitHub – PlatformIO – Issues – Linking fails with latest arduino-esp32 #334

うん、ワタクシの症状とほぼ同じ。

ldscript(リンカー)の指定が変わったみたいですよとのコメントもありました。

このコミットを見ると、確かにボード毎のビルドスクリプトの記述位置が変更されていますね。

ワタクシが使っているNodeMCU-32Sも、boards/nodemcu-32s.json の箇所を見ると変更対象になっている様子。

さて、、

現在のところ、リンカースクリプトを手動で指定するで回避できるとの事。

こういうのは「platformio.ini」に書けって事らしいですので、以下の様に追加してみます。

[env:nodemcu-32s]
platform = espressif32
board = nodemcu-32s
framework = arduino
monitor_speed = 115200
platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git
board_build.ldscript = esp32_out.ld

「board_build.ldscript = esp32_out.ld」を末行に追加

そしてコンパイルをっと。

なんか一部warningが出てますが、、、

C:\Users\{USER}\.platformio\packages\framework-arduinoespressif32@src-537c58760dafe7fcc8a1d9bbcf00b6f6\cores\esp32\esp32-hal-rmt.c: In function 'rmtLoop':
C:\Users\{USER}\.platformio\packages\framework-arduinoespressif32@src-537c58760dafe7fcc8a1d9bbcf00b6f6\cores\esp32\esp32-hal-rmt.c:243:9: warning: unused variable 'channel' [-Wunused-variable]
     int channel = rmt->channel;
         ^

unusedのワーニング(これ、使っとらんガナ!)なので、スルーしていいかな

というわけで一応コンパイルが通り、晴れて新しいライブラリが使用可能になりました。

うん、昨日これで一日潰してしまいますた。

疲れたンゴねぇ・・・