Dear all,
Since Platformio recently started supporting the new Arduino version for ESP, I wanted to get my NodeMCU-32-S2 board running with it. I created a new board for the Espressif32-Platform and defined the corresponding variant in the Arduino-Framework (pins_arduino.h).
Both Platformio (VSCode) and the Espressif32-Platform are up to date.
[env:nodemcu-32-s2]
platform = espressif32
board = nodemcu-32-s2
framework = arduino
platform_packages =
platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#2.0.1
When compiling my app I first encountered problems with the left one, so I wanted to switch to the newer espressif toolchain.
[env:nodemcu-32-s2]
platform = espressif32
board = nodemcu-32-s2
framework = arduino
platform_packages =
espressif/toolchain-xtensa-esp32s2 @ 8.4.0+2021r2
platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#2.0.1
However, after adding the toolchain to platformio.ini, the linker has the same problem. Interestingly, it still uses the plaformio toolchain for linking. Is there any way to set which toolchain the compiler uses and when?
Processing nodemcu-32-s2 (platform: espressif32; board: nodemcu-32-s2; framework: arduino)
--------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/nodemcu-32-s2.html
PLATFORM: Espressif 32 (3.4.0) > NodeMCU-32-S2
HARDWARE: ESP32S2 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (esp-prog) External (esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
- framework-arduinoespressif32 0.0.0+sha.d218e58
- tool-esptoolpy 1.30100.210531 (3.1.0)
- toolchain-riscv-esp 1.80400.0 (8.4.0)
- toolchain-xtensa32s2 1.80400.210211 (8.4.0)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 31 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Compiling .pio/build/nodemcu-32-s2/src/main.cpp.o
Generating partitions .pio/build/nodemcu-32-s2/partitions.bin
Archiving .pio/build/nodemcu-32-s2/libFrameworkArduinoVariant.a
Indexing .pio/build/nodemcu-32-s2/libFrameworkArduinoVariant.a
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/Esp.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/FirmwareMSC.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/FunctionalInterrupt.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/HWCDC.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/HardwareSerial.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/IPAddress.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/IPv6Address.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/MD5Builder.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/Print.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/Stream.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/StreamString.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/USB.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/USBCDC.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/USBMSC.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/WMath.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/WString.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/base64.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/cbuf.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-adc.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-bt.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-cpu.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-dac.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-gpio.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-i2c-slave.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-i2c.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-ledc.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-matrix.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-misc.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-psram.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-rmt.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-sigmadelta.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-spi.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-time.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-timer.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-tinyusb.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-touch.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-uart.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/firmware_msc_fat.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/libb64/cdecode.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/libb64/cencode.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/main.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/stdlib_noniso.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/wiring_pulse.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/wiring_shift.c.o
Archiving .pio/build/nodemcu-32-s2/libFrameworkArduino.a
Indexing .pio/build/nodemcu-32-s2/libFrameworkArduino.a
Linking .pio/build/nodemcu-32-s2/firmware.elf
/home/xxxxxx/.platformio/packages/toolchain-xtensa32s2/bin/../lib/gcc/xtensa-esp32s2-elf/8.4.0/../../../../xtensa-esp32s2-elf/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
*** [.pio/build/nodemcu-32-s2/firmware.elf] Error 1
> Executing task in folder VS1053_2: platformio run --environment nodemcu-32-s2 <
Processing nodemcu-32-s2 (platform: espressif32; board: nodemcu-32-s2; framework: arduino)
--------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/nodemcu-32-s2.html
PLATFORM: Espressif 32 (3.4.0) > NodeMCU-32-S2
HARDWARE: ESP32S2 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (esp-prog) External (esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
- framework-arduinoespressif32 0.0.0+sha.d218e58
- tool-esptoolpy 1.30100.210531 (3.1.0)
- toolchain-riscv-esp 1.80400.0 (8.4.0)
- toolchain-xtensa-esp32s2 8.4.0+2021r2
- toolchain-xtensa32s2 1.80400.210211 (8.4.0)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 31 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Compiling .pio/build/nodemcu-32-s2/src/main.cpp.o
Generating partitions .pio/build/nodemcu-32-s2/partitions.bin
Archiving .pio/build/nodemcu-32-s2/libFrameworkArduinoVariant.a
Indexing .pio/build/nodemcu-32-s2/libFrameworkArduinoVariant.a
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/Esp.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/FirmwareMSC.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/FunctionalInterrupt.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/HWCDC.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/HardwareSerial.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/IPAddress.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/IPv6Address.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/MD5Builder.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/Print.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/Stream.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/StreamString.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/USB.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/USBCDC.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/USBMSC.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/WMath.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/WString.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/base64.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/cbuf.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-adc.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-bt.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-cpu.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-dac.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-gpio.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-i2c-slave.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-i2c.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-ledc.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-matrix.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-misc.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-psram.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-rmt.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-sigmadelta.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-spi.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-time.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-timer.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-tinyusb.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-touch.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/esp32-hal-uart.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/firmware_msc_fat.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/libb64/cdecode.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/libb64/cencode.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/main.cpp.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/stdlib_noniso.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/wiring_pulse.c.o
Compiling .pio/build/nodemcu-32-s2/FrameworkArduino/wiring_shift.c.o
Archiving .pio/build/nodemcu-32-s2/libFrameworkArduino.a
Indexing .pio/build/nodemcu-32-s2/libFrameworkArduino.a
Linking .pio/build/nodemcu-32-s2/firmware.elf
/home/xxxxxxx/.platformio/packages/toolchain-xtensa32s2/bin/../lib/gcc/xtensa-esp32s2-elf/8.4.0/../../../../xtensa-esp32s2-elf/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
*** [.pio/build/nodemcu-32-s2/firmware.elf] Error 1
Dear all,
Since Platformio recently started supporting the new Arduino version for ESP, I wanted to get my NodeMCU-32-S2 board running with it. I created a new board for the Espressif32-Platform and defined the corresponding variant in the Arduino-Framework (pins_arduino.h).
Both Platformio (VSCode) and the Espressif32-Platform are up to date.
When compiling my app I first encountered problems with the left one, so I wanted to switch to the newer espressif toolchain.
However, after adding the toolchain to platformio.ini, the linker has the same problem. Interestingly, it still uses the plaformio toolchain for linking. Is there any way to set which toolchain the compiler uses and when?