Eclipse(esp-idf+tinyUsb) error: tinyusb.h: No such file or directory

После создания любого проекта, в примерах папки usb, где используется библиотека tinyUsb, компилятор выдает ошибку: fatal error: tinyusb.h: No such file or directory. Почему автоматически не подключается библиотека tinyUsb? Если кто знает какие либо решения по подключению этой библиотеки, опишите пожалуйста. Так же пытался в ручную добавить tinyUsb,не получилось, в конечном итоге вылазят ошибки. Один и тот же функционал, описан в разных файлах, и компилятор ругается.

Пример кода:

#include <stdio.h>
#include <stdlib.h>
#include <sys/reent.h>
#include "esp_log.h"
#include "esp_vfs.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "tinyusb.h"
#include "tusb_cdc_acm.h"
#include "tusb_console.h"
#include "sdkconfig.h"

static const char *TAG = "example";

void app_main(void)
{
    /* Setting TinyUSB up */
    ESP_LOGI(TAG, "USB initialization");

    tinyusb_config_t tusb_cfg = { 0 }; // the configuration uses default values
    ESP_ERROR_CHECK(tinyusb_driver_install(&tusb_cfg));

    tinyusb_config_cdcacm_t amc_cfg = { 0 }; // the configuration uses default values
    ESP_ERROR_CHECK(tusb_cdc_acm_init(&amc_cfg));

    ESP_LOGI(TAG, "USB initialization DONE");
    while (1) {
        ESP_LOGI(TAG, "log -> UART");
        vTaskDelay(1000 / portTICK_PERIOD_MS);
        fprintf(stdout, "example: print -> stdout\n");
        vTaskDelay(1000 / portTICK_PERIOD_MS);
        fprintf(stderr, "example: print -> stderr\n");
        vTaskDelay(1000 / portTICK_PERIOD_MS);

        esp_tusb_init_console(TINYUSB_CDC_ACM_0); // log to usb
        ESP_LOGI(TAG, "log -> USB");
        vTaskDelay(1000 / portTICK_PERIOD_MS);
        fprintf(stdout, "example: print -> stdout\n");
        vTaskDelay(1000 / portTICK_PERIOD_MS);
        fprintf(stderr, "example: print -> stderr\n");
        vTaskDelay(1000 / portTICK_PERIOD_MS);
        esp_tusb_deinit_console(TINYUSB_CDC_ACM_0); // log to uart
    }
}

Мой лист установленных инструментов: *Executing C:\Users\User\AppData\Local\Programs\Python\Python38-32\python.exe C:\msys32\home\User\esp\esp-idf\tools\idf_tools.py list

  • xtensa-esp32-elf: Toolchain for Xtensa (ESP32) based on GCC
    • esp-2020r3-8.4.0 (recommended, installed)
  • xtensa-esp32s2-elf: Toolchain for Xtensa (ESP32-S2) based on GCC
    • esp-2020r3-8.4.0 (recommended, installed)
  • xtensa-esp32s3-elf: Toolchain for Xtensa (ESP32-S3) based on GCC
    • esp-2020r3-8.4.0 (recommended, installed)
  • riscv32-esp-elf: Toolchain for 32-bit RISC-V based on GCC
    • 1.24.0.123_64eb9ff-8.4.0 (recommended, installed)
  • esp32ulp-elf: Toolchain for ESP32 ULP coprocessor
    • 2.28.51-esp-20191205 (recommended, installed)
  • esp32s2ulp-elf: Toolchain for ESP32-S2 ULP coprocessor
    • 2.28.51-esp-20191205 (recommended, installed)
  • cmake: CMake build system
    • 3.16.4 (recommended, installed)
  • openocd-esp32: OpenOCD for ESP32
    • v0.10.0-esp32-20200709 (recommended, installed)
  • ninja: Ninja build system
    • 1.10.0 (recommended, installed)
  • idf-exe: IDF wrapper tool for Windows
    • 1.0.1 (recommended, installed)
  • ccache: Ccache (compiler cache)
    • 3.7 (recommended, installed)
  • dfu-util: dfu-util (Device Firmware Upgrade Utilities)
    • 0.9 (recommended, installed)*

Ответы (2 шт):

Автор решения: Юра Недашковский

Ознакомившись с библиотекой мне удалось построить проект. Но не example, а с нуля. Хочу отметить несколько пунктов которые в дальнейшем помогут другим. tinyUsb поддерживает - esp32-s2(из серий esp). Если у Вас esp32, работать не будет. Согласно гайдам (https://github.com/hathach/tinyusb/blob/master/docs/getting_started.md) сделал следующее: 1 - скопировал в корень проекта папку tinyusb. Либо через терминал командами(находясь в папке проекта):

git init

git clone https://github.com/hathach/tinyusb tinyusb

2 - создаем файл tusb_config.h. Примеры есть в интернете, у каждого он свой. Желательно пролистать примеры и найти нужные дефайны. У меня он такой(cdc):

#ifndef MAIN_SRC_TUSB_CONFIG_H_
#define MAIN_SRC_TUSB_CONFIG_H_

#define CFG_TUSB_MCU            OPT_MCU_ESP32S2

#define BOARD_DEVICE_RHPORT_NUM 0
#define CFG_TUSB_OS             2

#define CFG_TUD_CDC             1

//------------- CDC -------------//

// FIFO size of CDC TX and RX
#define CFG_TUD_CDC_RX_BUFSIZE   512
#define CFG_TUD_CDC_TX_BUFSIZE   512

//#define CFG_TUD_MSC             1

//#define CFG_TUD_MSC_EP_BUFSIZE

#define CFG_TUSB_RHPORT0_MODE   OPT_MODE_DEVICE
#define CFG_TUSB_RHPORT1_MODE   OPT_MODE_NONE



#endif /* MAIN_SRC_TUSB_CONFIG_H_ */

3 - далее редактируем CMakeList.txt добавляя пути инклуйдов и ресурсов. И не забываем добавить путь к созданному tusb_config.h. В зависимости от функционала (хост или девайс, cdc или msc) смейк будет ругатся указывая чего не хватает,а мы молча добавляем нужные хедеры и .с файлы. Почти все они находятся в папке tinyusb/src.

4 - если все сделано правильно, проект должен построиться.

→ Ссылка
Автор решения: Angelic C

Set platform to S2 or S3.Eclipse ESP-IDF platform

Setting platform allows features of USB which is only present in S2 or S3 (not in C3, not in V3, not in ... any other version!)

→ Ссылка