Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ESP32: esp_rom_spiflash_wait_idle undefined reference if CONFIG_SPI_FLASH_ROM_DRIVER_PATCH not set (IDFGH-14455) #15229

Closed
3 tasks done
tamisoft opened this issue Jan 18, 2025 · 0 comments
Assignees
Labels
Resolution: NA Issue resolution is unavailable Status: Done Issue is done internally Type: Bug bugs in IDF

Comments

@tamisoft
Copy link
Contributor

Answers checklist.

  • I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
  • I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
  • I have searched the issue tracker for a similar issue and not found a similar issue.

IDF version.

v5.4-300-gc8bb53292d

Operating System used.

Linux

How did you build your project?

VS Code IDE

If you are using Windows, please specify command line type.

None

What is the expected behavior?

Bootloader would build with CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=n.

What is the actual behavior?

esp-idf/bootloader_support/libbootloader_support.a(bootloader_flash.c.obj):(.iram1.6.literal+0x14): undefined reference to esp_rom_spiflash_wait_idle'
esp-idf/bootloader_support/libbootloader_support.a(bootloader_flash.c.obj): in function bootloader_flash_unlock': components/bootloader_support/bootloader_flash/src/bootloader_flash.c:513:(.iram1.6+0x9): undefined reference to esp_rom_spiflash_wait_idle'
components/bootloader_support/bootloader_flash/src/bootloader_flash.c:548:(.iram1.6+0xf7): undefined reference to esp_rom_spiflash_wait_idle' ld: esp-idf/bootloader_support/libbootloader_support.a(bootloader_flash.c.obj): in function bootloader_execute_flash_command':
components/bootloader_support/bootloader_flash/src/bootloader_flash.c:630:(.iram1.6+0x128): undefined reference to esp_rom_spiflash_wait_idle' ld: /home/levi/esp/esp-idf/components/bootloader_support/bootloader_flash/src/bootloader_flash.c:630:(.iram1.6+0x15c): undefined reference to esp_rom_spiflash_wait_idle'
ld: esp-idf/bootloader_support/libbootloader_support.a(bootloader_flash.c.obj): components/bootloader_support/bootloader_flash/src/bootloader_flash.c:630: more undefined references to esp_rom_spiflash_wait_idle' follow

Steps to reproduce.

  1. create new template app in vscode for esp32
  2. build for sanity (will succeed)
  3. change only the SPI_FLASH_ROM_DRIVER_PATH to no, save, build
  4. error at linking undefined reference to `esp_rom_spiflash_wait_idle'

Build or installation Logs.

-- Building ESP-IDF components for target esp32
-- Project sdkconfig file ~/projects/espromdemo/sdkconfig
-- Compiler supported targets: xtensa-esp-elf
-- App "espromdemo" version: 1
-- Adding linker script ~/projects/espromdemo/build/esp-idf/esp_system/ld/memory.ld
-- Adding linker script ~/projects/espromdemo/build/esp-idf/esp_system/ld/sections.ld.in
-- Adding linker script ~/esp-idf/components/esp_rom/esp32/ld/esp32.rom.ld
-- Adding linker script ~/esp-idf/components/esp_rom/esp32/ld/esp32.rom.api.ld
-- Adding linker script ~/esp-idf/components/esp_rom/esp32/ld/esp32.rom.libgcc.ld
-- Adding linker script ~/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-data.ld
-- Adding linker script ~/esp-idf/components/esp_rom/esp32/ld/esp32.rom.syscalls.ld
-- Adding linker script ~/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-funcs.ld
-- Adding linker script ~/esp-idf/components/esp_rom/esp32/ld/esp32.rom.spiflash_legacy.ld
-- Adding linker script ~/esp-idf/components/soc/esp32/ld/esp32.peripherals.ld
-- Components: app_trace app_update bootloader bootloader_support bt cmock console cxx driver efuse esp-tls esp_adc esp_app_format esp_bootloader_format esp_coex esp_common esp_driver_ana_cmpr esp_driver_cam esp_driver_dac esp_driver_gpio esp_driver_gptimer esp_driver_i2c esp_driver_i2s esp_driver_isp esp_driver_jpeg esp_driver_ledc esp_driver_mcpwm esp_driver_parlio esp_driver_pcnt esp_driver_ppa esp_driver_rmt esp_driver_sdio esp_driver_sdm esp_driver_sdmmc esp_driver_sdspi esp_driver_spi esp_driver_touch_sens esp_driver_tsens esp_driver_uart esp_driver_usb_serial_jtag esp_eth esp_event esp_gdbstub esp_hid esp_http_client esp_http_server esp_https_ota esp_https_server esp_hw_support esp_lcd esp_local_ctrl esp_mm esp_netif esp_netif_stack esp_partition esp_phy esp_pm esp_psram esp_ringbuf esp_rom esp_security esp_system esp_timer esp_vfs_console esp_wifi espcoredump esptool_py fatfs freertos hal heap http_parser idf_test ieee802154 json log lwip main mbedtls mqtt newlib nvs_flash nvs_sec_provider openthread partition_table perfmon protobuf-c protocomm pthread rt sdmmc soc spi_flash spiffs tcp_transport ulp unity usb vfs wear_levelling wifi_provisioning wpa_supplicant xtensa
-- Component paths: ~/esp-idf/components/app_trace ~/esp-idf/components/app_update ~/esp-idf/components/bootloader ~/esp-idf/components/bootloader_support ~/esp-idf/components/bt ~/esp-idf/components/cmock ~/esp-idf/components/console ~/esp-idf/components/cxx ~/esp-idf/components/driver ~/esp-idf/components/efuse ~/esp-idf/components/esp-tls ~/esp-idf/components/esp_adc ~/esp-idf/components/esp_app_format ~/esp-idf/components/esp_bootloader_format ~/esp-idf/components/esp_coex ~/esp-idf/components/esp_common ~/esp-idf/components/esp_driver_ana_cmpr ~/esp-idf/components/esp_driver_cam ~/esp-idf/components/esp_driver_dac ~/esp-idf/components/esp_driver_gpio ~/esp-idf/components/esp_driver_gptimer ~/esp-idf/components/esp_driver_i2c ~/esp-idf/components/esp_driver_i2s ~/esp-idf/components/esp_driver_isp ~/esp-idf/components/esp_driver_jpeg ~/esp-idf/components/esp_driver_ledc ~/esp-idf/components/esp_driver_mcpwm ~/esp-idf/components/esp_driver_parlio ~/esp-idf/components/esp_driver_pcnt ~/esp-idf/components/esp_driver_ppa ~/esp-idf/components/esp_driver_rmt ~/esp-idf/components/esp_driver_sdio ~/esp-idf/components/esp_driver_sdm ~/esp-idf/components/esp_driver_sdmmc ~/esp-idf/components/esp_driver_sdspi ~/esp-idf/components/esp_driver_spi ~/esp-idf/components/esp_driver_touch_sens ~/esp-idf/components/esp_driver_tsens ~/esp-idf/components/esp_driver_uart ~/esp-idf/components/esp_driver_usb_serial_jtag ~/esp-idf/components/esp_eth ~/esp-idf/components/esp_event ~/esp-idf/components/esp_gdbstub ~/esp-idf/components/esp_hid ~/esp-idf/components/esp_http_client ~/esp-idf/components/esp_http_server ~/esp-idf/components/esp_https_ota ~/esp-idf/components/esp_https_server ~/esp-idf/components/esp_hw_support ~/esp-idf/components/esp_lcd ~/esp-idf/components/esp_local_ctrl ~/esp-idf/components/esp_mm ~/esp-idf/components/esp_netif ~/esp-idf/components/esp_netif_stack ~/esp-idf/components/esp_partition ~/esp-idf/components/esp_phy ~/esp-idf/components/esp_pm ~/esp-idf/components/esp_psram ~/esp-idf/components/esp_ringbuf ~/esp-idf/components/esp_rom ~/esp-idf/components/esp_security ~/esp-idf/components/esp_system ~/esp-idf/components/esp_timer ~/esp-idf/components/esp_vfs_console ~/esp-idf/components/esp_wifi ~/esp-idf/components/espcoredump ~/esp-idf/components/esptool_py ~/esp-idf/components/fatfs ~/esp-idf/components/freertos ~/esp-idf/components/hal ~/esp-idf/components/heap ~/esp-idf/components/http_parser ~/esp-idf/components/idf_test ~/esp-idf/components/ieee802154 ~/esp-idf/components/json ~/esp-idf/components/log ~/esp-idf/components/lwip ~/projects/espromdemo/main ~/esp-idf/components/mbedtls ~/esp-idf/components/mqtt ~/esp-idf/components/newlib ~/esp-idf/components/nvs_flash ~/esp-idf/components/nvs_sec_provider ~/esp-idf/components/openthread ~/esp-idf/components/partition_table ~/esp-idf/components/perfmon ~/esp-idf/components/protobuf-c ~/esp-idf/components/protocomm ~/esp-idf/components/pthread ~/esp-idf/components/rt ~/esp-idf/components/sdmmc ~/esp-idf/components/soc ~/esp-idf/components/spi_flash ~/esp-idf/components/spiffs ~/esp-idf/components/tcp_transport ~/esp-idf/components/ulp ~/esp-idf/components/unity ~/esp-idf/components/usb ~/esp-idf/components/vfs ~/esp-idf/components/wear_levelling ~/esp-idf/components/wifi_provisioning ~/esp-idf/components/wpa_supplicant ~/esp-idf/components/xtensa
-- Configuring done (3.5s)
-- Generating done (0.4s)
-- Build files have been written to: ~/projects/espromdemo/build
[298/973] Performing build step for 'bootloader'
FAILED: bootloader-prefix/src/bootloader-stamp/bootloader-build bootloader/bootloader.elf bootloader/bootloader.bin bootloader/bootloader.map ~/projects/espromdemo/build/bootloader-prefix/src/bootloader-stamp/bootloader-build ~/projects/espromdemo/build/bootloader/bootloader.elf ~/projects/espromdemo/build/bootloader/bootloader.bin ~/projects/espromdemo/build/bootloader/bootloader.map 
cd ~/projects/espromdemo/build/bootloader && /usr/bin/cmake --build .
[0/1] Re-running CMake...
-- Building ESP-IDF components for target esp32
-- Project sdkconfig file ~/projects/espromdemo/sdkconfig
-- Compiler supported targets: xtensa-esp-elf
-- Adding linker script ~/esp-idf/components/soc/esp32/ld/esp32.peripherals.ld
-- Bootloader project name: "bootloader" version: 1
-- Adding linker script ~/esp-idf/components/esp_rom/esp32/ld/esp32.rom.ld
-- Adding linker script ~/esp-idf/components/esp_rom/esp32/ld/esp32.rom.api.ld
-- Adding linker script ~/esp-idf/components/esp_rom/esp32/ld/esp32.rom.libgcc.ld
-- Adding linker script ~/esp-idf/components/esp_rom/esp32/ld/esp32.rom.spiflash_legacy.ld
-- Adding linker script ~/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-funcs.ld
-- Adding linker script ~/esp-idf/components/bootloader/subproject/main/ld/esp32/bootloader.ld
-- Adding linker script ~/esp-idf/components/bootloader/subproject/main/ld/esp32/bootloader.rom.ld
-- Components: bootloader bootloader_support efuse esp_app_format esp_bootloader_format esp_common esp_hw_support esp_rom esp_security esp_system esptool_py freertos hal log main micro-ecc newlib partition_table soc spi_flash xtensa
-- Component paths: ~/esp-idf/components/bootloader ~/esp-idf/components/bootloader_support ~/esp-idf/components/efuse ~/esp-idf/components/esp_app_format ~/esp-idf/components/esp_bootloader_format ~/esp-idf/components/esp_common ~/esp-idf/components/esp_hw_support ~/esp-idf/components/esp_rom ~/esp-idf/components/esp_security ~/esp-idf/components/esp_system ~/esp-idf/components/esptool_py ~/esp-idf/components/freertos ~/esp-idf/components/hal ~/esp-idf/components/log ~/esp-idf/components/bootloader/subproject/main ~/esp-idf/components/bootloader/subproject/components/micro-ecc ~/esp-idf/components/newlib ~/esp-idf/components/partition_table ~/esp-idf/components/soc ~/esp-idf/components/spi_flash ~/esp-idf/components/xtensa
-- Configuring done (7.1s)
-- Generating done (0.1s)
-- Build files have been written to: ~/projects/espromdemo/build/bootloader
[1/102] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/log_timestamp_common.c.obj
[2/102] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/noos/log_timestamp.c.obj
[3/102] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_spiflash.c.obj
[4/102] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/noos/log_lock.c.obj
[5/102] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_efuse.c.obj
[6/102] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_sys.c.obj
[7/102] Building ASM object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_longjmp.S.obj
[8/102] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_gpio.c.obj
[9/102] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_uart.c.obj
[10/102] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/esp_cpu_intr.c.obj
[11/102] Linking C static library esp-idf/log/liblog.a
[12/102] Building C object esp-idf/esp_common/CMakeFiles/__idf_esp_common.dir/src/esp_err_to_name.c.obj
[13/102] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/cpu_region_protect.c.obj
[14/102] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/esp_memory_utils.c.obj
[15/102] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/cpu.c.obj
[16/102] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/chip_info.c.obj
[17/102] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_print.c.obj
[18/102] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/esp32/esp_efuse_table.c.obj
[19/102] Building C object esp-idf/esp_system/CMakeFiles/__idf_esp_system.dir/esp_err.c.obj
[20/102] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/rtc_init.c.obj
[21/102] Linking C static library esp-idf/esp_rom/libesp_rom.a
[22/102] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/rtc_sleep.c.obj
[23/102] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/esp32/esp_efuse_fields.c.obj
[24/102] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/rtc_clk_init.c.obj
[25/102] Linking C static library esp-idf/esp_common/libesp_common.a
[26/102] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/rtc_time.c.obj
[27/102] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp_efuse_fields.c.obj
[28/102] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/esp32/esp_efuse_utility.c.obj
[29/102] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/efuse_controller/keys/without_key_purposes/three_key_blocks/esp_efuse_api_key.c.obj
[30/102] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_mem.c.obj
[31/102] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_clock_init.c.obj
[32/102] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp_efuse_api.c.obj
[33/102] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_efuse.c.obj
[34/102] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_common_loader.c.obj
[35/102] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_common.c.obj
[36/102] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_random.c.obj
[37/102] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/secure_boot.c.obj
[38/102] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32/rtc_clk.c.obj
[39/102] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_random_esp32.c.obj
[40/102] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp_efuse_utility.c.obj
[41/102] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/flash_encrypt.c.obj
[42/102] Linking C static library esp-idf/esp_hw_support/libesp_hw_support.a
[43/102] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/bootloader_flash/src/flash_qio_mode.c.obj
[44/102] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/flash_partitions.c.obj
[45/102] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_clock_loader.c.obj
[46/102] Linking C static library esp-idf/esp_system/libesp_system.a
[47/102] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_console_loader.c.obj
[48/102] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_console.c.obj
[49/102] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_init.c.obj
[50/102] Linking C static library esp-idf/efuse/libefuse.a
[51/102] Building C object esp-idf/esp_bootloader_format/CMakeFiles/__idf_esp_bootloader_format.dir/esp_bootloader_desc.c.obj
[52/102] Building C object esp-idf/spi_flash/CMakeFiles/__idf_spi_flash.dir/spi_flash_wrap.c.obj
[53/102] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_panic.c.obj
[54/102] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/esp32/bootloader_sha.c.obj
[55/102] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/bootloader_flash/src/bootloader_flash_config_esp32.c.obj
[56/102] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/hal_utils.c.obj
[57/102] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/mpu_hal.c.obj
[58/102] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/esp32/bootloader_esp32.c.obj
[59/102] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/efuse_hal.c.obj
[60/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/dport_access_common.c.obj
[61/102] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/bootloader_flash/src/bootloader_flash.c.obj
[62/102] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_utility.c.obj
[63/102] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/esp32/efuse_hal.c.obj
[64/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/gpio_periph.c.obj
[65/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/uart_periph.c.obj
[66/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/adc_periph.c.obj
[67/102] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/esp32/cache_hal_esp32.c.obj
[68/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/dport_access.c.obj
[69/102] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/wdt_hal_iram.c.obj
[70/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/ledc_periph.c.obj
[71/102] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/mmu_hal.c.obj
[72/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/sdm_periph.c.obj
[73/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/emac_periph.c.obj
[74/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/rmt_periph.c.obj
[75/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/spi_periph.c.obj
[76/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/pcnt_periph.c.obj
[77/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/i2s_periph.c.obj
[78/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/lcd_periph.c.obj
[79/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/timer_periph.c.obj
[80/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/i2c_periph.c.obj
[81/102] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/esp_image_format.c.obj
[82/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/mcpwm_periph.c.obj
[83/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/mpi_periph.c.obj
[84/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/twai_periph.c.obj
[85/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/sdmmc_periph.c.obj
[86/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/wdt_periph.c.obj
[87/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/dac_periph.c.obj
[88/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/rtc_io_periph.c.obj
[89/102] Linking C static library esp-idf/bootloader_support/libbootloader_support.a
[90/102] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32/sdio_slave_periph.c.obj
[91/102] Building C object esp-idf/xtensa/CMakeFiles/__idf_xtensa.dir/xt_trax.c.obj
[92/102] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/bootloader_start.c.obj
[93/102] Linking C static library esp-idf/esp_bootloader_format/libesp_bootloader_format.a
[94/102] Linking C static library esp-idf/spi_flash/libspi_flash.a
[95/102] Linking C static library esp-idf/hal/libhal.a
[96/102] Linking C static library esp-idf/soc/libsoc.a
[97/102] Linking C static library esp-idf/xtensa/libxtensa.a
[98/102] Linking C static library esp-idf/main/libmain.a
[99/102] Linking C executable bootloader.elf
FAILED: bootloader.elf 
: && ~/.espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/xtensa-esp32-elf-gcc -mlongcalls -Wno-frame-address  -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -Wl,--cref -Wl,--defsym=IDF_TARGET_ESP32=0 -Wl,--Map=~/projects/espromdemo/build/bootloader/bootloader.map -Wl,--no-warn-rwx-segments -Wl,--orphan-handling=warn -fno-rtti -fno-lto -Wl,--gc-sections -Wl,--warn-common -T esp32.rom.ld -T esp32.rom.api.ld -T esp32.rom.libgcc.ld -T esp32.rom.spiflash_legacy.ld -T esp32.rom.newlib-funcs.ld -T esp32.peripherals.ld -T bootloader.ld -T bootloader.rom.ld CMakeFiles/bootloader.elf.dir/project_elf_src_esp32.c.obj -o bootloader.elf -L~/esp-idf/components/esp_rom/esp32/ld   -L~/esp-idf/components/soc/esp32/ld   -L~/esp-idf/components/bootloader/subproject/main/ld/esp32 esp-idf/xtensa/libxtensa.a  esp-idf/soc/libsoc.a  esp-idf/micro-ecc/libmicro-ecc.a  esp-idf/hal/libhal.a  esp-idf/spi_flash/libspi_flash.a  esp-idf/esp_bootloader_format/libesp_bootloader_format.a  esp-idf/bootloader_support/libbootloader_support.a  esp-idf/efuse/libefuse.a  esp-idf/esp_system/libesp_system.a  esp-idf/esp_hw_support/libesp_hw_support.a  esp-idf/esp_common/libesp_common.a  esp-idf/esp_rom/libesp_rom.a  esp-idf/log/liblog.a  esp-idf/main/libmain.a  esp-idf/xtensa/libxtensa.a  esp-idf/soc/libsoc.a  esp-idf/micro-ecc/libmicro-ecc.a  esp-idf/hal/libhal.a  esp-idf/spi_flash/libspi_flash.a  esp-idf/esp_bootloader_format/libesp_bootloader_format.a  esp-idf/bootloader_support/libbootloader_support.a  esp-idf/efuse/libefuse.a  esp-idf/esp_system/libesp_system.a  esp-idf/esp_hw_support/libesp_hw_support.a  esp-idf/esp_common/libesp_common.a  esp-idf/esp_rom/libesp_rom.a  esp-idf/log/liblog.a  esp-idf/xtensa/libxtensa.a  esp-idf/soc/libsoc.a  esp-idf/micro-ecc/libmicro-ecc.a  esp-idf/hal/libhal.a  esp-idf/spi_flash/libspi_flash.a  esp-idf/esp_bootloader_format/libesp_bootloader_format.a  esp-idf/bootloader_support/libbootloader_support.a  esp-idf/efuse/libefuse.a  esp-idf/esp_system/libesp_system.a  esp-idf/esp_hw_support/libesp_hw_support.a  esp-idf/esp_common/libesp_common.a  esp-idf/esp_rom/libesp_rom.a  esp-idf/log/liblog.a  esp-idf/xtensa/libxtensa.a  esp-idf/soc/libsoc.a  esp-idf/micro-ecc/libmicro-ecc.a  esp-idf/hal/libhal.a  esp-idf/spi_flash/libspi_flash.a  esp-idf/esp_bootloader_format/libesp_bootloader_format.a  esp-idf/bootloader_support/libbootloader_support.a  esp-idf/efuse/libefuse.a  esp-idf/esp_system/libesp_system.a  esp-idf/esp_hw_support/libesp_hw_support.a  esp-idf/esp_common/libesp_common.a  esp-idf/esp_rom/libesp_rom.a  esp-idf/log/liblog.a  esp-idf/xtensa/libxtensa.a  esp-idf/soc/libsoc.a  esp-idf/micro-ecc/libmicro-ecc.a  esp-idf/hal/libhal.a  esp-idf/spi_flash/libspi_flash.a  esp-idf/esp_bootloader_format/libesp_bootloader_format.a  esp-idf/bootloader_support/libbootloader_support.a  esp-idf/efuse/libefuse.a  esp-idf/esp_system/libesp_system.a  esp-idf/esp_hw_support/libesp_hw_support.a  esp-idf/esp_common/libesp_common.a  esp-idf/esp_rom/libesp_rom.a  esp-idf/log/liblog.a  ~/esp-idf/components/xtensa/esp32/libxt_hal.a  -u esp_dport_access_reg_read  -u __assert_func  -u esp_bootloader_desc  -u abort  -u __ubsan_include  -u esp_system_include_startup_funcs  -u bootloader_hooks_include && :
~/.espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld: esp-idf/bootloader_support/libbootloader_support.a(bootloader_flash.c.obj):(.iram1.6.literal+0x4): undefined reference to `esp_rom_spiflash_wait_idle'
~/.espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld: esp-idf/bootloader_support/libbootloader_support.a(bootloader_flash.c.obj): in function `bootloader_flash_unlock':
~/esp-idf/components/bootloader_support/bootloader_flash/src/bootloader_flash.c:513:(.iram1.6+0x8): undefined reference to `esp_rom_spiflash_wait_idle'
~/.espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld: ~/esp-idf/components/bootloader_support/bootloader_flash/src/bootloader_flash.c:508:(.iram1.6+0x5c): undefined reference to `esp_rom_spiflash_wait_idle'
~/.espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld: ~/esp-idf/components/bootloader_support/bootloader_flash/src/bootloader_flash.c:551:(.iram1.6+0x7f): undefined reference to `esp_rom_spiflash_wait_idle'
~/.espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld: ~/esp-idf/components/bootloader_support/bootloader_flash/src/bootloader_flash.c:558:(.iram1.6+0x9f): undefined reference to `esp_rom_spiflash_wait_idle'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
[307/973] Building C object esp-idf/esp_dr..._esp_driver_sdmmc.dir/src/sdmmc_host.c.obj
ninja: build stopped: subcommand failed.

More Information.

2 things worked:

  1. components/esp_rom/esp32/ld/esp32.rom.spiflash_legacy.ld -> add back the PROVIDE line for esp_rom_spi_flash_wait_idle:
    • my understanding that this might be a problem on certain silicon revisions. mine is a WROVER module ESP32-D0WD rev3 8 flash+8 psram
  2. copy the function in the components/esp_rom/patches/esp_rom_spiflash.c outside of the IF guard like this:
    `
    ...
    #define SPI_IDX 1

#if !CONFIG_SPI_FLASH_ROM_DRIVER_PATCH
#if CONFIG_IDF_TARGET_ESP32
esp_rom_spiflash_result_t esp_rom_spiflash_wait_idle(esp_rom_spiflash_chip_t *spi)
{
uint32_t status;
//wait for spi control ready
while ((REG_READ(SPI_EXT2_REG(1)) & SPI_ST)) {
}
while ((REG_READ(SPI_EXT2_REG(0)) & SPI_ST)) {
}
//wait for flash status ready
if ( ESP_ROM_SPIFLASH_RESULT_OK != esp_rom_spiflash_read_status(spi, &status)) {
return ESP_ROM_SPIFLASH_RESULT_ERR;
}
return ESP_ROM_SPIFLASH_RESULT_OK;
}
#endif
#endif

#if CONFIG_SPI_FLASH_ROM_DRIVER_PATCH
...
`

@tamisoft tamisoft added the Type: Bug bugs in IDF label Jan 18, 2025
@github-actions github-actions bot changed the title ESP32: esp_rom_spiflash_wait_idle undefined reference if CONFIG_SPI_FLASH_ROM_DRIVER_PATCH not set ESP32: esp_rom_spiflash_wait_idle undefined reference if CONFIG_SPI_FLASH_ROM_DRIVER_PATCH not set (IDFGH-14455) Jan 18, 2025
@espressif-bot espressif-bot added the Status: Opened Issue is new label Jan 18, 2025
@espressif-bot espressif-bot added Status: Done Issue is done internally Resolution: NA Issue resolution is unavailable and removed Status: Opened Issue is new labels Jan 23, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Resolution: NA Issue resolution is unavailable Status: Done Issue is done internally Type: Bug bugs in IDF
Projects
None yet
Development

No branches or pull requests

3 participants