前提準(zhǔn)備
1.Ubuntu22.04(磁盤容量不小于80G)
2.科學(xué)上網(wǎng)環(huán)境
由于后面的 esp-matter 測試的時候需要使用到科學(xué)上網(wǎng)環(huán)境,所以我們需要提前確保 linux 環(huán)境能夠使用科學(xué)上網(wǎng)。
esp-idf 開發(fā)環(huán)境搭建
1.ESP-IDF 依賴環(huán)境安裝
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倉庫的時候一般會發(fā)生如下兩個錯誤:
Problem1:執(zhí)行 git submodule 速度慢
Problem2:執(zhí)行install.sh 速度慢
所以我們這里特別著重講解,注意,這里解決問題的順序與esp-idf環(huán)境搭建是一起進(jìn)行的,讀者可以順著流程走。
2.Problem1 solution
首先使用遞歸克隆命令克隆整個倉庫到文件夾下
mkdir /home/kurisaw/Desktop/esp
git clone --recursive
git submodule update --init --recursive
由于 esp-idf 倉庫下有很多遞歸的下游倉庫,一般使用 GitHub 下載的話也會導(dǎo)致遞歸下載失敗,所以樂鑫官方提供了兩種解決方案,包括鏡像倉庫使用、submodule 更新、開發(fā)工具安裝等,可加速環(huán)境的搭建。解決方案如下:
jihu-mirror 使用(推薦)
submodule-update 使用(不推薦)
2.1 jihu-mirror 使用(推薦)
Step 1:
git clone
cd esp-gitee-tools
Step 2:
// 使用如下命令將倉庫的 URL 進(jìn)行替換
Step 3:
// 啟用鏡像URL
./jihu-mirror.sh set
使用命令 ./jihu-mirror.sh unset 恢復(fù),不使用鏡像的 URL。
Step 4:當(dāng)使用鏡像 URL 之后,再遞歸克隆 esp-idf 倉庫
git clone --recursive https://github.com/espressif/esp-idf.git
當(dāng)然如果不想使用鏡像的URL可以使用如下命令進(jìn)行恢復(fù):
./jihu-mirror.sh unset
2.2 submodule-update 使用(不推薦)
Step 2:
// 僅克隆 esp-idf,不包含子模塊
Step 3:
可以有兩種方式來更新 submodules。
方式一
進(jìn)入 esp-gitee-tools 目錄,export submodule-update.sh 所在路徑,方便后期使用,如:
cd esp-gitee-tools
export EGT_PATH=$(pwd)
進(jìn)入 esp-idf 目錄執(zhí)行 submodule-update.sh 腳本:
cd esp-idf
$EGT_PATH/submodule-update.sh
方式二
submodule-update.sh 腳本支持將待更新 submodules 的工程路徑作為參數(shù)傳入,例如: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 這種方法還需要保持上游代碼分支的提交歷史一致,如果官方未及時更新則會導(dǎo)致該腳本暫時失效,不推薦使用,避坑!!
3.Problem2 solution
下面說第二個問題:執(zhí)行./install.sh速度慢的問題
在 Espressif Systems 的 esp-idf 開發(fā)框架中,某些組件的構(gòu)建過程需要從 GitHub 的 release 頁面下載預(yù)編譯的二進(jìn)制文件。然而,在中國大陸訪問 GitHub 的速度往往較慢并且不穩(wěn)定,為了改善這個問題,Espressif Systems 將這些預(yù)編譯的二進(jìn)制文件托管在國內(nèi)的服務(wù)器上,并提供了一個名為 IDF_GITHUB_ASSETS 的環(huán)境變量來指定這個地址。在設(shè)置了 IDF_GITHUB_ASSETS 變量之后,構(gòu)建過程將會從這個指定的地址下載預(yù)編譯的二進(jìn)制文件
export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
然后再執(zhí)行安裝命令
./install.sh
在這還報了一個錯誤
我們根據(jù)提示安裝python3.10-venv,并再次執(zhí)行安裝命令:
apt install python3.10-venv
./install.sh
至此,esp-idf 的安裝工具就告一段落了。
esp-matter開發(fā)環(huán)境搭建
git clone --recursive
注意:如果上面的 esp-idf 開發(fā)環(huán)境的搭建使用的是 jihu-mirror 方式,那么你需要取消esp鏡像,按理說這部分錯誤不應(yīng)該發(fā)生,但實際上確實存在這部分問題,請執(zhí)行命令:./jihu-mirror.sh unset取消esp鏡像?。?/p>
若過程有報錯,請執(zhí)行下面命令在Git 倉庫中獲取到所有子模塊,并將所有子模塊及其下層子模塊更新至最新版本。
git submodule update --init --recursive
執(zhí)行安裝命令:
./install.sh
本以為到這就結(jié)束了,但不出意外的話意外發(fā)生了,在安裝過程中發(fā)生了報錯…
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 ""
發(fā)現(xiàn)問題出在第10到13行,我嘗試安裝系統(tǒng)必要的依賴項來解決這個問題,成功解決!命令如下:
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的時候再次發(fā)生報錯,需要安裝以下依賴庫,并再次運行安裝腳本命令,等待編譯
sudo apt-get install libssl-dev
sudo apt-get install pip
./install.sh
最后看到All done!即代表環(huán)境安裝成功!
至此,esp-matter開發(fā)環(huán)境搭建成功!
-
二進(jìn)制
+關(guān)注
關(guān)注
2文章
786瀏覽量
41564 -
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
590瀏覽量
27317 -
URL
+關(guān)注
關(guān)注
0文章
139瀏覽量
15298 -
ESP模塊
+關(guān)注
關(guān)注
1文章
3瀏覽量
6787
發(fā)布評論請先 登錄
相關(guān)推薦
評論