Skip to content

Dual Toolchain usage [ESP32S2] #679

@tobiasjaster

Description

@tobiasjaster

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions