platformio / platformio-core

Your Gateway to Embedded Software Development Excellence :alien:
https://platformio.org
Apache License 2.0
7.77k stars 784 forks source link

Error with compiling for ESP32 #3659

Closed kugelkopf123 closed 3 years ago

kugelkopf123 commented 3 years ago

You can erase any parts of this template not applicable to your Issue.


Configuration

Operating system: OSX 10.13.6 PlatformIO Version (platformio --version): PlatformIO on VSCode, version 5.0.0

Description of problem

I tried to compile the recent tasmota Dev Branch for the ESP32Dev Board. It stops with following Error: *** [tasmota/StackThunk_light.cpp] /Volumes/Macintosh SD/Benutzer/myUsername/Downloads/Github/Tasmota/.pioenvs/tasmota32-DE/.sconsign37.dblite: No such file or directory

Ive tried to reinstall the whole PlatformIO/VSCode stuff. Deleted the .platformio Folder end tried it again. Nothing from that Works. I also tried the 2.0.0 Framework from Espressif32

Steps to Reproduce

  1. Install VS Code + Platformio v5
  2. Download Tasmota latestDev
  3. Try to Build tasmota32 Enviroment

Actual Results


> Executing task: platformio run --environment tasmota32-DE <

Processing tasmota32-DE (framework: arduino; platform: espressif32@2.0.0; board: esp32dev)
----------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html
PLATFORM: Espressif 32 (2.0.0) > Espressif ESP32 Dev Module
HARDWARE: ESP32 80MHz, 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 3.10004.200129 (1.0.4) 
 - tool-esptoolpy 1.20800.0 (2.8.0) 
 - toolchain-xtensa32 2.50200.80 (5.2.0)
Converting tasmota.ino
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 84 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <ESP32-to-ESP8266-compat> 0.0.2
|   |-- <WiFi> 1.0
|   |-- <HTTPClient> 1.2
|   |   |-- <WiFi> 1.0
|   |   |-- <WiFiClientSecure> 1.0
|   |   |   |-- <WiFi> 1.0
|   |-- <WebServer> 1.0
|   |   |-- <WiFi> 1.0
|   |   |-- <FS> 1.0
|   |-- <HTTPUpdate> 1.3
|   |   |-- <HTTPClient> 1.2
|   |   |   |-- <WiFi> 1.0
|   |   |   |-- <WiFiClientSecure> 1.0
|   |   |   |   |-- <WiFi> 1.0
|   |   |-- <Update> 1.0
|   |   |-- <WiFi> 1.0
|-- <WiFi> 1.0
|-- <BearSSL> 0.6
|-- <WiFiClientSecure> 1.0
|   |-- <WiFi> 1.0
|-- <Adafruit CCS811 Library> 1.0.0
|   |-- <Wire> 1.0.1
|-- <Adafruit MAX31865 library> 1.0.1
|   |-- <SPI> 1.0
|-- <Adafruit MCP9808 Library> 1.1.2
|   |-- <Wire> 1.0.1
|-- <Adafruit SGP30 Sensor> 1.2.0
|   |-- <Wire> 1.0.1
|-- <Adafruit VEML7700 Library> 1.0.0
|   |-- <Adafruit BusIO> 1.0.10
|   |   |-- <Wire> 1.0.1
|   |   |-- <SPI> 1.0
|   |-- <Wire> 1.0.1
|-- <ESP8266Audio> 1.5.0
|   |-- <SPI> 1.0
|   |-- <ESP32-to-ESP8266-compat> 0.0.2
|   |   |-- <WiFi> 1.0
|   |   |-- <HTTPClient> 1.2
|   |   |   |-- <WiFi> 1.0
|   |   |   |-- <WiFiClientSecure> 1.0
|   |   |   |   |-- <WiFi> 1.0
|   |   |-- <WebServer> 1.0
|   |   |   |-- <WiFi> 1.0
|   |   |   |-- <FS> 1.0
|   |   |-- <HTTPUpdate> 1.3
|   |   |   |-- <HTTPClient> 1.2
|   |   |   |   |-- <WiFi> 1.0
|   |   |   |   |-- <WiFiClientSecure> 1.0
|   |   |   |   |   |-- <WiFi> 1.0
|   |   |   |-- <Update> 1.0
|   |   |   |-- <WiFi> 1.0
|   |-- <HTTPClient> 1.2
|   |   |-- <WiFi> 1.0
|   |   |-- <WiFiClientSecure> 1.0
|   |   |   |-- <WiFi> 1.0
|   |-- <WiFi> 1.0
|   |-- <FS> 1.0
|   |-- <SPIFFS> 1.0
|   |   |-- <FS> 1.0
|   |-- <FFat> 1.0
|   |   |-- <FS> 1.0
|   |-- <SD(esp32)> 1.0.5
|   |   |-- <FS> 1.0
|   |   |-- <SPI> 1.0
|-- <ESP32 Mail Client> 2.1.4
|   |-- <WiFi> 1.0
|   |-- <HTTPClient> 1.2
|   |   |-- <WiFi> 1.0
|   |   |-- <WiFiClientSecure> 1.0
|   |   |   |-- <WiFi> 1.0
|   |-- <FS> 1.0
|   |-- <SD(esp32)> 1.0.5
|   |   |-- <FS> 1.0
|   |   |-- <SPI> 1.0
|   |-- <SPI> 1.0
|   |-- <SPIFFS> 1.0
|   |   |-- <FS> 1.0
|-- <FFat> 1.0
|   |-- <FS> 1.0
|-- <FS> 1.0
|-- <I2Cdevlib-Core>
|   |-- <Wire> 1.0.1
|-- <LibTeleinfo> 1.1.3
|-- <I2Cdevlib-MPU6050>
|   |-- <I2Cdevlib-Core>
|   |   |-- <Wire> 1.0.1
|-- <Mutichannel_Gas_Sensor> 0.0.1
|   |-- <Wire> 1.0.1
|-- <ArduinoNTPd>
|   |-- <WiFi> 1.0
|-- <OpenTherm Library> 0.9.0
|-- <SD(esp32)> 1.0.5
|   |-- <FS> 1.0
|   |-- <SPI> 1.0
|-- <SPIFFS> 1.0
|   |-- <FS> 1.0
|-- <UdpListener> 1.0
|-- <VL53L0X> 1.0.2
|   |-- <Wire> 1.0.1
|-- <C2Programmer> 1.0.0
|-- <A4988_Stepper> 0.0.1
|-- <Adafruit GFX Library> 1.5.6
|   |-- <SPI> 1.0
|-- <Adafruit ILI9341> 1.2.0
|   |-- <Adafruit GFX Library> 1.5.6
|   |   |-- <SPI> 1.0
|   |-- <SPI> 1.0
|-- <Adafruit LED Backpack Library> 1.1.6
|   |-- <Adafruit GFX Library> 1.5.6
|   |   |-- <SPI> 1.0
|   |-- <Wire> 1.0.1
|-- <Adafruit_SH1106-gemu-1.0>
|   |-- <Waveshare esp 2.9 inch e-paper display driver> 1.0
|   |   |-- <Adafruit GFX Library> 1.5.6
|   |   |   |-- <SPI> 1.0
|   |   |-- <SPI> 1.0
|   |-- <Wire> 1.0.1
|-- <Adafruit SSD1306> 1.3.0
|   |-- <Adafruit GFX Library> 1.5.6
|   |   |-- <SPI> 1.0
|   |-- <SPI> 1.0
|   |-- <Wire> 1.0.1
|   |-- <Waveshare esp 2.9 inch e-paper display driver> 1.0
|   |   |-- <Adafruit GFX Library> 1.5.6
|   |   |   |-- <SPI> 1.0
|   |   |-- <SPI> 1.0
|-- <Adafruit_TSL2591_Library>
|   |-- <Wire> 1.0.1
|-- <ArduinoJson> 5.13.4
|-- <ArduinoOTA> 1.0
|   |-- <Update> 1.0
|   |-- <WiFi> 1.0
|   |-- <ESPmDNS> 1.0
|   |   |-- <WiFi> 1.0
|-- <Arduino ST7789 Library> 0.9.5
|   |-- <Adafruit GFX Library> 1.5.6
|   |   |-- <SPI> 1.0
|   |-- <Waveshare esp 2.9 inch e-paper display driver> 1.0
|   |   |-- <Adafruit GFX Library> 1.5.6
|   |   |   |-- <SPI> 1.0
|   |   |-- <SPI> 1.0
|   |-- <SPI> 1.0
|-- <DNSServer> 1.1.0
|   |-- <WiFi> 1.0
|-- <ESP8266SAM> 1.0
|   |-- <ESP8266Audio> 1.5.0
|   |   |-- <SPI> 1.0
|   |   |-- <ESP32-to-ESP8266-compat> 0.0.2
|   |   |   |-- <WiFi> 1.0
|   |   |   |-- <HTTPClient> 1.2
|   |   |   |   |-- <WiFi> 1.0
|   |   |   |   |-- <WiFiClientSecure> 1.0
|   |   |   |   |   |-- <WiFi> 1.0
|   |   |   |-- <WebServer> 1.0
|   |   |   |   |-- <WiFi> 1.0
|   |   |   |   |-- <FS> 1.0
|   |   |   |-- <HTTPUpdate> 1.3
|   |   |   |   |-- <HTTPClient> 1.2
|   |   |   |   |   |-- <WiFi> 1.0
|   |   |   |   |   |-- <WiFiClientSecure> 1.0
|   |   |   |   |   |   |-- <WiFi> 1.0
|   |   |   |   |-- <Update> 1.0
|   |   |   |   |-- <WiFi> 1.0
|   |   |-- <HTTPClient> 1.2
|   |   |   |-- <WiFi> 1.0
|   |   |   |-- <WiFiClientSecure> 1.0
|   |   |   |   |-- <WiFi> 1.0
|   |   |-- <WiFi> 1.0
|   |   |-- <FS> 1.0
|   |   |-- <SPIFFS> 1.0
|   |   |   |-- <FS> 1.0
|   |   |-- <FFat> 1.0
|   |   |   |-- <FS> 1.0
|   |   |-- <SD(esp32)> 1.0.5
|   |   |   |-- <FS> 1.0
|   |   |   |-- <SPI> 1.0
|-- <ESP32 Ethernet> 1.1.0
|   |-- <WiFi> 1.0
|-- <AT24C256>
|   |-- <Wire> 1.0.1
|-- <FT5206_Library> 1.0.0
|   |-- <Wire> 1.0.1
|-- <FrogmoreScd30>
|   |-- <Wire> 1.0.1
|   |-- <ESP32-to-ESP8266-compat> 0.0.2
|   |   |-- <WiFi> 1.0
|   |   |-- <HTTPClient> 1.2
|   |   |   |-- <WiFi> 1.0
|   |   |   |-- <WiFiClientSecure> 1.0
|   |   |   |   |-- <WiFi> 1.0
|   |   |-- <WebServer> 1.0
|   |   |   |-- <WiFi> 1.0
|   |   |   |-- <FS> 1.0
|   |   |-- <HTTPUpdate> 1.3
|   |   |   |-- <HTTPClient> 1.2
|   |   |   |   |-- <WiFi> 1.0
|   |   |   |   |-- <WiFiClientSecure> 1.0
|   |   |   |   |   |-- <WiFi> 1.0
|   |   |   |-- <Update> 1.0
|   |   |   |-- <WiFi> 1.0
|-- <ILI9488> 1.0.2
|   |-- <Waveshare esp 2.9 inch e-paper display driver> 1.0
|   |   |-- <Adafruit GFX Library> 1.5.6
|   |   |   |-- <SPI> 1.0
|   |   |-- <SPI> 1.0
|   |-- <SPI> 1.0
|-- <IRremoteESP8266> 2.7.10
|   |-- <ESP32-to-ESP8266-compat> 0.0.2
|   |   |-- <WiFi> 1.0
|   |   |-- <HTTPClient> 1.2
|   |   |   |-- <WiFi> 1.0
|   |   |   |-- <WiFiClientSecure> 1.0
|   |   |   |   |-- <WiFi> 1.0
|   |   |-- <WebServer> 1.0
|   |   |   |-- <WiFi> 1.0
|   |   |   |-- <FS> 1.0
|   |   |-- <HTTPUpdate> 1.3
|   |   |   |-- <HTTPClient> 1.2
|   |   |   |   |-- <WiFi> 1.0
|   |   |   |   |-- <WiFiClientSecure> 1.0
|   |   |   |   |   |-- <WiFi> 1.0
|   |   |   |-- <Update> 1.0
|   |   |   |-- <WiFi> 1.0
|-- <KeeloqLib> 1.1
|-- <LOLIN_HP303B> 1.0.0
|   |-- <SPI> 1.0
|   |-- <Wire> 1.0.1
|-- <LinkedList>
|-- <LiquidCrystal_I2C>
|   |-- <Wire> 1.0.1
|-- <NeoPixelBus> 2.5.0
|   |-- <SPI> 1.0
|   |-- <ESP32-to-ESP8266-compat> 0.0.2
|   |   |-- <WiFi> 1.0
|   |   |-- <HTTPClient> 1.2
|   |   |   |-- <WiFi> 1.0
|   |   |   |-- <WiFiClientSecure> 1.0
|   |   |   |   |-- <WiFi> 1.0
|   |   |-- <WebServer> 1.0
|   |   |   |-- <WiFi> 1.0
|   |   |   |-- <FS> 1.0
|   |   |-- <HTTPUpdate> 1.3
|   |   |   |-- <HTTPClient> 1.2
|   |   |   |   |-- <WiFi> 1.0
|   |   |   |   |-- <WiFiClientSecure> 1.0
|   |   |   |   |   |-- <WiFi> 1.0
|   |   |   |-- <Update> 1.0
|   |   |   |-- <WiFi> 1.0
|-- <NewPing> 1.9.1
|-- <NimBLE-Arduino> 0.9.0
|-- <PubSubClient> 2.7
|-- <RA8876> 1.0.2
|   |-- <SPI> 1.0
|   |-- <Waveshare esp 2.9 inch e-paper display driver> 1.0
|   |   |-- <Adafruit GFX Library> 1.5.6
|   |   |   |-- <SPI> 1.0
|   |   |-- <SPI> 1.0
|-- <rc-switch> 2.6.2
|-- <RF24> 1.3.3
|   |-- <SPI> 1.0
|-- <SPI> 1.0
|-- <SSD3115> 1.0
|   |-- <Waveshare esp 2.9 inch e-paper display driver> 1.0
|   |   |-- <Adafruit GFX Library> 1.5.6
|   |   |   |-- <SPI> 1.0
|   |   |-- <SPI> 1.0
|   |-- <SPI> 1.0
|-- <TasmotaModbus> 1.2.0
|   |-- <TasmotaSerial> 3.1.0
|   |   |-- <ESP32-to-ESP8266-compat> 0.0.2
|   |   |   |-- <WiFi> 1.0
|   |   |   |-- <HTTPClient> 1.2
|   |   |   |   |-- <WiFi> 1.0
|   |   |   |   |-- <WiFiClientSecure> 1.0
|   |   |   |   |   |-- <WiFi> 1.0
|   |   |   |-- <WebServer> 1.0
|   |   |   |   |-- <WiFi> 1.0
|   |   |   |   |-- <FS> 1.0
|   |   |   |-- <HTTPUpdate> 1.3
|   |   |   |   |-- <HTTPClient> 1.2
|   |   |   |   |   |-- <WiFi> 1.0
|   |   |   |   |   |-- <WiFiClientSecure> 1.0
|   |   |   |   |   |   |-- <WiFi> 1.0
|   |   |   |   |-- <Update> 1.0
|   |   |   |   |-- <WiFi> 1.0
|-- <TasmotaSerial> 3.1.0
|   |-- <ESP32-to-ESP8266-compat> 0.0.2
|   |   |-- <WiFi> 1.0
|   |   |-- <HTTPClient> 1.2
|   |   |   |-- <WiFi> 1.0
|   |   |   |-- <WiFiClientSecure> 1.0
|   |   |   |   |-- <WiFi> 1.0
|   |   |-- <WebServer> 1.0
|   |   |   |-- <WiFi> 1.0
|   |   |   |-- <FS> 1.0
|   |   |-- <HTTPUpdate> 1.3
|   |   |   |-- <HTTPClient> 1.2
|   |   |   |   |-- <WiFi> 1.0
|   |   |   |   |-- <WiFiClientSecure> 1.0
|   |   |   |   |   |-- <WiFi> 1.0
|   |   |   |-- <Update> 1.0
|   |   |   |-- <WiFi> 1.0
|-- <Ticker> 1.1
|-- <Joba_Tsl2561> 2.0.10
|   |-- <Wire> 1.0.1
|-- <Wire> 1.0.1
|-- <TTGO TWatch Library> 1.2.0
|   |-- <Wire> 1.0.1
|-- <base64> 1.1.1
|-- <BME680_driver-bme680_v3.5.9>
|-- <Waveshare esp 2.9 inch e-paper display driver> 1.0
|   |-- <Adafruit GFX Library> 1.5.6
|   |   |-- <SPI> 1.0
|   |-- <SPI> 1.0
|-- <ESP KNX IP Library> 0.5.2
|   |-- <EEPROM> 1.0.3
|   |-- <ESP32-to-ESP8266-compat> 0.0.2
|   |   |-- <WiFi> 1.0
|   |   |-- <HTTPClient> 1.2
|   |   |   |-- <WiFi> 1.0
|   |   |   |-- <WiFiClientSecure> 1.0
|   |   |   |   |-- <WiFi> 1.0
|   |   |-- <WebServer> 1.0
|   |   |   |-- <WiFi> 1.0
|   |   |   |-- <FS> 1.0
|   |   |-- <HTTPUpdate> 1.3
|   |   |   |-- <HTTPClient> 1.2
|   |   |   |   |-- <WiFi> 1.0
|   |   |   |   |-- <WiFiClientSecure> 1.0
|   |   |   |   |   |-- <WiFi> 1.0
|   |   |   |-- <Update> 1.0
|   |   |   |-- <WiFi> 1.0
|   |-- <WiFi> 1.0
|-- <HPMA115S0 Arduino Library> 1.0.0
|-- <Unishox Compressor Decompressor highly customized and optimized for ESP8266 and Tasmota> 1.0
Building in release mode
*** use provided user_config_override.h as planned ***
*** [tasmota/StackThunk_light.cpp] /Volumes/Macintosh SD/Benutzer/myUsername/Downloads/Github/Tasmota/.pioenvs/tasmota32-DE/.sconsign37.dblite: No such file or directory
===================================================== [FAILED] Took 15.23 seconds =====================================================

Environment    Status    Duration
-------------  --------  ------------
tasmota32-DE   FAILED    00:00:15.233
================================================ 1 failed, 0 succeeded in 00:00:15.233 ================================================
The terminal process "platformio 'run', '--environment', 'tasmota32-DE'" terminated with exit code: 1.

Expected Results

Building a working file.

If problems with PlatformIO Build System:

The content of platformio.ini:

Platformio.ini:

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter, extra scripting
;   Upload options: custom port, speed and extra flags
;   Library options: dependencies, extra library storages
;
; Please visit documentation for the other options and examples
; http://docs.platformio.org/en/stable/projectconf.html

[platformio]
description = Provide ESP8266 based devices with Web, MQTT and OTA firmware
src_dir = tasmota
build_dir = .pioenvs
workspace_dir = .pioenvs
build_cache_dir = .cache
extra_configs = platformio_tasmota32.ini
                platformio_tasmota_env.ini
                platformio_tasmota_env32.ini
                platformio_override.ini

; *** Build/upload environment
default_envs =
; *** Uncomment by deleting ";" in the line(s) below to select version(s)
;                tasmota
;                tasmota-ircustom
;                tasmota-minimal
;                tasmota-lite
;                tasmota-knx
;                tasmota-sensors
;                tasmota-display
;                tasmota-zbbridge
;                tasmota-ir
;                tasmota-BG
;                tasmota-BR
;                tasmota-CN
;                tasmota-CZ
;                tasmota-DE
;                tasmota-ES
;                tasmota-FR
;                tasmota-GR
;                tasmota-HE
;                tasmota-HU
;                tasmota-IT
;                tasmota-KO
;                tasmota-NL
;                tasmota-PL
;                tasmota-PT
;                tasmota-RO
;                tasmota-RU
;                tasmota-SE
;                tasmota-SK
;                tasmota-TR
;                tasmota-TW
;                tasmota-UK
;
; *** alternatively can be done in: platformio_override.ini
; *** See example: platformio_override_sample.ini
; *********************************************************************

[common]
framework                 = arduino
board                     = esp01_1m
board_build.flash_mode    = dout
board_build.ldscript      = eagle.flash.1m.ld

platform                  = ${core.platform}
platform_packages         = ${core.platform_packages}
build_unflags             = ${core.build_unflags}
build_flags               = ${core.build_flags}

board_build.f_cpu         = 80000000L
board_build.f_flash       = 40000000L
monitor_speed             = 115200
upload_speed              = 115200
; *** Upload Serial reset method for Wemos and NodeMCU
upload_resetmethod        = nodemcu
upload_port               = COM5
extra_scripts             = ${scripts_defaults.extra_scripts}

[scripts_defaults]
extra_scripts             = pio/strip-floats.py
                            pio/name-firmware.py
                            pio/gzip-firmware.py
                            pio/override_copy.py

[esp_defaults]
; *** remove undesired all warnings
build_unflags             = -Wall
                            -Wdeprecated-declarations
build_flags               = -Wno-deprecated-declarations
                            -D_IR_ENABLE_DEFAULT_=false
                            -DDECODE_HASH=true -DDECODE_NEC=true -DSEND_NEC=true
                            -DDECODE_RC5=true -DSEND_RC5=true -DDECODE_RC6=true -DSEND_RC6=true
; new mechanism to set the IRremoteESP8266 supported protocols: none except HASH, NEC, RC5, RC6
; *********************************************************************
; *** Use custom settings from file user_config_override.h
                            -DUSE_CONFIG_OVERRIDE
; *********************************************************************

[esp82xx_defaults]
build_flags               = ${esp_defaults.build_flags}
                            -Wl,-Map,firmware.map
                            -D CORE_DEBUG_LEVEL=0
                            -D NDEBUG
                            -mtarget-align
                            -DFP_IN_IROM
                            -DBEARSSL_SSL_BASIC
                            ; NONOSDK22x_190703 = 2.2.2-dev(38a443e)
                            -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_190703
                            ; lwIP 2 - Higher Bandwidth no Features
                            -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH_LOW_FLASH
                            ; VTABLES in Flash
                            -DVTABLES_IN_FLASH                         
                            ; remove the 4-bytes alignment for PSTR()
                            -DPSTR_ALIGN=1
                            ; restrict to minimal mime-types
                            -DMIMETYPE_MINIMAL

[irremoteesp_full]
build_flags               = -DUSE_IR_REMOTE_FULL
                            -U_IR_ENABLE_DEFAULT_
                            -DDECODE_PRONTO=false -DSEND_PRONTO=false

[core]
; *** Esp8266 Tasmota modified Arduino core based on core 2.7.4
platform                  = espressif8266@2.6.2
platform_packages         = jason2866/framework-arduinoespressif8266
build_unflags             = ${esp_defaults.build_unflags}
build_flags               = ${esp82xx_defaults.build_flags}

Platformio_tasmota32.ini:

; ***              BETA ESP32 Tasmota version                 ***
; ***  expect the unexpected. Some features not working!!!    ***

[common32]
platform                = espressif32@2.0.0
platform_packages       = tool-esptoolpy@1.20800.0
board                   = esp32dev
board_build.ldscript    = esp32_out.ld
board_build.partitions  = esp32_partition_app1984k_spiffs64k.csv
board_build.flash_mode  = ${common.board_build.flash_mode}
board_build.f_flash     = ${common.board_build.f_flash}
board_build.f_cpu       = ${common.board_build.f_cpu}
build_unflags           = ${esp_defaults.build_unflags}
                          -Wpointer-arith
monitor_speed           = ${common.monitor_speed}
upload_port             = ${common.upload_port}
upload_resetmethod      = ${common.upload_resetmethod}
upload_speed            = 921600
extra_scripts           = ${common.extra_scripts}

build_flags             = ${esp_defaults.build_flags}

    -D CORE_DEBUG_LEVEL=0
    -D BUFFER_LENGTH=128
    -D MQTT_MAX_PACKET_SIZE=1200
    -D uint32=uint32_t
    -D uint16=uint16_t
    -D uint8=uint8_t
    -D sint8_t=int8_t
    -D sint32_t=int32_t
    -D sint16_t=int16_t
    -D memcpy_P=memcpy
      -D memcmp_P=memcmp

lib_extra_dirs =
    libesp32

lib_ignore =
    cc1101

Source file to reproduce issue:


/*
  StackThunk_light.c - Allow use second stack for BearSSL calls
  Light version with reduced Stack size due to Tasmota optimizations.

  BearSSL uses a significant amount of stack space, much larger than
  the default Arduino core stack. These routines handle swapping
  between a secondary, user-allocated stack on the heap and the real
  stack.

  Copyright (c) 2017 Earle F. Philhower, III. All rights reserved.

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.

  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General Public
  License along with this library; if not, write to the Free Software
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  Modified 8 May 2015 by Hristo Gochkov (proper post and file upload handling)
*/

#include "my_user_config.h"

#include <stdint.h>
#include <stdlib.h>
#include "StackThunk_light.h"
#include <ets_sys.h>

extern "C" {

uint32_t *stack_thunk_light_ptr = NULL;
uint32_t *stack_thunk_light_top = NULL;
uint32_t *stack_thunk_light_save = NULL;  /* Saved A1 while in BearSSL */
uint32_t stack_thunk_light_refcnt = 0;

//#define _stackSize (5600/4)
#ifdef USE_MQTT_TLS_FORCE_EC_CIPHER
  #define _stackSize (5300/4)   // using a light version of bearssl we can save 300 bytes
#else
  #define _stackSize (3600/4)   // using a light version of bearssl we can save 2k
#endif
#define _stackPaint 0xdeadbeef

/* Add a reference, and allocate the stack if necessary */
void stack_thunk_light_add_ref()
{
  stack_thunk_light_refcnt++;
  if (stack_thunk_light_refcnt == 1) {
    stack_thunk_light_ptr = (uint32_t *)malloc(_stackSize * sizeof(uint32_t));
    stack_thunk_light_top = stack_thunk_light_ptr + _stackSize - 1;
    stack_thunk_light_save = NULL;
    stack_thunk_light_repaint();
  }
}

/* Drop a reference, and free stack if no more in use */
void stack_thunk_light_del_ref()
{
  if (stack_thunk_light_refcnt == 0) {
    /* Error! */
    return;
  }
  stack_thunk_light_refcnt--;
  if (!stack_thunk_light_refcnt) {
    free(stack_thunk_light_ptr);
    stack_thunk_light_ptr = NULL;
    stack_thunk_light_top = NULL;
    stack_thunk_light_save = NULL;
  }
}

void stack_thunk_light_repaint()
{
  if (stack_thunk_light_ptr) {
    for (int i=0; i < _stackSize; i++) {
      stack_thunk_light_ptr[i] = _stackPaint;
    }
  }
}

/* Simple accessor functions used by postmortem */
uint32_t stack_thunk_light_get_refcnt() {
  return stack_thunk_light_refcnt;
}

uint32_t stack_thunk_light_get_stack_top() {
  return (uint32_t)stack_thunk_light_top;
}

uint32_t stack_thunk_light_get_stack_bot() {
  return (uint32_t)stack_thunk_light_ptr;
}

uint32_t stack_thunk_light_get_cont_sp() {
  return (uint32_t)stack_thunk_light_save;
}

/* Return the number of bytes ever used since the stack was created */
uint32_t stack_thunk_light_get_max_usage()
{
  uint32_t cnt = 0;

  /* No stack == no usage by definition! */
  if (!stack_thunk_light_ptr) {
    return 0;
  }

  for (cnt=0; (cnt < _stackSize) && (stack_thunk_light_ptr[cnt] == _stackPaint); cnt++) {
    /* Noop, all work done in for() */
  }
  return 4 * (_stackSize - cnt);
}

/* Print the stack from the first used 16-byte chunk to the top, decodable by the exception decoder */
void stack_thunk_light_dump_stack()
{
  uint32_t *pos = stack_thunk_light_top;
  while (pos < stack_thunk_light_ptr) {
    if ((pos[0] != _stackPaint) || (pos[1] != _stackPaint) || (pos[2] != _stackPaint) || (pos[3] != _stackPaint))
      break;
    pos += 4;
  }
  ets_printf(">>>stack>>>\n");
  while (pos < stack_thunk_light_ptr) {
    ets_printf("%08x:  %08x %08x %08x %08x\n", (int32_t)pos, pos[0], pos[1], pos[2], pos[3]);
    pos += 4;
  }
  ets_printf("<<<stack<<<\n");
}

/* Called when the stack overflow is detected by a thunk.  Main memory is corrupted at this point.  Do not return. */
void stack_thunk_light_fatal_overflow()
{
    ets_printf("FATAL ERROR: BSSL stack overflow\n");
    abort();
}

};

Additional info

Related issue from Tasmota issues: https://github.com/arendst/Tasmota/issues/9254

kugelkopf123 commented 3 years ago

Just tested it, its not related to ESP32 its the same with esp8266. Pls change the Topic.

ivankravets commented 3 years ago

Please remove /Volumes/Macintosh SD/Benutzer/myUsername/Downloads/Github/Tasmota/.pioenvs folder and start building again. Does it work now?

kugelkopf123 commented 3 years ago

No. Nothing changed. Its the same. I also removed the .cache folder and tried it with "clean" Its still the same.

ivankravets commented 3 years ago

Do you have multiple PlatformIO Cores in a system? https://docs.platformio.org/en/latest/faq.html#multiple-platformio-cores-in-a-system

Do you use PlatformIO IDE and its built-in PIO Core or you installed it multiple times via pip/brew?

kugelkopf123 commented 3 years ago

Do you have multiple PlatformIO Cores in a system? https://docs.platformio.org/en/latest/faq.html#multiple-platformio-cores-in-a-system

Do you use PlatformIO IDE and its built-in PIO Core or you installed it multiple times via pip/brew?

Thanks for your reply. I already checked this doc. No i havent. I also tried the two commands to uninstall via pip/pip3/brew. But it says its not found on system. eg: WARNING: Skipping platformio as it is not installed. or:

brew uninstall platformio
Error: No such keg: /usr/local/Cellar/platformio
ivankravets commented 3 years ago

We are working on PlatformIO Core 5.0.1. It would be great to fix this issue. Could you mail me personally via me@ikravets.com? I'll provide further info how we could debug this issue. Thanks!

kugelkopf123 commented 3 years ago

@ivankravets Mail is on the way.

ivankravets commented 3 years ago

Hi @arendst , @Jason2866,

Could you help here? Something going strange with a build process. It totally removes LIB and BUILD folders. I see also that whole project structure changes in runtime to legacy PIO Core 3.0 structure. New library folders triggers PlatformIO IDE to rebuild C/C++ IntelliSense index which leads to a fatal error. Someone removes internal PlatformIO folders in runtime.

ivankravets commented 3 years ago

I forgot, it works from CLI but does not work from PlatformIO IDE for VSCode.

Jason2866 commented 3 years ago

@ivankravets i am lost in this issue. I cant reproduce. Tasmota compiles without a error on Windows and Linux. Since i have no MAC i cant test on this platform. @s-hadinger (our zigbee developer) uses a MAC an do not have an issue too.

@kugelkopf123 BearSSL is NOT supported in ESP32 . There is no port done. Can you mail me your settings file (my_user_config.h and user_config_override.h and ALL platformio files). obermeier.johann(at)gmail.com Maybe your Tasmota setup is killing platformio somehow.

kugelkopf123 commented 3 years ago

@Jason2866 Ok done! But as i mentioned in the Mail, I just tried it once again with a fresh download in another folder without changing anything in any of the config files and its the same Problem. I have it on both Macs. On my Macbook and my iMac.

Jason2866 commented 3 years ago

Used Github Actions CI to do a build on Mac OS. Builded Tasmota32-DE. No error See https://github.com/Jason2866/Tasmota/runs/1093098093?check_suite_focus=true Click on Tasmota32-DE version to see all LOGs (Details)

ivankravets commented 3 years ago

It works from CLI but does not work from IDE. Do you remove “lib” or “.pioenvs” folders in extra scripts?

Jason2866 commented 3 years ago

Mhh, Just asked Stephan he uses VSC / Platformio and MacOs 10.14.6 Mojave. We have in lib folder our libraries (local). Many are modified. So no download from Platformio registry or other online sources. Removing lib folder content is destroying Tasmota. Removing .pioenvs is no problem. Rebuilded. @Staars (writing sensor driver for Tasmota) has a Mac too. His setup VSC / Platformio. No issue. No idea what makes it fail

kugelkopf123 commented 3 years ago

Is there something more that i can check?

Jason2866 commented 3 years ago

okay, more tests... Fresh „git clones“ on Catalina and Big Sur-beta are failing. For whatever reason the Tasmota32-folder is deleted by something. not anything useful in the logs. Compiling with MacOs 10.14.6 Mojave does work @ivankravets There is a strange bug :-(

kugelkopf123 commented 3 years ago

okay, more tests... Fresh „git clones“ on Catalina and Big Sur-beta are failing. For whatever reason the Tasmota32-folder is deleted by something. not anything useful in the logs. Compiling with MacOs 10.14.6 Mojave does work @ivankravets There is a strange bug :-(

Ok. Good to hear that Iam not the only one. My Macbook is on 10.13.6HighSierra and my iMac on Mojave. But i dont think that this has something to do with it. Dont know :-/.

ivankravets commented 3 years ago

I could reproduce this issue. The problem is linked with invalid platformio.ini.

build_dir = .pioenvs
workspace_dir = .pioenvs

build_dir is a child of workspace_dir, where you forced everything to 1 folder. PlatformIO checks for project modification and removed build_dir on changes. As result, it REMOVES EVERYTHING, including installed dependencies. They also are part of workspace_dir. I mean lib_deps. This causes PlatformIO IDE to rebuild IntelliSense Index every time because lib_deps modifies every time.

P.S: I removed workspace_dir = .pioenvs and now everything works. The question, why do you override the default build and workspace folders? Do we have a problem with PlatformIO Core?

kugelkopf123 commented 3 years ago

I can confirm, that works! Thanks! @ivankravets

Jason2866 commented 3 years ago

@ivankravets Thx, for your help. Yes it was a problem in the past. So it is a "left over". Will remove!!

Jason2866 commented 3 years ago

@kugelkopf123 Please close. Thx.

ivankravets commented 3 years ago

This issue presents for any OS, not only macOS. Great that we found a problem.

Thanks, @kugelkopf123, for the remote session that helped to debug this issue and, @Jason2866, for the fix.