封装 ESP-IDF 组件并上传到 ESP 组件注册表
介绍
在 ESP-IDF 中,组件(Component)是用于组织代码的基本单元,类似于库。每个组件都是一个独立的模块,包含特定的功能,可以与其他组件一起构建项目。通过这种模块化设计,你的项目可以由多个组件组成,易于管理和复用。此外,ESP-IDF 提供了组件注册表,开发者可以在其中分享组件,也可以轻松使用其他人发布的组件。
创建组件
为了封装一个 ESP-IDF 组件,首先需要创建一个标准的目录结构。在你的项目根目录下,新建一个 components/
文件夹,在里面创建你的组件文件夹。以 my_component
为例,目录结构如下:
css
project_directory/
├── components/
│ └── my_component/
│ ├── CMakeLists.txt
│ ├── include/
│ │ └── my_component.h
│ ├── my_component.c
├── main/
└── CMakeLists.txt
或者也可以通过终端运行以下命令来创建
bash
idf.py create-component my_component
如果你是使用VScode进行编程还可以在上方搜索框调用命令
以上方法都可以获得一个基本的组件框架,但如果要将组件发布到 ESP 组件注册表,还需要一些额为的配置文件
上传组件到 ESP 组件注册表
初始化Git 仓库
ESP-IDF 组件通常通过 Git 仓库进行管理。我们需要将组件代码推送到一个 Git 仓库
编写 idf_component.yml 文件
为了能够发布组件,我们需要创建 idf_component.yml
文件,该文件定义了组件的元数据。这个文件需要放在组件的根目录下。
bash
version: 1.0.0
license: "MIT"
description: my_component
url: https://github.com/my_Namespace/my_component
files:
exclude:
- .git
dependencies:
idf:
version: ">=5.3.1"
my_Namespace为你github的名称
license: "MIT" 组件的许可协议,不需要可以删除,如果使用许可协议,需要添加LICENSE文件
发布到组件注册表
接下来,我们将这个组件上传到 ESP 组件注册表,以便分享给其他开发者使用。要将组件发布到 ESP 组件注册表,您需要提供身份验证令牌。方法是通过环境变量进行设置。
获取 API 令牌
首先,您需要从 Espressif 获取 API 令牌。您可以通过以下步骤获取:
- 登录到 ESP 组件注册表。
- 导航到您的个人资料页面。
- 生成一个新的 API 令牌。
设置环境变量
将 API 令牌设置为环境变量 IDF_COMPONENT_API_TOKEN
。
发布组件
使用 命令行工具将组件发布到 ESP-IDF 组件注册表。
bash
compote component upload --namespace [YOUR_NAMESPACE] --name test_cmp
YOUR_NAMESPACE为你的github名称
添加组件注册表中的组件
上传后,组件就可以在注册表里找到了,想要在项目中添加这个组件也很很简单
搜索框选择ESP显示组件注册表 命令
搜索需要的组件,点击添加即可
当添加组件后,编译时会自动将组件下载到项目的 managed_components
目录中。需要注意的是,该目录中的内容是不可修改的。每个组件的目录下都会自动生成一个 .component_hash
文件,该文件记录了组件的哈希值。在项目构建时,系统会将此哈希值与项目根目录下的 dependencies.lock
文件中的哈希值进行比对。如果两者不一致,系统会自动重新下载该组件。
总结
参考资料
IDF组件管理