第九章 IDF组件注册表
IDF组件注册表(IDF Component Registry)是一个为ESP-IDF(Espressif IoT Development Framework)开发框架提供的官方组件搜索和添加平台。开发者可以通过访问IDF组件注册表,搜索并找到所需的组件,然后按照提供的指南将组件添加到自己的ESP-IDF项目中。例如,如果开发者需要LVGL组件和USB组件,开发者可以在IDF组件注册表中搜索这两个组件,然后找到每个组件的添加代码。在终端窗口中,开发者可以输入这些添加命令来将组件添加到他们的项目中。一旦添加成功,这些组件就可以在项目中使用,从而简化了组件的集成过程。 本章将分为如下几个小节: 9.1 IDF组件注册表简介 9.2 项目工程如何添加组件
9.1 IDF组件注册表简介 IDF组件注册表是乐鑫官方专为ESP-IDF开发框架打造的一个组件搜索与添加平台。尽管ESP-IDF物联网开发框架的components文件夹内已包含诸如lwIP、MQTT等丰富的驱动程序和第三方组件,但这些组件主要服务于物联网领域,具有特定的专一性。部分第三方库并未直接集成于ESP-IDF中,为了提升开发者的工作效率,乐鑫官方推出了IDF组件注册表,其中存储了已适配的第三方组件供开发者使用。开发者只需联网,即可轻松下载并移植这些组件到自己的项目工程中。以下是IDF组件注册表的特点。 (1)简化组件搜索和集成:IDF组件注册表为开发者提供了一个集中化的平台,用于搜索和查找ESP-IDF项目中所需的组件。通过注册表,开发者可以轻松地浏览和筛选组件,根据项目的需求选择适合的组件,并快速集成到我们的项目中。 (2)提高开发效率:有了IDF组件注册表,开发者无需花费大量时间在互联网上搜索和评估各种组件。我们可以直接在注册表中找到经过验证和官方推荐的组件,这大大减少了寻找和测试组件所需的时间,从而提高了开发效率。 (3)确保组件兼容性和质量:IDF组件注册表中的组件都经过严格的测试和验证,以确保它们与ESP-IDF框架的兼容性和稳定性。这有助于减少项目中可能出现的兼容性问题,提高软件的质量。 (4)促进组件共享和复用:通过IDF组件注册表,开发者可以轻松地共享和复用他们创建的组件。这有助于推动ESP-IDF社区的发展,鼓励更多的开发者参与到组件的开发和贡献中,从而形成一个良性的生态循环。 (5)提供官方支持和文档:IDF组件注册表不仅提供了组件的搜索和添加功能,还为每个组件提供了详细的文档和官方支持。这有助于开发者更好地理解和使用组件,解决在使用过程中可能遇到的问题。 乐鑫官方的IDF组件注册表打开地址为:https://components.espressif.com/。打开以后如下图所示:
图9.1.1 IDF组件注册表 从上图可清晰看出,我们可以通过②或③选项对组件进行筛选,以排除那些不支持ESP-IDF特定版本或特定芯片的第三方库。同时,我们也可以在①处直接搜索需要添加的组件。例如,作者就通过搜索功能找到了esp_jpeg这一JPEG解码库(作者以esp_jpeg解码库组件为例,其他的组件是类似的),如下图所示。
图9.1.2 esp_jpeg解码库 在上图的页面中,我们可以轻松找到关于esp_jpeg的使用方法、芯片支持情况、使用示例以及添加组件的详细方法等内容介绍。这些内容具体如下: 1,芯片支持 esp_jpeg解码库可支持ESP32、ESP32-S3、ESP32-C3和ESP32-C6这些芯片型号,如下图所示:
图9.1.3 esp_jpeg解码库可支持芯片型号 2,使用要求 开发时,需要查看esp_jpeg组件的使用要求,才能添加到项目当中。下图是官方提供的esp_jpeg解码库组件的使用要求。
图9.1.4 esp_jpeg解码库组件使用要求 这个解码库组件对MCU、存储内存以及LCD都有明确的使用要求。如果设备未能满足这些要求,那么将无法顺利使用该解码库组件。因此,在选择和使用此组件时,务必确保设备满足相应的硬件条件。 3,使用示例 通过命令的形式就可以下载esp_jpeg解码库组件的示例工程,如下图所示:
图9.1.5 下载使用实例命令 在桌面上创建名为“test”的文件夹后,我们打开“ESP-IDF 5.1 PowerShell”窗口,并导航至该文件夹。在“test”文件夹内,我们执行命令“idf.py create-project-from-example 'espressif/esp_jpeg^1.0.5~2:get_started'”来下载esp_jpeg的示例工程。如下图所示:
图9.1.6 下载esp_jpeg组件示例 这样我们就可以参考这个示例来编写自己的jpeg解码实验了。 4,ESP-IDF版本要求 esp_jpeg解码库组件只能在v4.4以上版本运行,如下图所示:
图9.1.5 ESP-IDF版本要求 从上图可以看到,本教程安装的ESP-IDF5.1.2可支持这一个组件库。 9.2 项目工程如何添加组件 9.2.1 命令式添加组件 在项目工程中添加IDF组件注册表的组件是非常简单的,我们只需要输入“idf.py add-dependency "espressif/esp_jpeg^1.0.5~2"”命令就可以把组件下载到项目工程当中了。注意:执行这条命令时,系统会在工程的main文件夹下生成idf_component.yml文件,工程编译时,系统从IDF组件注册表Git仓库获取组件。在 ESP-IDF 中,组件是代码和资源的集合,这些代码和资源可以单独编译并与其他组件一起链接,以构建最终的应用程序。每个组件都可以有自己的 idf_component.yml 文件,该文件提供了关于该组件的元数据信息,以及构建和集成该组件所需的指令。下面,作者以基础工程00_basic为例,在此工程下添加esp_jpeg解码库组件。 (1)使用“ESP-IDF 5.1 PowerShell”进入00_basic工程目录下,如下图所示:
图9.2.1.1 命令进入00_basic工程目录下 (2)输入“idf.py add-dependency "espressif/esp_jpeg^1.0.5~2"”命令,如下图所示:
图9.2.1.2 下载esp_jpeg解码库idf_component.yml文件 此时,我们会发现基础工程00_basic的main文件夹下多了一个idf_component.yml,如下图所示:
图9.2.1.3 生成idf_component.yml (3)使用VS Code打开00_basic基础工程,然后线清除工程再编译此工程,编译成功之后,如下图所示:
图9.3.1.3 自动下载esp_jpeg解码库 从上图可见,在编译00_basic基础工程时,系统会自动从IDF组件注册表中下载esp_jpeg解码库组件,并将其集成到我们的工程项目中。这就是IDF组件注册表的添加与使用机制。但请注意,若要通过IDF组件注册表添加组件,必须确保设备处于联网状态,否则下载操作将失败。因此,在USB实验中,作者选择直接将USB库放置到components文件夹中,一来为了保持工程结构清晰,二来避免在清除编译时误删managed_components文件夹。这样的处理方式确保了项目的结构清晰和编译的顺畅进行。 最后,我们可在.c文件下引用esp_jpeg解码库组件了。其他组件也是一样的操作流程。望读者可好好利用IDF组件注册表这一牛X的功能。 9.2.2 VS Code工程添加组件 在VS Code项目工程中添加IDF组件注册表中的组件十分便捷。您只需按下“Ctrl+Shift+P”快捷键快速进入命令面板,或者通过菜单栏的“查看”选项,选择“命令面板”来打开它。随后,在命令面板中输入“ESP-IDF: Show Component Registry”即可展示出组件注册表,具体操作如图所示。
图9.2.2.1 ESP-IDF注册表 在搜索框中,我们可以方便地查找开发者所需的组件。请注意,下载ESP-IDF注册表中的组件需要在联网环境下进行,因此请确保您的电脑已连接到网络,以便顺利下载所需的组件。下面作者以qrcode为例来讲解。
图9.2.2.2 选择版本并安装组件 在上图中,首先选择适合的组件版本,随后点击“install”按钮以安装qrcode组件。请务必注意,选择与ESP32S3芯片适配的组件至关重要,因为并非所有组件都兼容这款芯片。为了筛选出与ESP32S3兼容的组件,开发者可以在图9.2.2.1中选择“By target”选项,并将其设置为ESP32-S3。这样,您就能清晰地查看到这款芯片所支持的组件列表。
图9.2.2.3 下载qrcode组件 从上图可见,我们只需点击图9.2.2.2中的“install”按钮,即可为项目工程安装qrcode组件。随后,espressif-qrcode组件将被下载至项目工程目录下,并在mian文件夹中自动生成idf_component.yml文件。完成这些步骤后,我们便可以在c文件中直接调用qrcode的相关函数了。
|