I have to admit I’m close to giving up on platformio. Still trying to build simple esp8266 non-arduino sources, given the fact that Espressif hasn’t been supporting its SDK for years any more, and the build environment just broke down on me (with recent Linux, python, ..).
So I was helped a couple of times recently (thanks), but I don’t see light at the end of the tunnel.
Currently my sample application is
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "gpio.h"
void task_blink(void* ignore)
{
gpio16_output_conf();
while(true) {
gpio16_output_set(0);
vTaskDelay(1000/portTICK_RATE_MS);
gpio16_output_set(1);
vTaskDelay(1000/portTICK_RATE_MS);
}
vTaskDelete(NULL);
}
/******************************************************************************
* FunctionName : user_init
* Description : entry of user application, init user function here
* Parameters : none
* Returns : none
*******************************************************************************/
void user_init(void)
{
xTaskCreate(&task_blink, "startup", 2048, NULL, 1, NULL);
}
and I think I have three problems :
- not all required components from the SDK are included
- I find things in the command lines executed that I can’t seem to find back in source
- some of the recent toolchain includes seem to conflict with the Espressif SDK, and not all is well guarded
The toolchain I’m currently using is not recommended by Espressif but it’s in the platformio repo :
“name”: “toolchain-xtensa”,
“version”: “2.100300.220621”,
It may be the source of problems 2 and 3.
What I fail to see is why problem 1 occurs.
victus: {995} pio run
Processing esp8266-d1mini (platform: esp8266rtos; framework: esp8266rtos; board: d1_mini)
------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/esp8266rtos/d1_mini.html
PLATFORM: Espressif 8266 - RTOS v3.4 (4.2.1) > WeMos D1 R2 and mini
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
PACKAGES:
- esp8266rtos @ 0.1.0
- tool-esptool @ 1.413.0 (4.13)
- tool-esptoolpy @ 1.30000.201119 (3.0.0)
- toolchain-xtensa @ 2.100300.220621 (10.3.0)
build_includes -> [[['/home/danny/.platformio/packages/esp8266rtos/components/esp_https_ota/include'], ['/home/danny/.platformio/packages/esp8266rtos/components/tcpip_adapter/include'], ['/home/danny/.platformio/packages/esp8266rtos/components/mbedtls/port/include', '/home/danny/.platformio/packages/esp8266rtos/components/mbedtls/port/include/esp8266', '/home/danny/.platformio/packages/esp8266rtos/components/mbedtls/mbedtls/include', '/home/danny/.platformio/packages/esp8266rtos/components/mbedtls/mbedtls/include/mbedtls'], ['/home/danny/.platformio/packages/esp8266rtos/components/spiffs/include'], ['/home/danny/.platformio/packages/esp8266rtos/components/esp_common/include'], ['/home/danny/.platformio/packages/esp8266rtos/components/wpa_supplicant/include', '/home/danny/.platformio/packages/esp8266rtos/components/wpa_supplicant/port/include', '/home/danny/.platformio/packages/esp8266rtos/components/wpa_supplicant/include/esp_supplicant'], [], ['/home/danny/.platformio/packages/esp8266rtos/components/nvs_flash/include'], ['/home/danny/.platformio/packages/esp8266rtos/components/app_update/include'], ['/home/danny/.platformio/packages/esp8266rtos/components/bootloader_support/include', '/home/danny/.platformio/packages/esp8266rtos/components/bootloader_support/include_priv'], ['/home/danny/.platformio/packages/esp8266rtos/components/http_parser/include'], ['/home/danny/.platformio/packages/esp8266rtos/components/spi_flash/include'], [], [], [], [], ['/home/danny/.platformio/packages/esp8266rtos/components/log/include'], ['/home/danny/.platformio/packages/esp8266rtos/components/freertos/include', '/home/danny/.platformio/packages/esp8266rtos/components/freertos/port/esp8266/include', '/home/danny/.platformio/packages/esp8266rtos/components/freertos/port/esp8266/include/freertos', '/home/danny/.platformio/packages/esp8266rtos/components/freertos/include/freertos', '/home/danny/.platformio/packages/esp8266rtos/components/freertos/include/freertos/private'], ['/home/danny/.platformio/packages/esp8266rtos/components/tcp_transport/include'], ['/home/danny/.platformio/packages/esp8266rtos/components/esp_http_client/include', '/home/danny/.platformio/packages/esp8266rtos/components/esp_http_client/lib/include'], [], ['/home/danny/.platformio/packages/esp8266rtos/components/esp_http_server/include', '/home/danny/.platformio/packages/esp8266rtos/components/esp_http_server/src/port/esp8266', '/home/danny/.platformio/packages/esp8266rtos/components/esp_http_server/src/util'], ['/home/danny/.platformio/packages/esp8266rtos/components/esp-tls'], [], ['/home/danny/.platformio/packages/esp8266rtos/components/newlib/platform_include'], ['/home/danny/.platformio/packages/esp8266rtos/components/esp_gdbstub/include'], ['/home/danny/.platformio/packages/esp8266rtos/components/protocomm/include'], [], ['/home/danny/.platformio/packages/esp8266rtos/components/wear_levelling/include'], [], ['/home/danny/.platformio/packages/esp8266rtos/components/pthread/include'], ['/home/danny/.platformio/packages/esp8266rtos/components/vfs/include'], ['/home/danny/.platformio/packages/esp8266rtos/components/openssl/include'], ['/home/danny/.platformio/packages/esp8266rtos/components/wifi_provisioning/include'], ['/home/danny/.platformio/packages/esp8266rtos/components/heap/include', '/home/danny/.platformio/packages/esp8266rtos/components/heap/port/esp8266/include'], [], ['/home/danny/.platformio/packages/esp8266rtos/components/spi_ram/include'], ['/home/danny/.platformio/packages/esp8266rtos/components/mdns/include'], [], ['/home/danny/.platformio/packages/esp8266rtos/components/esp_event/include', '/home/danny/.platformio/packages/esp8266rtos/components/esp_event/private_include'], ['/home/danny/.platformio/packages/esp8266rtos/components/lwip/include', '/home/danny/.platformio/packages/esp8266rtos/components/lwip/lwip/src/include', '/home/danny/.platformio/packages/esp8266rtos/components/lwip/port/esp8266/include', '/home/danny/.platformio/packages/esp8266rtos/components/lwip/include/apps', '/home/danny/.platformio/packages/esp8266rtos/components/lwip/include/apps/dhcpserver', '/home/danny/.platformio/packages/esp8266rtos/components/lwip/include/apps/sntp', '/home/danny/.platformio/packages/esp8266rtos/components/lwip/include/apps/ping'], [], ['/home/danny/.platformio/packages/esp8266rtos/components/jsmn/include'], ['/home/danny/.platformio/packages/esp8266rtos/components/esp8266/include', '/home/danny/.platformio/packages/esp8266rtos/components/esp8266/include/driver'], ['/home/danny/.platformio/packages/esp8266rtos/components/esp_ringbuf/include', '/home/danny/.platformio/packages/esp8266rtos/components/esp_ringbuf/include/freertos']], '/home/danny/.platformio/packages/esp8266rtos/include']
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 45 compatible libraries
Scanning dependencies...
Dependency Graph
|-- freertos
Building in release mode
Compiling .pio/build/esp8266-d1mini/src/main.o
Compiling .pio/build/esp8266-d1mini/lib7d2/esp_common/esp_err_to_name.o
Compiling .pio/build/esp8266-d1mini/lib7d2/esp_common/stack_check.o
Compiling .pio/build/esp8266-d1mini/lib80b/heap/esp_heap_caps.o
Compiling .pio/build/esp8266-d1mini/lib80b/heap/esp_heap_trace.o
/home/danny/.platformio/packages/esp8266rtos/components/heap/src/esp_heap_caps.c: In function 'esp_heap_caps_init_region':
/home/danny/.platformio/packages/esp8266rtos/components/heap/src/esp_heap_caps.c:50:58: warning: pointer of type 'void *' used in arithmetic [-Wpointer-arith]
50 | if ((uint8_t *)mem_end != region[num].start_addr + region[num].total_size)
| ^
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/driver/adc.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/driver/gpio.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/driver/hspi_logic_layer.o
Archiving .pio/build/esp8266-d1mini/lib7d2/libesp_common.a
Indexing .pio/build/esp8266-d1mini/lib7d2/libesp_common.a
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/driver/hw_timer.o
Archiving .pio/build/esp8266-d1mini/lib80b/libheap.a
Indexing .pio/build/esp8266-d1mini/lib80b/libheap.a
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/driver/i2c.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/driver/i2s.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/driver/ir_rx.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/driver/ir_tx.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/driver/ledc.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/driver/pwm.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/driver/spi.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/driver/uart.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/source/backtrace.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/source/chip_boot.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/source/crc.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/source/esp_fast_boot.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/source/esp_fsleep.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/source/esp_sleep.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/source/esp_timer.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/source/esp_wifi.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/source/esp_wifi_os_adapter.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/source/ets_printf.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/source/hw_random.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/source/phy_init.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/source/reset_reason.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/source/rom.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/source/smartconfig.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/source/smartconfig_ack.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/source/startup.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/source/system_api.o
Compiling .pio/build/esp8266-d1mini/libc2b/esp8266/source/task_wdt.o
Compiling .pio/build/esp8266-d1mini/lib8ec/freertos/freertos/event_groups.o
Compiling .pio/build/esp8266-d1mini/lib8ec/freertos/freertos/list.o
Compiling .pio/build/esp8266-d1mini/lib8ec/freertos/freertos/queue.o
Compiling .pio/build/esp8266-d1mini/lib8ec/freertos/freertos/stream_buffer.o
Compiling .pio/build/esp8266-d1mini/lib8ec/freertos/freertos/tasks.o
Compiling .pio/build/esp8266-d1mini/lib8ec/freertos/freertos/timers.o
Compiling .pio/build/esp8266-d1mini/lib8ec/freertos/port/esp8266/freertos_hooks.o
Compiling .pio/build/esp8266-d1mini/lib8ec/freertos/port/esp8266/os_cpu_a.o
Compiling .pio/build/esp8266-d1mini/lib8ec/freertos/port/esp8266/panic.o
Compiling .pio/build/esp8266-d1mini/lib8ec/freertos/port/esp8266/port.o
Compiling .pio/build/esp8266-d1mini/lib8ec/freertos/port/esp8266/xtensa_context.o
Compiling .pio/build/esp8266-d1mini/lib8ec/freertos/port/esp8266/xtensa_vectors.o
Archiving /home/danny/.platformio/packages/esp8266rtos/lib/libdriver.a
Indexing /home/danny/.platformio/packages/esp8266rtos/lib/libdriver.a
Archiving .pio/build/esp8266-d1mini/libc2b/libesp8266.a
Indexing .pio/build/esp8266-d1mini/libc2b/libesp8266.a
Archiving .pio/build/esp8266-d1mini/lib8ec/libfreertos.a
Indexing .pio/build/esp8266-d1mini/lib8ec/libfreertos.a
Linking .pio/build/esp8266-d1mini/firmware.elf
Using built-in specs.
COLLECT_GCC=xtensa-lx106-elf-gcc
COLLECT_LTO_WRAPPER=/home/danny/.platformio/packages/toolchain-xtensa/bin/../libexec/gcc/xtensa-lx106-elf/10.3.0/lto-wrapper
Target: xtensa-lx106-elf
Configured with: /workdir/repo/gcc-gnu/configure --prefix=/workdir/xtensa-lx106-elf.x86_64 --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=xtensa-lx106-elf --disable-shared --with-newlib --enable-threads=no --disable-__cxa_atexit --disable-libgomp --disable-libmudflap --disable-nls --disable-multilib --disable-bootstrap --enable-languages=c,c++ --enable-lto --enable-static=yes --disable-libstdcxx-verbose
Thread model: single
Supported LTO compression algorithms: zlib
gcc version 10.3.0 (GCC)
COMPILER_PATH=/home/danny/.platformio/packages/toolchain-xtensa/bin/../libexec/gcc/xtensa-lx106-elf/10.3.0/:/home/danny/.platformio/packages/toolchain-xtensa/bin/../libexec/gcc/:/home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/
LIBRARY_PATH=/home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/:/home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/:/home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/
COLLECT_GCC_OPTIONS='-o' '.pio/build/esp8266-d1mini/firmware.elf' '-T' '/home/danny/src/esp8266/ESP8266_RTOS_SDK/components/esp8266/ld/esp8266.rom.ld' '-v' '-Os' '-e' 'call_start_cpu' '-L.pio/build/esp8266-d1mini' '-L/home/danny/.platformio/packages/esp8266rtos/components/esp8266/lib' '-L/home/danny/.platformio/packages/esp8266rtos/components/esp-wolfssl/wolfssl/lib'
/home/danny/.platformio/packages/toolchain-xtensa/bin/../libexec/gcc/xtensa-lx106-elf/10.3.0/collect2 -plugin /home/danny/.platformio/packages/toolchain-xtensa/bin/../libexec/gcc/xtensa-lx106-elf/10.3.0/liblto_plugin.so -plugin-opt=/home/danny/.platformio/packages/toolchain-xtensa/bin/../libexec/gcc/xtensa-lx106-elf/10.3.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccu9y8Gv.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lsim -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lhandlers-sim -plugin-opt=-pass-through=-lhal -plugin-opt=-pass-through=-lgcc -o .pio/build/esp8266-d1mini/firmware.elf -e call_start_cpu crt1-sim.o /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/crt0.o /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/crti.o /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/crtbegin.o _vectors.o -L.pio/build/esp8266-d1mini -L/home/danny/.platformio/packages/esp8266rtos/components/esp8266/lib -L/home/danny/.platformio/packages/esp8266rtos/components/esp-wolfssl/wolfssl/lib -L/home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0 -L/home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc -L/home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib --no-check-sections -static --gc-sections .pio/build/esp8266-d1mini/src/main.o --start-group .pio/build/esp8266-d1mini/lib7d2/libesp_common.a .pio/build/esp8266-d1mini/lib80b/libheap.a .pio/build/esp8266-d1mini/libc2b/libesp8266.a .pio/build/esp8266-d1mini/lib8ec/libfreertos.a /home/danny/.platformio/packages/esp8266rtos/lib/libdriver.a -lwolfssl -lsmartconfig -lclk -lssc -lhal -lcore -lespnow -lnet80211 -lpp -lrtc -lphy -lgcc --end-group -lgcc -lc -lsim -lc -lhandlers-sim -lhal -lgcc /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/crtend.o /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/crtn.o -T /home/danny/src/esp8266/ESP8266_RTOS_SDK/components/esp8266/ld/esp8266.rom.ld
/home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld: cannot find crt1-sim.o: No such file or directory
/home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld: cannot find _vectors.o: No such file or directory
collect2: error: ld returned 1 exit status
*** [.pio/build/esp8266-d1mini/firmware.elf] Error 1
============================================== [FAILED] Took 0.97 seconds ==============================================
If I take the offending parts out of the last statement in the above, and just run the collect2 / ld command, then the output I get is :
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/lib7d2/libesp_common.a(esp_err_to_name.o):(.bss.esp_image_spi_freq_t+0x0): multiple definition of `esp_image_spi_freq_t'; .pio/build/esp8266-d1mini/libc2b/libesp8266.a(startup.o):(.bss.esp_image_spi_freq_t+0x0): first defined here
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/libc2b/libesp8266.a(startup.o):(.text.user_init_entry+0x0): undefined reference to `__init_array_start'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/libc2b/libesp8266.a(startup.o):(.text.user_init_entry+0x4): undefined reference to `__init_array_end'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/libc2b/libesp8266.a(startup.o):(.text.user_init_entry+0x24): undefined reference to `esp_pthread_init'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/libc2b/libesp8266.a(startup.o):(.text.user_init_entry+0x28): undefined reference to `app_main'
[...]
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/libc2b/libesp8266.a(system_api.o):(.text.store_backup_mac_data+0x30): undefined reference to `esp_log_write'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/libc2b/libesp8266.a(system_api.o): in function `store_backup_mac_data':
system_api.c:(.text.store_backup_mac_data+0x6b): undefined reference to `nvs_open'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: system_api.c:(.text.store_backup_mac_data+0x7e): undefined reference to `nvs_set_blob'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: system_api.c:(.text.store_backup_mac_data+0x8f): undefined reference to `nvs_commit'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: system_api.c:(.text.store_backup_mac_data+0xa6): undefined reference to `esp_log_write'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/libc2b/libesp8266.a(system_api.o):(.text.esp_mac_init+0x10): undefined reference to `nvs_flash_init'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/libc2b/libesp8266.a(system_api.o):(.text.esp_mac_init+0x14): undefined reference to `esp_log_write'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/libc2b/libesp8266.a(system_api.o):(.text.esp_mac_init+0x1f): undefined reference to `nvs_flash_init'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/libc2b/libesp8266.a(system_api.o): in function `esp_mac_init':
system_api.c:(.text.esp_mac_init+0x5b): undefined reference to `esp_log_write'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/libc2b/libesp8266.a(task_wdt.o):(.iram1.1+0x1c): undefined reference to `Cache_Read_Enable_New'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/libc2b/libesp8266.a(task_wdt.o): in function `nmi_check_wd':
task_wdt.c:(.iram1.1+0x54): undefined reference to `Cache_Read_Enable_New'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/lib80b/libheap.a(esp_heap_caps.o):(.iram1.0+0x0): undefined reference to `g_heap_region'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/lib80b/libheap.a(esp_heap_caps.o):(.iram1.1+0x4): undefined reference to `g_heap_region'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/libc2b/libesp8266.a(ets_printf.o):(.iram1.0+0x0): undefined reference to `FlashIsOnGoing'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/libc2b/libesp8266.a(reset_reason.o):(.text.__esp_reset_reason_init+0x0): undefined reference to `rtc_sys_info'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/libc2b/libesp8266.a(reset_reason.o):(.text.esp_reset_reason_set_hint+0x0): undefined reference to `rtc_sys_info'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/libc2b/libesp8266.a(rom.o):(.text.uart_tx_wait_idle+0x0): undefined reference to `uart0'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/libc2b/libesp8266.a(rom.o):(.text.uart_tx_wait_idle+0x4): undefined reference to `uart1'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/lib8ec/libfreertos.a(xtensa_vectors.o):(.literal+0x44): undefined reference to `Cache_Read_Enable_New'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/lib8ec/libfreertos.a(xtensa_vectors.o): in function `_panic_dump_reg':
(.text+0x418): undefined reference to `Cache_Read_Enable_New'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/libc.a(lib_a-assert.o):(.literal+0x10): undefined reference to `abort'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/libc.a(lib_a-assert.o): in function `__assert_func':
/workdir/repo/newlib/newlib/libc/stdlib/assert.c:58: undefined reference to `abort'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/libc.a(lib_a-wsetup.o):(.literal+0x0): undefined reference to `_free_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/libc.a(lib_a-wsetup.o): in function `__swsetup_r':
/workdir/repo/newlib/newlib/libc/stdio/wsetup.c:56: undefined reference to `_free_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/libc.a(lib_a-fflush.o): in function `__sflush_r':
/workdir/repo/newlib/newlib/libc/stdio/fflush.c:197: undefined reference to `_free_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/libc.a(lib_a-findfp.o):(.literal+0x18): undefined reference to `_malloc_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/libc.a(lib_a-findfp.o): in function `__sfmoreglue':
/workdir/repo/newlib/newlib/libc/stdio/findfp.c:132: undefined reference to `_malloc_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/libc.a(lib_a-fvwrite.o):(.literal+0xc): undefined reference to `_realloc_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/libc.a(lib_a-fvwrite.o): in function `__sfvwrite_r':
/workdir/repo/newlib/newlib/libc/stdio/fvwrite.c:145: undefined reference to `_malloc_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /workdir/repo/newlib/newlib/libc/stdio/fvwrite.c:156: undefined reference to `_realloc_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /workdir/repo/newlib/newlib/libc/stdio/fvwrite.c:162: undefined reference to `_free_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/libc.a(lib_a-makebuf.o):(.literal+0x0): undefined reference to `_fstat_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/libc.a(lib_a-makebuf.o): in function `__swhatbuf_r':
/workdir/repo/newlib/newlib/libc/stdio/makebuf.c:96: undefined reference to `_fstat_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/libc.a(lib_a-makebuf.o): in function `__smakebuf_r':
/workdir/repo/newlib/newlib/libc/stdio/makebuf.c:53: undefined reference to `_malloc_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/libc.a(lib_a-stdio.o):(.literal+0x0): undefined reference to `_read_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/libc.a(lib_a-stdio.o):(.literal+0x4): undefined reference to `_lseek_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/libc.a(lib_a-stdio.o):(.literal+0x8): undefined reference to `_write_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/libc.a(lib_a-stdio.o):(.literal+0xc): undefined reference to `_close_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/libc.a(lib_a-stdio.o): in function `__sread':
/workdir/repo/newlib/newlib/libc/stdio/stdio.c:47: undefined reference to `_read_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/libc.a(lib_a-stdio.o): in function `__swrite':
/workdir/repo/newlib/newlib/libc/stdio/stdio.c:86: undefined reference to `_lseek_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/libc.a(lib_a-stdio.o): in function `__sseek':
/workdir/repo/newlib/newlib/libc/stdio/stdio.c:113: undefined reference to `_lseek_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/libc.a(isatty.o): in function `_isatty_r':
/workdir/repo/newlib/newlib/libc/sys/xtensa/isatty.c:13: undefined reference to `_fstat_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/lib/libc.a(lib_a-fclose.o): in function `_fclose_r':
/workdir/repo/newlib/newlib/libc/stdio/fclose.c:98: undefined reference to `_free_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /workdir/repo/newlib/newlib/libc/stdio/fclose.c:101: undefined reference to `_free_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /workdir/repo/newlib/newlib/libc/stdio/fclose.c:102: undefined reference to `_free_r'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/esp8266rtos/components/esp8266/lib/libpp.a(lmac.o):(.text.lmacProcessTxRtsError+0x14): undefined reference to `esp_log_write'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/esp8266rtos/components/esp8266/lib/libpp.a(lmac.o): in function `lmacProcessTxRtsError':
(.text.lmacProcessTxRtsError+0x73): undefined reference to `esp_log_write'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/esp8266rtos/components/esp8266/lib/libpp.a(lmac.o):(.text.lmacProcessTxError+0x14): undefined reference to `esp_log_write'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/esp8266rtos/components/esp8266/lib/libpp.a(lmac.o): in function `lmacProcessTxError':
(.text.lmacProcessTxError+0x78): undefined reference to `esp_log_write'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/esp8266rtos/components/esp8266/lib/libpp.a(wdev.o):(.text.wDev_ProcessFiq+0x110): undefined reference to `heap_caps_get_dram_free_size'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: /home/danny/.platformio/packages/esp8266rtos/components/esp8266/lib/libpp.a(wdev.o): in function `wDev_ProcessFiq':
(.text.wDev_ProcessFiq+0x373): undefined reference to `heap_caps_get_dram_free_size'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: (.text.wDev_ProcessFiq+0x476): undefined reference to `heap_caps_get_dram_free_size'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: (.text.wDev_ProcessFiq+0x76b): undefined reference to `heap_caps_get_dram_free_size'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/libc2b/libesp8266.a(backtrace.o):(.text.prev_text_size+0x0): undefined reference to `_text_start'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/libc2b/libesp8266.a(backtrace.o):(.text.prev_text_size+0x4): undefined reference to `_text_end'
/home/danny/src/esp8266/xtensa-lx106-elf/bin/xtensa-lx106-elf-ld: .pio/build/esp8266-d1mini/libc2b/libesp8266.a(esp_sleep.o):(.text.cpu_reject_sleep+0x4): undefined reference to `GPIO'
collect2: error: ld returned 1 exit status
So you can see e.g. esp_log_write is not resolved because platformio fails to include the SDK component “log”.
Not demonstrated in the output above is that
// Make compatible to old SDK
#ifndef ICACHE_RODATA_ATTR
#define ICACHE_RODATA_ATTR
#endif
in ~/.platformio/packages/esp8266rtos/components/esp8266/include/esp_attr.h was missing the #ifndef construct, and this was broken by some definition in the toolchain I mentioned.
But never in earlier toolchains, such as the one recommended by Espressif.
I have to admit it’s the Espressif SDK that is more broken, but I find myself having to patch the two sources I need. Hmm.
Advice ?