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 - если все сделано правильно, проект должен построиться.
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!)
