espressif / esp-idf

Espressif IoT Development Framework. Official development framework for Espressif SoCs.
Apache License 2.0
12.99k stars 7.12k forks source link

Missing usb_phy.h in tusb_msc example (IDFGH-13207) #14144

Open xinchencai opened 1 week ago

xinchencai commented 1 week ago

Answers checklist.

IDF version.

v5.2.2

Operating System used.

Windows

How did you build your project?

Command line with idf.py

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

CMD

What is the expected behavior?

Build normally, trying to make a mass storage device on esp32 P4.

What is the actual behavior?

esp_error Throws a build error:

Missing "esp_private/usb_phy.h" file name found in the following component(s): usb(C:\Espressif\frameworks\esp-idf-v5.2.2\components\usb\include\esp_private\usb_phy.h). Maybe one of the components needs to add the missing header directory to INCLUDE_DIRS of idf_component_register call in CMakeLists.txt.

Steps to reproduce.

  1. Downloaded esp-idf master branch to project folder
  2. Copied tusb_msc project folder from examples folder to project folder
  3. cd into project folder
  4. Ran idf.py --preview set-target esp32p4
  5. Ran idf.py build

Build or installation Logs.

C:\Users\xinch\esp\tusb_msc>idf.py build
Executing action: all (aliases: build)
Running ninja in directory C:\Users\xinch\esp\tusb_msc\build
Executing "ninja all"...
[40/647] Generating ../../partition_table/partition-table.bin
Partition table binary generated. Contents:
*******************************************************************************
# ESP-IDF Partition Table
# Name, Type, SubType, Offset, Size, Flags
nvs,data,nvs,0x9000,24K,
phy_init,data,phy,0xf000,4K,
factory,app,factory,0x10000,1M,
storage,data,fat,0x110000,1M,
*******************************************************************************
[626/647] Building C object esp-idf/espressif__esp_tinyusb/CMakeFiles/__idf_espressif__esp_tinyusb.dir/tinyusb.c.obj
FAILED: esp-idf/espressif__esp_tinyusb/CMakeFiles/__idf_espressif__esp_tinyusb.dir/tinyusb.c.obj
ccache C:\Espressif\tools\riscv32-esp-elf\esp-13.2.0_20230928\riscv32-esp-elf\bin\riscv32-esp-elf-gcc.exe -DESP_PLATFORM -DIDF_VER=\"v5.2.2\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -IC:/Users/xinch/esp/tusb_msc/build/config -IC:/Users/xinch/esp/tusb_msc/managed_components/espressif__esp_tinyusb/include -IC:/Users/xinch/esp/tusb_msc/managed_components/espressif__esp_tinyusb/include_private -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/newlib/platform_include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/freertos/config/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/freertos/config/include/freertos -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/freertos/config/riscv/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/freertos/FreeRTOS-Kernel/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/freertos/FreeRTOS-Kernel/portable/riscv/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/freertos/FreeRTOS-Kernel/portable/riscv/include/freertos -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/freertos/esp_additions/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_hw_support/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_hw_support/include/soc -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_hw_support/include/soc/esp32p4 -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/heap/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/log/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/soc/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/soc/esp32p4 -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/soc/esp32p4/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/hal/platform_port/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/hal/esp32p4/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/hal/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_rom/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_rom/include/esp32p4 -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_rom/esp32p4 -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_common/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_system/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_system/port/soc -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_system/port/include/riscv -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_system/port/include/private -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/riscv/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/lwip/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/lwip/include/apps -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/lwip/include/apps/sntp -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/lwip/lwip/src/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/lwip/port/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/lwip/port/freertos/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/lwip/port/esp32xx/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/lwip/port/esp32xx/include/arch -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/lwip/port/esp32xx/include/sys -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/fatfs/diskio -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/fatfs/src -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/fatfs/vfs -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/wear_levelling/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_partition/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/sdmmc/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/driver/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/driver/deprecated -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/driver/analog_comparator/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/driver/dac/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/driver/gpio/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/driver/gptimer/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/driver/i2c/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/driver/i2s/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/driver/ledc/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/driver/mcpwm/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/driver/parlio/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/driver/pcnt/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/driver/rmt/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/driver/sdio_slave/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/driver/sdmmc/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/driver/sigma_delta/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/driver/spi/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/driver/temperature_sensor/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/driver/touch_sensor/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/driver/twai/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/driver/uart/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/driver/usb_serial_jtag/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_pm/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_ringbuf/include -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/vfs/include -IC:/Users/xinch/esp/tusb_msc/managed_components/espressif__tinyusb/src -IC:/Espressif/frameworks/esp-idf-v5.2.2/components/freertos/FreeRTOS-Kernel/include/freertos -march=rv32imafc_zicsr_zifencei -mabi=ilp32f  -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -nostartfiles -Og -fno-shrink-wrap -fmacro-prefix-map=C:/Users/xinch/esp/tusb_msc=. -fmacro-prefix-map=C:/Espressif/frameworks/esp-idf-v5.2.2=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu17 -Wno-old-style-declaration -DCFG_TUSB_MCU=OPT_MCU_ESP32P4 -MD -MT esp-idf/espressif__esp_tinyusb/CMakeFiles/__idf_espressif__esp_tinyusb.dir/tinyusb.c.obj -MF esp-idf\espressif__esp_tinyusb\CMakeFiles\__idf_espressif__esp_tinyusb.dir\tinyusb.c.obj.d -o esp-idf/espressif__esp_tinyusb/CMakeFiles/__idf_espressif__esp_tinyusb.dir/tinyusb.c.obj -c C:/Users/xinch/esp/tusb_msc/managed_components/espressif__esp_tinyusb/tinyusb.c
C:/Users/xinch/esp/tusb_msc/managed_components/espressif__esp_tinyusb/tinyusb.c:12:10: fatal error: esp_private/usb_phy.h: No such file or directory
   12 | #include "esp_private/usb_phy.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
[628/647] Performing configure step for 'bootloader'
-- Found Git: C:/Espressif/tools/idf-git/2.44.0/cmd/git.exe (found version "2.44.0.windows.1")
-- The C compiler identification is GNU 13.2.0
-- The CXX compiler identification is GNU 13.2.0
-- The ASM compiler identification is GNU
-- Found assembler: C:/Espressif/tools/riscv32-esp-elf/esp-13.2.0_20230928/riscv32-esp-elf/bin/riscv32-esp-elf-gcc.exe
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Espressif/tools/riscv32-esp-elf/esp-13.2.0_20230928/riscv32-esp-elf/bin/riscv32-esp-elf-gcc.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Espressif/tools/riscv32-esp-elf/esp-13.2.0_20230928/riscv32-esp-elf/bin/riscv32-esp-elf-g++.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Building ESP-IDF components for target esp32p4
-- Project sdkconfig file C:/Users/xinch/esp/tusb_msc/sdkconfig
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of time_t
-- Check size of time_t - done
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.2.2/components/soc/esp32p4/ld/esp32p4.peripherals.ld
-- Bootloader project name: "bootloader" version: 1
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_rom/esp32p4/ld/esp32p4.rom.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_rom/esp32p4/ld/esp32p4.rom.api.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_rom/esp32p4/ld/esp32p4.rom.rvfp.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_rom/esp32p4/ld/esp32p4.rom.newlib.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_rom/esp32p4/ld/esp32p4.rom.wdt.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_rom/esp32p4/ld/esp32p4.rom.systimer.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_rom/esp32p4/ld/esp32p4.rom.version.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.2.2/components/bootloader/subproject/main/ld/esp32p4/bootloader.ld
-- Adding linker script C:/Espressif/frameworks/esp-idf-v5.2.2/components/bootloader/subproject/main/ld/esp32p4/bootloader.rom.ld
-- Components: bootloader bootloader_support efuse esp_app_format esp_bootloader_format esp_common esp_hw_support esp_rom esp_system esptool_py freertos hal log main micro-ecc newlib partition_table riscv soc spi_flash
-- Component paths: C:/Espressif/frameworks/esp-idf-v5.2.2/components/bootloader C:/Espressif/frameworks/esp-idf-v5.2.2/components/bootloader_support C:/Espressif/frameworks/esp-idf-v5.2.2/components/efuse C:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_app_format C:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_bootloader_format C:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_common C:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_hw_support C:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_rom C:/Espressif/frameworks/esp-idf-v5.2.2/components/esp_system C:/Espressif/frameworks/esp-idf-v5.2.2/components/esptool_py C:/Espressif/frameworks/esp-idf-v5.2.2/components/freertos C:/Espressif/frameworks/esp-idf-v5.2.2/components/hal C:/Espressif/frameworks/esp-idf-v5.2.2/components/log C:/Espressif/frameworks/esp-idf-v5.2.2/components/bootloader/subproject/main C:/Espressif/frameworks/esp-idf-v5.2.2/components/bootloader/subproject/components/micro-ecc C:/Espressif/frameworks/esp-idf-v5.2.2/components/newlib C:/Espressif/frameworks/esp-idf-v5.2.2/components/partition_table C:/Espressif/frameworks/esp-idf-v5.2.2/components/riscv C:/Espressif/frameworks/esp-idf-v5.2.2/components/soc C:/Espressif/frameworks/esp-idf-v5.2.2/components/spi_flash
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/xinch/esp/tusb_msc/build/bootloader
ninja: build stopped: subcommand failed.
Missing "esp_private/usb_phy.h" file name found in the following component(s): usb(C:\Espressif\frameworks\esp-idf-v5.2.2\components\usb\include\esp_private\usb_phy.h). Maybe one of the components needs to add the missing header directory to INCLUDE_DIRS of idf_component_register call in CMakeLists.txt.
ninja failed with exit code 1, output of the command is in the C:\Users\xinch\esp\tusb_msc\build\log\idf_py_stderr_output_30324 and C:\Users\xinch\esp\tusb_msc\build\log\idf_py_stdout_output_30324

More Information.

Doesn't work on Raspberry Pi either

roma-jam commented 1 week ago

Hi @xinchencai ,

Thanks for reporting the problem. Unfortunately, the support of P4 is in preview state for 5.2.2 release and the USB part is not implemented there. That is why we need to fulfill the idf.py set-target command with --preview flag, and this is the reason why usb_phy.h is missing there.

The correct solution would be to use the release/v5.3 (or higher).
If for some reason this is not possible, please let us know.

If it is possible, try the example on P4 under esp-idf v5.3 (or higher) and close the ticket if there will be no further questions. Otherwise, feel free to report any issues.

Thanks.