M5stickC PlatformIO project doesn't upload

A few days ago, I somehow got PlatformIO to work with CLion, created a project for Wemos Lolin32 (as Arduino), and successfully got it to upload after hours of random attempts to make it work. I wish to ${deity} I could remember what I did to finally make it work, but I can't.

Yesterday, I created a new PlatformIO project for M5StickC (as Arduino).

After creating the project, I exited CLion, loaded VS Code, added the project's directory to VSCode's workspace (since, AFAIK, there's no functionality within CLion itself or the PlatformIO plugin to browse and add Arduino libraries from wherever Arduino libraries are hosted), and added the M5StickC library. I then exited VScode, relaunched CLion, and attempted to build and deploy one of M5StickC's examples (the RTC demo).

It builds without apparent errors, but seemingly makes no attempt at all to even try flashing (yes, I'm selecting "PlatformIO Upload|m5stick-c-MinGW" from the build target and clicking the hammer icon to the left). As you can see below in platformio.ini, I explicitly specified the com port (COM9) and upload protocol (both were added in a futile attempt to make it work, and were not themselves what broke it).

If I exit CLion and reload the project into VSCode, it builds and flashes just fine. Somewhere, CLion is just silently calling it quits without either trying to flash or giving any kind of obvious reason why it's not.

Any ideas as to what the problem might be? I had similar problems getting CLion to work with my Lolin32 board... from what I recall, it literally just randomly started to work at some point.

I'm pretty sure the problem is NOT with anything PlatformIO-related per se, just because AFAIK, all CLion and VSCode do is launch CMake, and CMake itself is what does all the work, so it seems like something about launching PlatformIO's build from within CLion is what's screwing up.

---

PlatformIO.ini:

[env:m5stick-c]
platform = espressif32
board = m5stick-c
framework = arduino
lib_deps = m5stack/M5StickC@^0.2.5
upload_port = COM9
upload_protocol = esptool

main.cpp:

#include <Arduino.h>
#include "M5StickC.h"
void setup() {
// write your initialization code here
M5.begin();
M5.Lcd.setRotation(3);
M5.Lcd.fillScreen(BLACK);

M5.Lcd.setTextSize(2);
M5.Lcd.println("rtc app");
}

void loop() {
// write your code here
M5.Rtc.GetBm8563Time();
M5.Lcd.setCursor(0, 30, 2);
M5.Lcd.printf("%02d : %02d : %02d/n", M5.Rtc.Hour, M5.Rtc.Minute, M5.Rtc.Second);
delay(1000);
}

CMakeLists.txt (AFAIK, auto-generated):

# !!! WARNING !!! AUTO-GENERATED FILE, PLEASE DO NOT MODIFY IT AND USE
# https://docs.platformio.org/page/projectconf/section_env_build.html#build-flags
#
# If you need to override existing CMake configuration or add extra,
# please create `CMakeListsUser.txt` in the root of project.
# The `CMakeListsUser.txt` will not be overwritten by PlatformIO.

cmake_minimum_required(VERSION 3.13)
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_C_COMPILER_WORKS 1)
set(CMAKE_CXX_COMPILER_WORKS 1)

project("first" C CXX)

include(CMakeListsPrivate.txt)

if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/CMakeListsUser.txt)
include(CMakeListsUser.txt)
endif()

add_custom_target(
Production ALL
COMMAND platformio -c clion run "$<$<NOT:$<CONFIG:All>>:-e${CMAKE_BUILD_TYPE}>"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)

add_custom_target(
Debug ALL
COMMAND platformio -c clion debug "$<$<NOT:$<CONFIG:All>>:-e${CMAKE_BUILD_TYPE}>"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)

add_executable(Z_DUMMY_TARGET ${SRC_LIST})

CMakeListsPrivate.txt (also autogenerated, AFAIK):

# !!! WARNING !!! AUTO-GENERATED FILE, PLEASE DO NOT MODIFY IT AND USE
# https://docs.platformio.org/page/projectconf/section_env_build.html#build-flags
#
# If you need to override existing CMake configuration or add extra,
# please create `CMakeListsUser.txt` in the root of project.
# The `CMakeListsUser.txt` will not be overwritten by PlatformIO.



set(CMAKE_CONFIGURATION_TYPES "m5stick-c" CACHE STRING "Build Types reflect PlatformIO Environments" FORCE)

# Convert "Home Directory" that may contain unescaped backslashes on Windows
file(TO_CMAKE_PATH $ENV{HOMEDRIVE}$ENV{HOMEPATH} ENV_HOME_PATH)


SET(CMAKE_C_COMPILER "${ENV_HOME_PATH}/.platformio/packages/toolchain-xtensa32/bin/xtensa-esp32-elf-gcc.exe")
SET(CMAKE_CXX_COMPILER "${ENV_HOME_PATH}/.platformio/packages/toolchain-xtensa32/bin/xtensa-esp32-elf-g++.exe")
SET(CMAKE_CXX_FLAGS "-fno-rtti -fno-exceptions -std=gnu++11 -Os -g3 -Wall -nostdlib -Wpointer-arith -Wno-error=unused-but-set-variable -Wno-error=unused-variable -mlongcalls -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wno-error=deprecated-declarations -Wno-error=unused-function -Wno-unused-parameter -Wno-sign-compare -fstack-protector -fexceptions -Werror=reorder")
SET(CMAKE_C_FLAGS "-std=gnu99 -Wno-old-style-declaration -Os -g3 -Wall -nostdlib -Wpointer-arith -Wno-error=unused-but-set-variable -Wno-error=unused-variable -mlongcalls -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -Wno-error=deprecated-declarations -Wno-error=unused-function -Wno-unused-parameter -Wno-sign-compare -fstack-protector -fexceptions -Werror=reorder")

SET(CMAKE_C_STANDARD 99)
set(CMAKE_CXX_STANDARD 11)

if (CMAKE_BUILD_TYPE MATCHES "m5stick-c")
add_definitions(-DPLATFORMIO=50204)
add_definitions(-DARDUINO_M5Stick_C)
add_definitions(-DESP32)
add_definitions(-DESP_PLATFORM)
add_definitions(-DF_CPU=240000000L)
add_definitions(-DHAVE_CONFIG_H)
add_definitions(-DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\")
add_definitions(-DARDUINO=10805)
add_definitions(-DARDUINO_ARCH_ESP32)
add_definitions(-DARDUINO_VARIANT=\"m5stick_c\")
add_definitions(-DARDUINO_BOARD=\"M5Stick-C\")

include_directories("${CMAKE_CURRENT_LIST_DIR}/include")
include_directories("${CMAKE_CURRENT_LIST_DIR}/src")
include_directories("${CMAKE_CURRENT_LIST_DIR}/.pio/libdeps/m5stick-c/M5StickC/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/SPI/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/SPIFFS/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/FS/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/Wire/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/config")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/app_trace")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/app_update")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/asio")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/bootloader_support")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/bt")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/coap")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/console")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/driver")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/efuse")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp-tls")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp32")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_adc_cal")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_event")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_http_client")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_http_server")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_https_ota")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_https_server")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_ringbuf")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_websocket_client")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/espcoredump")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/ethernet")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/expat")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/fatfs")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/freemodbus")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/heap")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/idf_test")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/jsmn")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/json")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/libsodium")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/log")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/lwip")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/mbedtls")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/mdns")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/micro-ecc")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/mqtt")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/newlib")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/nghttp")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/nvs_flash")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/openssl")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/protobuf-c")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/protocomm")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/pthread")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/sdmmc")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/smartconfig_ack")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/soc")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/spi_flash")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/spiffs")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/tcp_transport")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/tcpip_adapter")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/ulp")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/unity")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/vfs")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/wear_levelling")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/wifi_provisioning")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/wpa_supplicant")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/xtensa-debug-module")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp-face")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp32-camera")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/fb_gfx")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/cores/esp32")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/variants/m5stick_c")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/ArduinoOTA/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/AsyncUDP/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/AzureIoT/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/BLE/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/BluetoothSerial/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/DNSServer/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/EEPROM/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/ESP32/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/ESPmDNS/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/FFat/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/HTTPUpdate/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/HTTPUpdateServer/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/NetBIOS/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/Preferences/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/SD/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/SD_MMC/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/SimpleBLE/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/Ticker/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/Update/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/WiFiClientSecure/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/framework-arduinoespressif32/libraries/WiFiProv/src")
include_directories("${ENV_HOME_PATH}/.platformio/packages/toolchain-xtensa32/xtensa-esp32-elf/include/c++/5.2.0")
include_directories("${ENV_HOME_PATH}/.platformio/packages/toolchain-xtensa32/xtensa-esp32-elf/include/c++/5.2.0/xtensa-esp32-elf")
include_directories("${ENV_HOME_PATH}/.platformio/packages/toolchain-xtensa32/lib/gcc/xtensa-esp32-elf/5.2.0/include")
include_directories("${ENV_HOME_PATH}/.platformio/packages/toolchain-xtensa32/lib/gcc/xtensa-esp32-elf/5.2.0/include-fixed")
include_directories("${ENV_HOME_PATH}/.platformio/packages/toolchain-xtensa32/xtensa-esp32-elf/include")

FILE(GLOB_RECURSE EXTRA_LIB_SOURCES
${CMAKE_CURRENT_LIST_DIR}/.pio/libdeps/m5stick-c/*.*
)
endif()


FILE(GLOB_RECURSE SRC_LIST
${CMAKE_CURRENT_LIST_DIR}/src/*.*
${CMAKE_CURRENT_LIST_DIR}/lib/*.*
${CMAKE_CURRENT_LIST_DIR}/test/*.*
)

list(APPEND SRC_LIST ${EXTRA_LIB_SOURCES})

Output (in "Messages" tab) of build:

====================[ Build | Production | m5stick-c-MinGW ]====================
"C:\Program Files\JetBrains\CLion 2021.3\bin\cmake\win\bin\cmake.exe" --build C:\src\experiments\clion\platformio\m5stickc\first\cmake-build-m5stick-c-mingw --target Production
[1/1] cmd.exe /C "cd /D C:\src\experiments\CLion\platformio\m5stickc\first && platformio -c clion run -em5stick-c"
Processing m5stick-c (platform: espressif32; board: m5stick-c; framework: arduino)
--------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/m5stick-c.html
PLATFORM: Espressif 32 (3.4.0) > M5Stick-C
HARDWARE: ESP32 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 3.10006.210326 (1.0.6)
- tool-esptoolpy 1.30100.210531 (3.1.0)
- tool-openocd-esp32 2.1000.20210721 (10.0)
- toolchain-xtensa32 2.50200.97 (5.2.0)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 29 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <M5StickC> 0.2.5
| |-- <Wire> 1.0.1
| |-- <SPIFFS> 1.0
| | |-- <FS> 1.0
| |-- <FS> 1.0
| |-- <SPI> 1.0
Building in release mode
Compiling .pio\build\m5stick-c\src\main.cpp.o
Archiving .pio\build\m5stick-c\lib467\libWire.a
Indexing .pio\build\m5stick-c\lib467\libWire.a
Archiving .pio\build\m5stick-c\lib66c\libFS.a
Indexing .pio\build\m5stick-c\lib66c\libFS.a
Archiving .pio\build\m5stick-c\lib183\libSPIFFS.a
Archiving .pio\build\m5stick-c\lib655\libSPI.a
Indexing .pio\build\m5stick-c\lib183\libSPIFFS.a
Indexing .pio\build\m5stick-c\lib655\libSPI.a
Archiving .pio\build\m5stick-c\lib479\libM5StickC.a
Archiving .pio\build\m5stick-c\libFrameworkArduinoVariant.a
Indexing .pio\build\m5stick-c\libFrameworkArduinoVariant.a
Indexing .pio\build\m5stick-c\lib479\libM5StickC.a
Archiving .pio\build\m5stick-c\libFrameworkArduino.a
Indexing .pio\build\m5stick-c\libFrameworkArduino.a
Linking .pio\build\m5stick-c\firmware.elf
Retrieving maximum program size .pio\build\m5stick-c\firmware.elf
Checking size .pio\build\m5stick-c\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [ ] 4.5% (used 14864 bytes from 327680 bytes)
Flash: [== ] 20.1% (used 263907 bytes from 1310720 bytes)
Building .pio\build\m5stick-c\firmware.bin
esptool.py v3.1
Merged 1 ELF section
========================= [SUCCESS] Took 10.17 seconds =========================

Build finished

For what it's worth, here's the output when I (successfully) attempted to do the same thing from VS Code:

> Executing task: C:\Users\root\.platformio\penv\Scripts\platformio.exe run --target upload --environment m5stick-c <

Processing m5stick-c (platform: espressif32; board: m5stick-c; framework: arduino)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/m5stick-c.html
PLATFORM: Espressif 32 (3.4.0) > M5Stick-C
HARDWARE: ESP32 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 3.10006.210326 (1.0.6)
- tool-esptoolpy 1.30100.210531 (3.1.0)
- tool-mkspiffs 2.230.0 (2.30)
- tool-openocd-esp32 2.1000.20210721 (10.0)
- toolchain-xtensa32 2.50200.97 (5.2.0)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 29 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <M5StickC> 0.2.5
| |-- <Wire> 1.0.1
| |-- <SPIFFS> 1.0
| | |-- <FS> 1.0
| |-- <FS> 1.0
| |-- <SPI> 1.0
Building in release mode
Archiving .pio\build\m5stick-c\lib467\libWire.a
Archiving .pio\build\m5stick-c\lib66c\libFS.a
Archiving .pio\build\m5stick-c\lib183\libSPIFFS.a
Archiving .pio\build\m5stick-c\lib655\libSPI.a
Archiving .pio\build\m5stick-c\lib479\libM5StickC.a
Archiving .pio\build\m5stick-c\libFrameworkArduinoVariant.a
Archiving .pio\build\m5stick-c\libFrameworkArduino.a
Linking .pio\build\m5stick-c\firmware.elf
Retrieving maximum program size .pio\build\m5stick-c\firmware.elf
Checking size .pio\build\m5stick-c\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [ ] 4.5% (used 14864 bytes from 327680 bytes)
Flash: [== ] 20.1% (used 263907 bytes from 1310720 bytes)
Configuring upload protocol...
AVAILABLE: esp-prog, espota, esptool, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa
CURRENT: upload_protocol = esptool
Looking for upload port...
Use manually specified: COM9
Uploading .pio\build\m5stick-c\firmware.bin
esptool.py v3.1
Serial port COM9
Connecting.......
Chip is ESP32-PICO-D4 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, Embedded Flash, Coding Scheme None
Crystal is 40MHz
MAC: d8:a0:1d:57:a5:90
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 1500000
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Flash will be erased from 0x00001000 to 0x00005fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x00050fff...
Compressed 17104 bytes to 11191...
Writing at 0x00001000... (100 %)
Wrote 17104 bytes (11191 compressed) at 0x00001000 in 0.4 seconds (effective 342.3 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 128...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (128 compressed) at 0x00008000 in 0.1 seconds (effective 383.2 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 586.1 kbit/s)...
Hash of data verified.
Compressed 264016 bytes to 137064...
Writing at 0x00010000... (11 %)
Writing at 0x0001ae52... (22 %)
Writing at 0x000281ca... (33 %)
Writing at 0x0002dc12... (44 %)
Writing at 0x000334b5... (55 %)
Writing at 0x0003985e... (66 %)
Writing at 0x00042b48... (77 %)
Writing at 0x000484a6... (88 %)
Writing at 0x0004e0b9... (100 %)
Wrote 264016 bytes (137064 compressed) at 0x00010000 in 2.5 seconds (effective 846.1 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
============================================================================================================================ [SUCCESS] Took 13.04 seconds ============================================================================================================================

Terminal will be reused by tasks, press any key to close it.

 

0
2 comments

Update: if I cd to the directory and run `pio -t upload`, it works. It still doesn't work when I try select "PlatformIO Upload | m5stick-c-MinGW" from the run target dropdown and click the hammer icon.

One obvious possibility that I don't know enough about CLion, PlatformIO, or CMake to judge for myself: maybe something done during "create new (PlatformIO) project" (in CLion) botched the build target's definition, so I have an ENTRY for "Upload", but running it doesn't ACTUALLY trigger an upload attempt?

I'm not feeling very hopeful, to be honest. So far, I've found two other people on other sites describing a similar problem (can upload by launching it from cmd.exe outside of CLion, but attempting to upload from within CLion either doesn't work, or doesn't work reliably).

0

Update 2: Through blind luck and random experimentation, I managed to discover a way to make uploads to an ESP32-Arduino-PlatformIO project work:

1. Select "PlatformIO Upload | (name of board)" from the run/debug target dropdown near the upper right of the editor pane.

2. Click the Run (right-pointing equilateral triangle) icon to the right of the dropdown, not the hammer icon to the left of it.

Someone at Jetbrains really, urgently needs to document somewhere what the difference is between the following icons/menu items when using CLion with PlatformIO for Arduino development:

  • The 'run' icon
  • The 'hammer' icon
  • Tools->PlatformIO->Build
  • Tools->PlatformIO->Build Production
  • Build->Build Project
  • Build->Build All in {*}
  • Build->Build PlatformIO Upload
  • Tools->Install

... well, you get my point. There's a ton of options whose descriptions seem to imply similar actions, but half of them either don't do anything meaningful when using PlatformIO, or they try to do something that's ultimately futile when using PlatformIO and fail. If nothing else, there ought to be a way for a plugin (like the PlatformIO plugin) to ask CLion to hide or grey-out/disable icons and menu items for things that just don't (and can't) work when it's a PlatformIO project (or better yet, allow plugins to sanely and sensibly map THEIR functions, and maybe alter the wording of the menu item and/or icon hovertext, to the "standard" icons/menu items someone might sensibly EXPECT to use to trigger those actions via PlatformIO. It's just a matter of good 21st-century UI design that you shouldn't litter your UI with things that can't actually work in the current context.

0

Please sign in to leave a comment.