0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

esp-matter开发环境搭建步骤

冬至配饺子 来源:kurisaW 作者:kurisaW 2023-09-18 17:30 次阅读

前提准备

1.Ubuntu22.04(磁盘容量不小于80G)
2.科学上网环境
由于后面的 esp-matter 测试的时候需要使用到科学上网环境,所以我们需要提前确保 linux 环境能够使用科学上网。

esp-idf 开发环境搭建

1.ESP-IDF 依赖环境安装

sudo apt-get install git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0

由于在克隆官方esp-idf仓库的时候一般会发生如下两个错误:

Problem1:执行 git submodule 速度慢
Problem2:执行install.sh 速度慢

所以我们这里特别着重讲解,注意,这里解决问题的顺序与esp-idf环境搭建是一起进行的,读者可以顺着流程走。

2.Problem1 solution

首先使用递归克隆命令克隆整个仓库到文件夹下

mkdir /home/kurisaw/Desktop/esp
git clone --recursive
git submodule update --init --recursive

由于 esp-idf 仓库下有很多递归的下游仓库,一般使用 GitHub 下载的话也会导致递归下载失败,所以乐鑫官方提供了两种解决方案,包括镜像仓库使用、submodule 更新、开发工具安装等,可加速环境的搭建。解决方案如下:

jihu-mirror 使用(推荐
submodule-update 使用(不推荐)
2.1 jihu-mirror 使用(推荐)
Step 1:
git clone
cd esp-gitee-tools
Step 2:
// 使用如下命令将仓库的 URL 进行替换

Step 3:
// 启用镜像URL
./jihu-mirror.sh set
使用命令 ./jihu-mirror.sh unset 恢复,不使用镜像的 URL。

Step 4:当使用镜像 URL 之后,再递归克隆 esp-idf 仓库
git clone --recursive https://github.com/espressif/esp-idf.git
当然如果不想使用镜像的URL可以使用如下命令进行恢复:

./jihu-mirror.sh unset
2.2 submodule-update 使用(不推荐)

Step 2:

// 仅克隆 esp-idf,不包含子模块

Step 3:
可以有两种方式来更新 submodules。

方式一

进入 esp-gitee-tools 目录,export submodule-update.sh 所在路径,方便后期使用,如:

cd esp-gitee-tools
export EGT_PATH=$(pwd)
进入 esp-idf 目录执行 submodule-update.sh 脚本:

cd esp-idf
$EGT_PATH/submodule-update.sh

方式二

submodule-update.sh 脚本支持将待更新 submodules 的工程路径作为参数传入,例如:submodule-update.sh PATH_OF_PROJ。

假如 Step 2 中 clone 的 esp-idf 位于 ~/git/esp32-sdk/esp-idf 目录,可使用以下方式来更新:

cd esp-gitee-tools
./submodule-update.sh ~/git/esp32-sdk/esp-idf
如果要更新其他工程,可以同样方式。

值得吐槽的是, submodule-update 这种方法还需要保持上游代码分支的提交历史一致,如果官方未及时更新则会导致该脚本暂时失效,不推荐使用,避坑!!

3.Problem2 solution
下面说第二个问题:执行./install.sh速度慢的问题

在 Espressif Systems 的 esp-idf 开发框架中,某些组件的构建过程需要从 GitHub 的 release 页面下载预编译的二进制文件。然而,在中国大陆访问 GitHub 的速度往往较慢并且不稳定,为了改善这个问题,Espressif Systems 将这些预编译的二进制文件托管在国内的服务器上,并提供了一个名为 IDF_GITHUB_ASSETS 的环境变量来指定这个地址。在设置了 IDF_GITHUB_ASSETS 变量之后,构建过程将会从这个指定的地址下载预编译的二进制文件

export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
然后再执行安装命令

./install.sh
在这还报了一个错误

我们根据提示安装python3.10-venv,并再次执行安装命令:

apt install python3.10-venv
./install.sh

至此,esp-idf 的安装工具就告一段落了。

esp-matter开发环境搭建

git clone --recursive
注意:如果上面的 esp-idf 开发环境的搭建使用的是 jihu-mirror 方式,那么你需要取消esp镜像,按理说这部分错误不应该发生,但实际上确实存在这部分问题,请执行命令:./jihu-mirror.sh unset取消esp镜像!!

若过程有报错,请执行下面命令在Git 仓库中获取到所有子模块,并将所有子模块及其下层子模块更新至最新版本。

git submodule update --init --recursive
执行安装命令:

./install.sh
本以为到这就结束了,但不出意外的话意外发生了,在安装过程中发生了报错…

Building wheel for pycryptodome (setup.py): started
error: subprocess-exited-with-error
× python setup.py bdist_wheel did not run successfully.
│ exit code: 1
╰─> See above for output.
note: This error originates from a subprocess, and is likely not a problem with pip.
Building wheel for pycryptodome (setup.py): finished with status 'error'
ERROR: Failed building wheel for pycryptodome
Running setup.py clean for pycryptodome
Building wheel for gevent (pyproject.toml): started
......
我们查看install.sh文件

#!/usr/bin/env bash
set -e
basedir=$(dirname "$0")
ESP_MATTER_PATH=(cd "{basedir}"; pwd)
MATTER_PATH=${ESP_MATTER_PATH}/connectedhomeip/connectedhomeip
export ESP_MATTER_PATH
echo ""
echo "Running Matter Setup"
echo ""
source ${MATTER_PATH}/scripts/bootstrap.sh
echo ""
echo "Installing zap-cli"
echo ""

Run the zap_download.py and extract the path of installed binary

eg output before cut: "export ZAP_INSTALL_PATH=zap/zap-v2023.03.06-nightly"

output after cut: zap/zap-v2023.03.06-nightly

TODO: Remove the zap-version after https://github.com/project-chip/connectedhomeip/pull/25727 merged

zap_path=python3 ${ESP_MATTER_PATH}/connectedhomeip/connectedhomeip/scripts/tools/zap/zap_download.py --sdk-root ${ESP_MATTER_PATH}/connectedhomeip/connectedhomeip --zap RELEASE --zap-version v2023.03.27-nightly --extract-root .zap 2>/dev/null | cut -d= -f2

Check whether the download is successful.

if [ -z $zap_path ]; then
echo "Failed to install zap-cli"
deactivate
exit 1
fi

Move files to one directory up, so that binaries will be in $ESP_MATTER_PATH/.zap/ directory and export.sh can leverage the fixed path

if [ -d "${ESP_MATTER_PATH}/.zap" ]; then
rm -r ${ESP_MATTER_PATH}/.zap
fi
mkdir ${ESP_MATTER_PATH}/.zap
mv *zap_path/{ESP_MATTER_PATH}/.zap/
rm -r $zap_path
chmod +x ${ESP_MATTER_PATH}/.zap/zap-cli
echo ""
echo "Building host tools"
echo ""
gn --root="
{MATTER_PATH}" gen **{MATTER_PATH}/out/host
ninja -C ${MATTER_PATH}/out/host
echo ""
echo "Host tools built at: ${MATTER_PATH}/out/host"
echo ""
echo ""
echo "Exit Matter environment"
echo ""
deactivate
echo ""
echo "Installing python dependencies for mfg_tool"
echo ""
python3 -m pip install -r ${ESP_MATTER_PATH}/tools/mfg_tool/requirements.txt
echo ""
echo "Installing python dependencies for Matter"
echo ""
python3 -m pip install -r ${ESP_MATTER_PATH}/requirements.txt
echo "All done! You can now run:"
echo ""
echo " . ${basedir}/export.sh"
echo ""

发现问题出在第10到13行,我尝试安装系统必要的依赖项来解决这个问题,成功解决!命令如下:

sudo apt install build-essential python3-dev
sudo apt-get install pkg-config
sudo apt-get install libglib2.0-dev libglib2.0-dev-bin libgio2.0-cil-dev

接着在安装zap-cli的时候再次发生报错,需要安装以下依赖库,并再次运行安装脚本命令,等待编译

sudo apt-get install libssl-dev
sudo apt-get install pip
./install.sh

最后看到All done!即代表环境安装成功!

至此,esp-matter开发环境搭建成功!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 二进制
    +关注

    关注

    2

    文章

    707

    浏览量

    41252
  • Linux系统
    +关注

    关注

    4

    文章

    567

    浏览量

    26923
  • URL
    URL
    +关注

    关注

    0

    文章

    134

    浏览量

    14832
  • ESP模块
    +关注

    关注

    1

    文章

    3

    浏览量

    6755
收藏 人收藏

    评论

    相关推荐

    基于matter协议开发搭建环境时报错要如何解决?

    你们好 我想问一下 我想基于matter协议开发ESP-32参考:https://docs.espressif.com/projects/esp ... oping.html按照上面的
    发表于 02-10 08:34

    ESP-Matter示例项目无法在组件下找到库的原因?

    我克隆了 ESP-Matter 的照明应用示例https://github.com/project-chip/connect ... -app/esp32。然后我在组件下添加了几个库并确保
    发表于 04-13 08:40

    esp-matter如何为按钮配置GPIO?

    我只是在尝试 esp-matter 的按钮示例。我想检查连接了哪个 PIN,但不幸的是我无法从源代码中弄清楚。下面提到的 app_driver_switch_init() 函数应该初始化按钮,将通过
    发表于 04-13 07:53

    Android 开发环境搭建步骤详细图解

    Android 开发环境搭建步骤详细图解
    发表于 10-24 08:49 11次下载
    Android <b class='flag-5'>开发</b><b class='flag-5'>环境</b><b class='flag-5'>搭建</b><b class='flag-5'>步骤</b>详细图解

    ESP8266 SDK开发环境搭建初级教程

    ESP8266 SDK 开发环境 本章主要从开发环境搭建、工程模板建立、
    发表于 12-07 14:42 14次下载
    <b class='flag-5'>ESP</b>8266 SDK<b class='flag-5'>开发</b><b class='flag-5'>环境</b><b class='flag-5'>搭建</b>初级教程

    ESP32教程——Windows开发环境搭建.pdf下载

    ESP32教程——Windows开发环境搭建.pdf
    发表于 04-14 10:41 47次下载
    <b class='flag-5'>ESP</b>32教程——Windows<b class='flag-5'>开发</b><b class='flag-5'>环境</b><b class='flag-5'>搭建</b>.pdf下载

    ESP32教程之如何在Windows系统上搭建开发环境

    本文档的主要内容详细介绍的是ESP32教程之如何在Windows系统上搭建开发环境
    发表于 12-13 15:34 40次下载
    <b class='flag-5'>ESP</b>32教程之如何在Windows系统上<b class='flag-5'>搭建</b><b class='flag-5'>开发</b><b class='flag-5'>环境</b>

    ESP8266与NodeMCU开发(一)环境搭建

    这一章将描述ESP8266的性能与指标,以及开发环境搭建
    发表于 10-29 09:36 9次下载
    <b class='flag-5'>ESP</b>8266与NodeMCU<b class='flag-5'>开发</b>(一)<b class='flag-5'>环境</b><b class='flag-5'>搭建</b>

    二、ESP32开发环境搭建

    ESP8266开发环境搭建arduino编译器下载arduino编译器安装添加ESP8266开发
    发表于 12-03 16:06 2次下载
    二、<b class='flag-5'>ESP</b>32<b class='flag-5'>开发</b><b class='flag-5'>环境</b><b class='flag-5'>搭建</b>

    204. esp-adf 环境搭建

    204. esp-adf 环境搭建
    发表于 12-03 16:36 10次下载
    204. <b class='flag-5'>esp</b>-adf <b class='flag-5'>环境</b><b class='flag-5'>搭建</b>

    ESP8266与NodeMCU开发(一)环境搭建

    这一章将描述ESP8266的性能与指标,以及开发环境搭建
    发表于 12-05 10:21 7次下载
    <b class='flag-5'>ESP</b>8266与NodeMCU<b class='flag-5'>开发</b>(一)<b class='flag-5'>环境</b><b class='flag-5'>搭建</b>

    arduino / VScode+platformIO搭建esp32/esp8266编译环境(一篇足矣)

    arduino/VScode+platformIO 搭建esp32/esp8266开发环境(一篇足矣)前言:入门开源硬件
    发表于 12-05 14:06 31次下载
    arduino / VScode+platformIO<b class='flag-5'>搭建</b><b class='flag-5'>esp</b>32/<b class='flag-5'>esp</b>8266编译<b class='flag-5'>环境</b>(一篇足矣)

    搭建Matter编译环境步骤

    Matter应用是基于Zephyr实时操作系统实现的,因此在配置Matter项目前,需要提前配置Zephyr工程以及Telink的工具链,但是手动配置Zephyr环境以及配置Telink工具链所需要执行的
    的头像 发表于 08-24 15:02 2985次阅读

    ESP-Matter烧录体验例程

    ESP-MatterESP32系列SoC的官方Matter开发框架。它建立在开源的Matter SDK之上,提供了简化的API、常用的外围
    的头像 发表于 07-07 10:39 455次阅读
    <b class='flag-5'>ESP-Matter</b>烧录体验例程

    经验分享 | ESP-Matter 烧录体验

    ESP-MatterESP32系列SoC的官方Matter开发框架。它建立在开源的MatterSDK之上,提供了简化的API、常用的外围设备、用于安全、制造和生产的工具和实用程序,并
    的头像 发表于 07-07 10:04 561次阅读
    经验分享 | <b class='flag-5'>ESP-Matter</b> 烧录体验