天天看點

ESP32學習筆記 -- (1)使用gitee搭建 ESP-IDF 開發架構

關于如何搭建ESP32的開發環境,樂鑫官方給出了很詳細的教程和文檔,基本上跟着官方教程來操作,都可以順利把ESP-IDF的開發環境搭建好,并且運作一個helloworld程式。

樂鑫官方提供的ESP-IDF架構搭建文檔,參考以下連結:

ESP-IDF 程式設計指南快速入門

網上也有很多關于ESP32開發環境搭建的文章,我個人覺得寫得比較好的是以下這兩篇,文章已經包括了windows和Linux下的開發環境搭建。

ESP32學習筆記(1)——搭建環境、編譯燒寫(Windows+VS Code)

ESP32 開發筆記(二) 開發環境搭建 windows VSCode ESP32開發環境搭建(cmd方式編譯)

樂鑫官方提供的文檔,以及網上大部分ESP32環境搭建的文章,在搭建開發環境擷取源碼的時候,由于使用了國外知名的程式員交友平台github,往往會導緻源碼擷取中斷或失敗,github通路失敗是一些特别的原因導緻的。

正因為這樣,很多開發者在搭建開發環境上浪費了很多時間,甚至還沒開始就想放棄。為了解決國内開發者從github上擷取ESP相關倉庫緩慢的問題,樂鑫提供了在gitee上擷取ESP-IDF源碼的方法。

在windows上搭建ESP-IDF開發環境的時候,可以使用樂鑫提供的ESP-IDF工具安裝器,指定優先選擇Espressif的下載下傳伺服器,上面提供的部落格文章,已經有提及,本文主要是使用Linux指令行的方式搭建開發環境。

為什麼使用Linux指令行搭建開發環境,主要是因為自由度高,雖然操作略複雜,但樂鑫官方很多資料和文檔,都是基于Linux或windows指令行的方式開發的,是以,建議開發者學習一下如何使用指令行搭建ESP32的開發環境。

閱讀本文需要有一定的Linux或windows指令行操作基礎,需要掌握一定的git指令使用,以及具備一些腳本使用的基礎知識。ESP32的開發環境搭建,均使用了git指令,Linux指令行,以及可執行腳本。

建議先閱讀 ESP-IDF 程式設計指南快速入門 的相關章節,對開發環境搭建有一個基本的了解,并且已經完成第一步的安裝準備工作,再執行本文的相關操作。

本文使用的作業系統是ubuntu18.04,操作目錄是/opt/esp32,使用root使用者進行操作,如果沒有特别說明,操作路徑均是相對路徑,在執行指令的時候,重點注意指令的執行路徑是相對路徑還是絕對路徑。

1、執行以下指令,在/opt目錄下建立esp32檔案夾,并修改檔案夾的權限為可讀可寫,指令如下圖所示。

cd /opt/
mkdir esp32
chmod 666 esp32/
ls -al
           
ESP32學習筆記 -- (1)使用gitee搭建 ESP-IDF 開發架構

2、進入esp32目錄,執行git clone 指令,擷取ESP-IDF在gitee上托管的源碼和工具,注意,這次的git clone僅僅是擷取ESP-IDF的源碼,還沒有包含ESP-IDF的子子產品,ESP-IDF的源碼需要結合子子產品才能使用,子子產品在後面的步驟進行擷取。

cd esp32/
git clone https://gitee.com/EspressifSystems/esp-gitee-tools.git
git clone https://gitee.com/EspressifSystems/esp-idf.git
           
ESP32學習筆記 -- (1)使用gitee搭建 ESP-IDF 開發架構

3、在esp-gitee-tools工具包裡面,提供了一個submodule-update.sh腳本,用來更新ESP-IDF架構的子子產品,這個腳本主要是使用了gitee作為鏡像源,更新ESP-IDF架構必要的子子產品,避免了在github下載下傳緩慢或出錯的情況。

cd esp-gitee-tools/
export EGT_PATH=$(pwd)
cd ../esp-idf/
$EGT_PATH/submodule-update.sh
           
ESP32學習筆記 -- (1)使用gitee搭建 ESP-IDF 開發架構

耐心等待一段時間後,如果網絡沒有問題的話,子子產品一般都會更新完成,至此,整個ESP-IDF的源碼及子子產品已經下載下傳完畢,如下圖所示。

ESP32學習筆記 -- (1)使用gitee搭建 ESP-IDF 開發架構

4、下載下傳完ESP-IDF源碼後,還需要下載下傳和設定ESP相關的工具,比如編譯器,調試器,Python包,等等。由于github下載下傳緩慢,可以優先選用樂鑫的下載下傳伺服器進行github資源下載下傳。

export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
./install.sh
           
ESP32學習筆記 -- (1)使用gitee搭建 ESP-IDF 開發架構

編譯器、調試器和Python包這些工具,預設下載下傳在/root/.espressif目錄下,也可以通過修改環境變量來改變這個下載下傳目錄,但為了友善起見,不建議修改,如下圖所示。

ESP32學習筆記 -- (1)使用gitee搭建 ESP-IDF 開發架構

 下載下傳完成後,如下圖所示。

ESP32學習筆記 -- (1)使用gitee搭建 ESP-IDF 開發架構

5、工具包下載下傳完成後,還需要設定環境變量,讓操作終端知道目前的工具包位置,根據下載下傳完成的提示,需要在esp-idf目錄下,執行export.sh腳本,來完成環境變量的配置,如下圖所示。

. ./export.sh
(注意,指令開始的“.”與export.sh腳本之間,有一個空格)
           
ESP32學習筆記 -- (1)使用gitee搭建 ESP-IDF 開發架構

為了友善在任何終端使用配置好的環境變量,不用每次重新打開終端視窗都敲一堆指令去,可以為該腳本建立一個别名,在/root/.bashrc添加以下指令,重新開機終端後,就可以用get_idf指令來重新整理環境變量了。

alias get_idf='. /opt/esp32/esp-idf/export.sh'
           
ESP32學習筆記 -- (1)使用gitee搭建 ESP-IDF 開發架構

6、在ESP-IDF的目錄下面,examples檔案夾包含了一系列例程,我們可以使用examples檔案夾裡面的 get-started/helloworld工程,來驗證開發環境是否搭建成功。複制helloworld工程到esp32目錄,複制完成後,如下圖所示。

cp examples/get-started/hello_world/ ../ -a
           
ESP32學習筆記 -- (1)使用gitee搭建 ESP-IDF 開發架構

7、進入helloworld工程目錄,設定目标晶片,使用menuconfig配置工程,對于helloworld示例,由于我使用的ESP32晶片是ESP32-S0WD,這是一款單核晶片,需要把ESP32晶片配置為單核模式,工程配置視窗如下圖所示。

cd /opt/esp32/hello_world
idf.py set-target esp32
idf.py menuconfig
           
ESP32學習筆記 -- (1)使用gitee搭建 ESP-IDF 開發架構

8、執行idf.py build建構和編譯工程,這個指令可以編譯helloworld應用程式和ESP-IDF所有元件,并且會生成bootloader、分區表和應用程式的二進制檔案,編譯成功後,如下圖所示。

idf.py build
           
ESP32學習筆記 -- (1)使用gitee搭建 ESP-IDF 開發架構

9、編譯完成後,可以使用以下指令,将剛剛生成的二進制檔案,燒錄到開發闆上,/dev/ttyUSB0是開發闆在ubuntu18.04的序列槽端口号,需要根據實際情況進行設定,軟體燒錄成功後,可以在終端視窗觀察到程式運作,列印輸出helloworld。

idf.py -p /dev/ttyUSB0 flash monitor
           
ESP32學習筆記 -- (1)使用gitee搭建 ESP-IDF 開發架構

10、至此,ESP-IDF開發環境已經搭建完成,在Linux環境下,可以使用vscode作為代碼編輯工具,關于vscode的配置,網上已經有不少文章可以參考,這裡不再重複描述。

ESP32學習筆記 -- (1)使用gitee搭建 ESP-IDF 開發架構
ESP32學習筆記 -- (1)使用gitee搭建 ESP-IDF 開發架構