封装 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组件管理

相关推荐
boneStudent12 小时前
Day29:I2C 高级应用
stm32·单片机·嵌入式硬件
@good_good_study13 小时前
STM32 I2C配置函数及实验
stm32·单片机
芯联智造14 小时前
【stm32简单外设篇】- 28BYJ-48 步进电机(配 ULN2003 驱动板)
c语言·stm32·单片机·嵌入式硬件
喜喜安14 小时前
CoreS3 屏幕背光
单片机·嵌入式硬件·m5stack cores3
星期天215 小时前
1.4光敏传感器控制蜂鸣器
stm32·单片机·嵌入式硬件·江科大
沐欣工作室_lvyiyi16 小时前
基于无线互联的电源健康监测与控制系统设计(论文+源码)
stm32·单片机·毕业设计·电源健康监测
@good_good_study17 小时前
STM32 ADC单通道采样函数及实验
stm32·单片机
田甲17 小时前
【STM32】基于TPS61165芯片的LED驱动电路
stm32·单片机·嵌入式硬件
d111111111d17 小时前
STM32得中断服务函数,为什么不能有返回值
笔记·stm32·单片机·嵌入式硬件·学习
CS Beginner17 小时前
【单片机】GPIO位结构图解析
单片机·嵌入式硬件