@kuriko said in 拡張モジュールの互換性について教えてください:
プロジェクトを再作成するかソフトウェアを再インストールすることで解決する可能性
実際にコンパイルまで試してくださるだなんて、誠にかたじけなく存じます。
「プロジェクトを再作成」はどういう意味か分からなかったのですが、
「ソフトウェアを再インストール」については、ご助言に従って、1.8.15のIDEを2.3.4に入れ替えてみました。
ごく一部のコンパイルエラーが消えた気がしましたが、CANもISO485もコンパイル成功しないため、ライブラリも「ソフトウェアを再インストール」の一つなのかもしれないと思い、100近くはあったであろうlibrariesフォルダ内の全てのライブラリを削除してIDEから入れ直しました。
※ 1.8.15では依存関係のライブラリの量が多すぎると、ボタンが画面の中に表示されませんでしたが、
2.3.4ではスクロールバー付きでボタンが見えるようになりました。
もしかすると依存ライブラリの一部が入っていなかった可能性があります。
全て入れ替えましたが、下記についてはやはりVSPIがダメで、残念ながらM5CoreS3を選択するとコンパイルエラーでした。
M5Stack/Unit/CAN
M5Stack/Unit/ISO485
c:\Users\HE42137\Documents\Arduino\libraries\M5Stack\src/utility/In_eSPI.h:633:20: error: 'VSPI' was not declared in this scope
uint8_t port = VSPI;
^~~~
ですが、M5CoreまたはM5Core2をボード選択した場合にはコンパイル成功しますので、M5CoreS3を選んだ場合特有のエラーに見えました。
In_eSPI.hの633行目を確認してみると、「ESP32がdefineされていてUSE_HSPI_PORTは未定義」という条件でportに代入しようとするVSPIが未定義で起こるエラーに見えました。
#if defined(ESP32)
#if defined(USE_HSPI_PORT)
uint8_t port = HSPI;
#else
uint8_t port = VSPI;
#endif
#endif
このファイルの上の方にも以下のような記述がありますが、そもそもlibrariesフォルダの下にsocフォルダも無ければspi_reg.hもありません。
#include <SPI.h>
#ifdef ESP32
#include "soc/spi_reg.h"
#ifdef USE_HSPI_PORT
#define SPI_PORT HSPI
#else
#define SPI_PORT VSPI
#endif
#endif
librariesフォルダ配下の子ディレクトリまで含めて VSPI をグローバル検索すると、定義しているファイルは無いものの、以下が引っ掛かりました。
M5GFX\src\lgfx\v1\platforms\esp32\Bus_SPI.cpp(95): auto spi_port = (uint32_t)(cfg.spi_host) + 1; // FSPI=1 HSPI=2 VSPI=3;
上記コメントから、"VSPI"というのを使っている場所を"3"に置き換えれば想定されたビルドにはなるのかなとは思いました。
※ M5CoreやM5Core2を選択した場合には、ここで引っ掛からないのが謎ではあるのですが…。
ただ、そのような場当たり的な対応をしても意味がなく、"soc/spi_reg.h" を読み込めるように何かのファイルを用意するべきなのかと思います。
"spi_reg.h"をどうすれば入手できるかと思いgoogle検索すると下記がhitしました。
https://git.liberatedsystems.co.uk/jacob.eva/arduino-esp32/src/commit/1b2f34b0d6a668ba0e5c353f6c83dcab500c5028
zipのダウンロードもできず、「git clone https://git.liberatedsystems.co.uk/jacob.eva/arduino-esp32.git」もできませんでした。
同じ検索の中にあった下記を参考に
https://interface.cqpub.co.jp/esp32-arduino-ide-2/
IDEの環境設定「追加のボードマネージャのURL」に下記URLを追加
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
→ ボードマネージャで「esp32」を検索してインストールしました。
もう一度下記を確認すると、ESP32-S2および/またはESP32-C3をボードマネージャにインストールするために、
https://git.liberatedsystems.co.uk/jacob.eva/arduino-esp32
上記と同様に下記を「追加のボードマネージャのURL」に記載することが書かれていました。
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json
これを終えると、既にインストールしたばかりの「esp32」でしたがボードマネージャ上でUPDATE可能になっていたのでアップデートしました。
ここまではやってみましたが、spi_reg.hがlibrariesフォルダに入ることもなく、コンパイル結果はエラーのまま変わらずでした。
無意味なことをやった報告しかできずお恥ずかしい限りです。