idf_component.yaml在什么位置ESP32 应用程序崩溃 i2c: CONFLICT! driver_ng is not allowed to be used with this old driver

307 2024-08-18 21:14

Q:idf_component.yaml在什么位置

`idf_component.yaml` 是 ESP-IDF 组件管理器使用的一个配置文件,它位于组件的根目录下,用于描述组件及其依赖关系。这个文件可以包含构建相关属性、元数据属性和组件依赖等信息 。例如,你可以使用 `idf_component.yml` 来指定组件的版本、维护者、描述、许可证等元数据,以及定义组件的依赖项 。

要创建 `idf_component.yaml` 文件,你可以在组件目录下运行 `idf.py create-manifest` 命令,这将生成一个清单文件模板。如果你需要为特定的组件创建清单文件,可以使用 `--component` 选项指定组件名称,或者使用 `--path` 选项指定创建清单文件的目录路径 。例如,使用以下命令可以在 `components` 目录下为名为 `my_component` 的组件创建清单文件:

```bash
idf.py create-manifest --component=my_component
```

此外,如果你正在使用 ESP-IDF v5.3 或更新版本,`idf_component.yaml` 文件对于组件管理器来说是非常重要的,因为它会处理项目中每个组件的依赖项,并在项目根目录中创建 `dependencies.lock` 文件,包含完整的依赖项列表 。如果你需要添加依赖项到 ESP-IDF 项目中的组件,可以使用以下命令:

```bash
idf.py add-dependency namespace/name=version
```

其中 `namespace/name` 表示组件的名称,`version` 是组件的版本范围 。如果你的项目中还没有 `idf_component.yaml` 文件,执行上述命令会自动创建并添加依赖项。

在组件的 `idf_component.yml` 文件中,你可以定义来自 ESP 组件注册表的依赖项,例如:

```yaml
dependencies:
  # 定义来自注册表的依赖项
  example/cmp: ">=1.0.0"
```

此外,如果你正在使用 ESP-IDF 的 CMake 构建系统,`idf_component.yaml` 文件对于组件的集成和依赖管理至关重要 。这个文件允许你指定组件的源文件、头文件目录、公开和私有依赖,以及其他构建相关的设置。通过这种方式,ESP-IDF 的组件管理器可以自动处理组件的下载和集成,确保项目的依赖关系得到满足 。

 

Q:ESP32 应用程序崩溃 i2c: CONFLICT! driver_ng is not allowed to be used with this old driver

使用 ESP-IDF 5.3 或更高版本编译的应用程序在运行时可能会出现以下消息而失败:

i2c: CONFLICT! driver_ng is not allowed to be used with this old driver

问题是由于不兼容的 BSP (板级支持包) 使用了旧版本的 I2C 驱动程序引起的。

解决方案是在 idf_component.yaml 中添加以下依赖项:

  esp_codec_dev:
    public: true
    version: "==1.1.0"

重新构建应用程序,问题应得到解决。

全部评论

·