idf_component.yml文件
idf_component.yml属于哪个ESP-IDF组件,就放在那个组件的根目录下。
如:
project/
├── CMakeLists.txt
├── main/
│ ├── CMakeLists.txt
│ ├── idf_component.yml # main组件的依赖
│ └── main.c
├── ports/
│ ├── CMakeLists.txt
│ ├── idf_component.yml # ports组件的依赖
│ └── ...
└── managed_components/
如果ports/CMakeLists.txt中存在:
idf_component_register(
SRCS ...
INCLUDE_DIRS ...
)
ports就是一个ESP-IDF组件,它可以拥有自己的:
ports/idf_component.yml
ESP-IDF构建系统 + ESP-IDF Component Manager
idf.py reconfigure/build
↓
idf.py调用CMake
↓
ESP-IDF的project.cmake初始化项目
↓
扫描项目中的ESP-IDF组件
↓
Component Manager查找每个组件的idf_component.yml
↓
解析dependencies
↓
计算依赖关系和兼容版本
↓
读取/更新dependencies.lock
↓
下载缺少的组件到managed_components
↓
把下载的组件加入CMake构建
ports/idf_component.yml
dependencies:
idf: ">=6.1"
espressif/usb_host_uvc: "2.6.0"
espressif/esp_h264: "1.4.1"
espressif/esp_muxer: "1.2.3"
ESP-IDF Component Manager读取这个文件,下载:
usb_host_uvcusb- H.264组件
- MP4复用组件
- 它们的传递依赖
下载结果放在:
managed_components/
也可以用命令添加依赖,例如:
idf.py add-dependency "espressif/usb_host_uvc^2.6.0"
项目配置
必须在sdkconfig配置
CONFIG_USB_HOST_HUBS_SUPPORTED=y
如果只有一级Hub,可以关闭多级Hub:
# CONFIG_USB_HOST_HUB_MULTI_LEVEL is not set