ubuntu22.04 下 esp-idf 開發環境搭建
- 1.安裝編譯 ESP-IDF 需要以下軟件包
- 2.獲取 ESP-IDF
- 3.設置工具
- 下載工具備選方案
- 4.設置環境變量
- 5.編譯工程并燒錄
- 配置工程
- 編譯工程
- 燒錄固件到設備
- 6.其他指令
- 監視輸出
- 擦除 flash
- 清除編譯
1.安裝編譯 ESP-IDF 需要以下軟件包
編譯 ESP-IDF 需要以下軟件包。請根據使用的 Linux 發行版本,選擇合適的安裝命令。
-
Ubuntu 和 Debian:
sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
2.獲取 ESP-IDF
在home目錄下新建 esp
文件夾.
mkdir ~/esp
為了安裝多個版本:
在esp
目錄下載指定版本的esp-idf
sdk.
cd ~/esp
git clone -b v5.4.2 --recursive https://github.com/espressif/esp-idf.git
等待下載解壓結束,把esp-idf
重命名為 esp-idf-v5.4.2
,進入 esp-idf-v5.4.2
。
3.設置工具
進入 esp-idf-v5.4.2
,運行安裝腳本:.install.sh
cd esp-idf-v5.4.2
如果只需要為esp32-s3、esp32設置所需工具,可以指定:
. ./install.sh esp32s3,esp32
如果需要一次性為所有支持的目標芯片安裝工具,可以運行如下命令:
. ./install.sh all
下載工具備選方案
ESP-IDF 工具安裝器會下載 Github 發布版本中附帶的一些工具,如果訪問 Github 較為緩慢,可以設置一個環境變量,從而優先選擇 Espressif 的下載服務器進行 Github 資源下載。
?? 該設置只影響從 Github 發布版本中下載的單個工具,它并不會改變訪問任何 Git 倉庫的 URL。
要在安裝工具時優先選擇 Espressif 下載服務器,請在運行 install.sh
時使用以下命令:
cd ~/esp/esp-idf-v5.4.2
export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
./install.sh
??推薦國內用戶使用國內的下載服務器,以加快下載速度。
cd ~/esp/esp-idf-v5.4.2
export IDF_GITHUB_ASSETS="dl.espressif.cn/github_assets"
./install.sh
4.設置環境變量
工具安裝完成之后,尚未添加至 PATH 環境變量,無法通過終端中使用這些工具。因此,必須設置一些環境變量。
需要運行 ESP-IDF 的終端窗口運行以下命令:
. $HOME/esp/esp-idf-v5.4.2/export.sh
如果需要經常運行 ESP-IDF,可以為執行 export.sh
創建一個別名,具體步驟如下:
-
復制并粘貼以下命令到 shell 配置文件中(
.profile
、.bashrc
、.zprofile
等)alias get_idf='. $HOME/esp/esp-idf/export.sh'
-
通過重啟終端窗口或運行
source [path to profile]
,如source ~/.bashrc
來刷新配置文件。
現在可以在任何終端窗口中運行 get_idf
來設置或刷新 ESP-IDF 環境。
不建議直接將 export.sh
添加到 shell 的配置文件。這樣做會導致在每個終端會話中都激活 IDF 虛擬環境(包括無需使用 ESP-IDF 的會話)。這違背了使用虛擬環境的目的,還可能影響其他軟件的使用。
按照上述方法,當安裝了多個版本的esp-idf 之后,也可以通過使用添加別名來區分不同的版本。
示例如下:
在終端中,輸入get_idf_v53
即可使用V5.3.3版本的esp-idf:
5.編譯工程并燒錄
配置工程
設置目標芯片,然后配置項目,指令如下:
idf.py set-target esp32s3
idf.py menuconfig
編譯工程
打開一個測試工程,編譯工程需要輸入指令:
idf.py build
運行以上命令可以編譯應用程序和所有 ESP-IDF 組件,接著生成引導加載程序、分區表和應用程序二進制文件,編譯完成后將生成 .bin 文件。
把串口插入到ubuntu中,找到對應的串口的標識,Linux 操作系統: 以 /dev/tty
開頭。
Linux中兩種常見的 USB 轉串口設備標識:
-
ttyUSB*
:常見于 CH340、CP2102 等 USB 轉串口芯片。 -
ttyACM*
:常見于 CDC-ACM 類設備(比如 Arduino、STM32 的虛擬串口)。
使用如下指令可以查看ubuntu下的可用的串口設備文件:
cd /dev
ls ttyUSB*
ls ttyACM*

也可以比較插入設備前后的變化,可以快速找到當前的設備標識符:
插入設備前,運行:
ls /dev/ttyUSB* /dev/ttyACM* 2>/dev/null
記下已有的串口設備。
插入 USB 串口設備后,再運行同樣的命令。
ls /dev/ttyUSB* /dev/ttyACM* 2>/dev/null
新出現的設備就是你要找的,比如 /dev/ttyUSB0
或 /dev/ttyACM0
。
燒錄固件到設備
燒錄之前,需要獲取串口設備文件的讀寫權限:
sudo chmod a+rw /dev/ttyACM0
或者
sudo chmod 666 /dev/ttyACM0
運行以下命令,將剛剛生成的二進制文件燒錄至芯片:
idf.py -p PORT flash
將 PORT 替換為自己的串口名稱,上面的設備對應指令則為:
idf.py -p /dev/ttyACM0 flash
6.其他指令
監視輸出
可以使用 idf.py -p PORT monitor
命令,監視工程的運行情況
idf.py -p PORT monitor
擦除 flash
ESP-IDF 支持擦除 flash。請運行以下命令,擦除整個 flash:
idf.py -p PORT erase-flash
若存在需要擦除的 OTA 數據,請運行以下命令:
idf.py -p PORT erase-otadata
擦除 flash 需要一段時間,在擦除過程中,請勿斷開設備連接。
清除編譯
清除之前的編譯:
idf.py fullclean
文檔參考鏈接:
Linux 和 macOS 平臺工具鏈的標準設置?