封装 ESP-IDF 组件并上传到 ESP 组件注册表

封装 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 令牌。您可以通过以下步骤获取:

  1. 登录到 ESP 组件注册表
  2. 导航到您的个人资料页面。
  3. 生成一个新的 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组件管理

相关推荐
promising-w8 小时前
【运算放大器专题】基础篇
嵌入式硬件·学习
leo03088 小时前
图像硬解码和软解码
单片机·嵌入式硬件
Wythzhfrey9 小时前
单片机总复习
单片机·嵌入式硬件
源远流长jerry9 小时前
STM32F103ZET6按键中断控制灯
stm32·单片机·嵌入式硬件
@Hwang9 小时前
【ESP32-IDF笔记】09-UART配置和使用
笔记·esp32·uart·esp32s3·esp32-idf
搬砖的小码农_Sky10 小时前
单片机STM32F103:DMA的原理以及应用
stm32·单片机
不想学习\??!11 小时前
STM32-待机唤醒实验
stm32·单片机·嵌入式硬件
不想学习\??!12 小时前
STM32-中断
单片机·嵌入式硬件
aerror12 小时前
xbox one controller DSLogic 逻辑分析仪截包
stm32·嵌入式硬件·xbox
TianYaKe-天涯客12 小时前
嵌入式调试LOG日志输出(以STM32为例)
stm32·单片机·嵌入式硬件