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

相关推荐
HQB202613 小时前
EG1198|屹晶微电子 120V 内置 MOS 异步降压 DC‑DC(高性价比)
嵌入式硬件·硬件工程
果壳science14 小时前
张祥前实验如何获取正电荷
笔记·科技·嵌入式硬件·硬件工程·制造
南山电子nscn14 小时前
中科芯CETC汽车电池管理系统BMS进口芯片国产型号替代指南
单片机·汽车·bms
桀人15 小时前
认识AT24C02
stm32·单片机·嵌入式硬件
国科安芯16 小时前
星间激光通信终端CANFD控制网络的时延确定性与辐射可靠性
网络·嵌入式硬件·信息与通信·canfd·低轨卫星·商业航天·抗辐射
一直C16 小时前
嵌入式 Linux 驱动开发学习笔记:内核定时器、platform 总线与 I²C 驱动
linux·驱动开发·嵌入式硬件·学习·imx6ull
传感器与混合集成电路17 小时前
150MHz主频、8路DAC与6路PWM:JLH221360伺服控制SIP解析
嵌入式硬件
comyccccc17 小时前
STM32PID控制板设计全解析学习笔记
单片机·嵌入式硬件
碧海银沙音频科技研究院18 小时前
实现炬芯ATS308X的usb cdc 串口IAP 固件升级功能实现
人工智能·嵌入式硬件·深度学习·算法
恒锐丰科技林技术员18 小时前
EG1160 高压半桥驱动芯片:高压功率变换的实用驱动方案
经验分享·嵌入式硬件·硬件工程