博客 / 詳情

返回

《ESP32-S3使用指南—IDF版 V1.6》第四章 開發環境搭建(下)

《ESP32-S3使用指南—IDF版 V1.6》第四章 開發環境搭建(下)

4.2 IDF前端工具
idf.py 是 ESP-IDF 開發環境中的一個重要命令行工具,用於提供前端界面,幫助開發者輕鬆管理工程的配置、構建、燒錄以及調試等操作。它結合了CMake、Niunja和esptool.py等工具,使開發流程更加便捷和高效。
idf.py 主要工具作用:
1)CMake工具用於配置工程的構建流程,管理構建依賴和生成構建文件。
2)Ninja工具用於實際執行構建操作,快速高效地編譯項目。
3)esptool.py工具用於燒錄程序到目標芯片,並進行芯片的基本管理操作,如擦除閃存、復位和下載等。
下圖為idf.py主要工具操作流程圖。

image001

圖4.2.1 項目工程的構建、編譯和燒錄流程
在開發過程中,源代碼通常依賴多個庫或模塊,而 CMake 可以自動分析並管理這些依賴關係。它根據開發者提供的 CMakeLists.txt 配置文件,確定哪些源文件需要編譯、哪些庫需要鏈接,確保所有依賴關係正確處理。在 ESP32 開發中,項目可能包含許多組件,CMake 能夠智能地處理這些組件的構建順序。通過 CMake 配置後,CMake 會生成構建文件(如 build.ninja),這些文件定義瞭如何構建項目。接下來,Ninja 工具執行具體的編譯工作,生成最終的可執行文件或二進制等文件。最後,使用 esptool.py 工具將生成的二進制文件燒錄到 ESP32 開發板上,確保程序能夠運行。
4.2.1 IDF常用命令
1,創建新的工程

idf.py create-project --path <project name>

該命令用於創建一個新的項目目錄結構,並將必要的文件和模板複製到指定目錄中。其目的是幫助開發者快速設置一個新的 IoT 項目,而無需手動創建所有必要的文件和目錄,從而加快項目初始化過程。
下面是這個命令的解析和使用方法。
1)命令解析
①:idf.py:是 ESP-IDF 工具鏈的主要命令行工具。
②:create-project:操作功能為創建工程。
③:--path:工程創建在哪個位置(可選)。
④:<project_name>:創建工程的名稱。
2)使用方法
首先,在桌面新建一個名為 test 的文件夾,用來保存新建的工程。然後,打開 ESP-IDF CMD 或 PowerShell 終端,輸入以下命令來創建項目工程。

image003

圖4.2.1.1 指定路徑創建工程
從上圖可以看到,在桌面上的test文件夾下創建了一個名為“atk_project”的工程。

2,創建新的組件

idf.py create-component <component name>

該命令用於在當前項目中創建一個新的組件(component)。它會自動生成該組件所需的基本目錄結構和文件,包括CMakeLists.txt文件,以及默認的源代碼文件和頭文件。組件是ESP-IDF項目中重要的模塊化單元,通常包含相關功能代碼,便於代碼的複用和管理。
注意:新的組件一般放置在componen文件夾下。因此,我們需要在項目的根目錄下新建一個名為 “components”的文件夾,用來保存我們創建的組件。
下面是這個命令的解析和使用方法。
1)命令解析
①:idf.py:是 ESP-IDF 工具鏈的主要命令行工具。
②:create-component:操作功能為創建新的組件,如LED、KEY等驅動組件。
③: :創建組件的名稱。
2)使用方法
首先,在test項目的根目錄下新建一個components文件夾。接着,打開命令終端,進入components文件夾路徑,並在該路徑下輸入以下命令來創建組件,如下圖所示。

image005

圖4.2.1.2 創建新的組件
在上圖中,我們首先利用“cd”命令進入到指定的項目工程路徑。隨後,在該路徑下輸入創建組件的命令,即可成功創建組件。led組件的文件結構如圖所示。

image007

圖4.2.1.3 led組件文件結構
上圖中的 led.c 和 led.h 是典型的源代碼文件和頭文件,分別用於實現和聲明與 LED 控制相關的功能。而 CMakeLists.txt 文件的作用是將 led 組件添加到構建系統中,使其能夠參與項目的編譯和構建。這也是前面筆者講解的構建文件。

3,選擇目標芯片

idf.py set-target <target>

該命令的作用是設置當前項目的目標芯片。默認情況下,新建的項目工程是以 ESP32 系列芯片為模板的。如果你使用的不是 ESP32 系列芯片,而是其他樂鑫系列的芯片(如 ESP32-S3、ESP32-P4 等),則需要通過該命令切換到你所使用的目標芯片。
下面是這個命令的解析和使用方法。
1)命令解析
①:idf.py:是 ESP-IDF 工具鏈的主要命令行工具。
②:set-target:操作功能為設置目標芯片。可使用(idf.py --list-targets 命令查看當前 ESP-IDF 版本支持的所有目標芯片)。
③: :切換目標芯片。
2)使用方法
首先,在 PowerShell 終端中切換到項目工程的根目錄。然後,輸入下圖命令切換目標芯片。

image009

圖4.2.1.4 切換目標芯片
執行上述命令後,test 工程下將會編譯出 build 文件夾和 sdkconfig 文件。其中,sdkconfig 是 ESP-IDF 項目中的配置文件,用於定義項目的編譯和運行參數。它包含各種配置選項,如目標芯片型號、外設啓用情況、內存管理、網絡協議棧配置等。該文件的主要作用是根據用户的需求調整項目的功能和性能。

4,啓動圖形配置工具

idf.py menuconfig

該命令是啓動 ESP-IDF 提供的圖形化配置工具,用於方便地設置和管理項目的配置選項。
下面是這個命令的解析和使用方法。
1)命令解析
①:idf.py:是 ESP-IDF 工具鏈的主要命令行工具。
②:menuconfig:操作功能為開啓圖形化配置界面。
2)使用方法
首先,在 PowerShell 終端中切換到項目工程的根目錄。然後,輸入下圖命令開啓圖形化配置界面,如下圖所示。

image011

圖4.2.1.4 進入圖形配置工具
menuconfig界面是ESP-IDF的圖形化配置工具,供開發者直觀地設置項目參數;當通過該界面修改配置並保存後,這些更改會被寫入sdkconfig文件中。sdkconfig文件則記錄了所有配置選項,確保在項目編譯時應用這些設置。因此,menuconfi是配置的操作界面,sdkconfig是配置的存儲文件,兩者共同作用於項目的配置管理。
在以後的章節中,筆者將詳細講解menuconfig圖形化配置工具中常用選項的作用,幫助大家更好地理解和學習它。

5,構建工程

idf.py build

此命令將構建當前目錄下的工程,具體步驟包括:創建用於保存構建輸出文件的build目錄(可使用-B選項更改路徑),運行CMake以配置工程並生成構建文件,最後通過主要構建工具(Ninja或GNU Make)進行編譯。默認情況下,構建工具會自動檢測,也可以通過-G選項手動設置。相關構建流程請參見 圖4.2.1流程圖。
下面是這個命令的解析和使用方法。
1)命令解析
①:idf.py:是 ESP-IDF 工具鏈的主要命令行工具。
②:build:操作功能為構建項目。
2)使用方法
首先,在 PowerShell 終端中切換到項目工程的根目錄。然後,輸入下圖命令構建項目,如下圖所示。

image013

圖4.2.1.5 構建工程
編譯成功後,系統會將生成的目標文件(.obj)、可執行文件(.elf)和二進制文件(.bin)等保存到 build 文件夾中。

6,清除構建輸出

idf.py clean

該命令可清除build目錄中的構建輸出文件,確保下次構建時工程會完全重新構建。需要注意的是,使用該命令不會刪除build文件夾內的CMake配置輸出。
下面是這個命令的解析和使用方法。
1)命令解析
①:idf.py:是 ESP-IDF 工具鏈的主要命令行工具。
②:clean:操作功能為清除構建輸出。
2)使用方法
首先,在 PowerShell 終端中切換到項目工程的根目錄。然後,輸入下圖命令清除構建輸出文件,如下圖所示。

image015

圖4.2.1.6 清除構建輸出的文件
注意:這個命令清除了由Ninja構建工具生成的文件,但不會清除CMake編譯輸出的文件。

7,刪除所有構建內容

idf.py fullclean

此命令將刪除build目錄下的所有內容,包括CMake配置輸出。下次構建時,CMake會重新配置其輸出。需要注意的是,該命令會遞歸刪除build目錄下的所有文件(工程配置將保留),因此請謹慎使用。
下面是這個命令的解析和使用方法。

1)命令解析
①:idf.py:是 ESP-IDF 工具鏈的主要命令行工具。
②:fullclean:操作功能為清除所有構建輸出文件。

2)使用方法
首先,在 PowerShell 終端中切換到項目工程的根目錄。然後,輸入下圖命令清除所有構建輸出文件,如下圖所示。

image017
圖4.2.1.7 清除所有構建輸出文件

8,燒錄工程

idf.py -p COMx flash

該命令將在需要時自動構建工程,隨後將其燒錄到目標芯片。使用-p和-b選項可分別設置串口端口號和燒錄程序的波特率。
下面是這個命令的解析和使用方法。
1)命令解析
①:idf.py:是 ESP-IDF 工具鏈的主要命令行工具。
②:-p:設置串口的端口號。
③:COMx:串口的端口號。
④:flash:操作功能為程序下載。

2)使用方法
首先,在 PowerShell 終端中切換到項目工程的根目錄。然後,輸入下圖命令下載程序,如下圖所示。

image019

圖4.2.1.8 燒錄固件

9,啓動監視器

idf.py monitor

命令用於監控當前項目的運行狀態。在監控之前,必須確保已安裝 USB 虛擬串口驅動,或使用開發板上的 USB 串口/JTAG 接口連接設備,以便查看項目的調試輸出和日誌信息。
下面是這個命令的解析和使用方法。

1)命令解析
①:idf.py:是 ESP-IDF 工具鏈的主要命令行工具。
②:monitor:操作功能為啓動監視器。

2)使用方法
首先,在 PowerShell 終端中切換到項目工程的根目錄。然後,輸入下圖命令啓動監視器,如下圖所示。

image021

圖4.2.1.9 啓動監視器

10,合併二進制文件

idf.py merge-bin -o <my-merged-binary>.bin/.hex -f raw

在某些情況下(例如將文件傳輸到另一台機器,且不借ESP-IDF進行燒錄),只燒錄一個文件比燒錄idf.py build生成的多個文件更為便捷。idf.py merge-bin命令會根據項目配置,合併引導加載程序、分區表、應用程序本身以及其他分區(如果存在),並在build文件夾中生成一個二進制文件merged-binary.[bin|hex],之後可對其進行燒錄。
下面是這個命令的解析和使用方法。

1)命令解析
①:idf.py:是 ESP-IDF 工具鏈的主要命令行工具。
②:merge-bin:操作功能為合併二進制。
③:-o:輸出文件
④: .bin/.hex:輸出文件名稱
⑤:-f raw:輸出二進制。合併後的文件的輸出格式可以是二進制(raw),IntelHex(hex)以及 UF2(uf2)

2)使用方法
首先,在 PowerShell 終端中切換到項目工程的根目錄。然後,輸入下圖命令啓動監視器,如下圖所示。

image023

圖4.2.1.10 輸出合併二進制文件

4.2.2 高級命令
1,打開目標芯片在線ESP-IDF編程文檔

idf.py docs

該命令將在瀏覽器中打開與工程目標芯片和 ESP-IDF 版本對應的官方文檔,方便用户查看相關的開發資料和參考信息。
下面是這個命令的解析和使用方法。

1)命令解析
①:idf.py:是 ESP-IDF 工具鏈的主要命令行工具。
②:docs:操作功能為打開文檔。
2)使用方法
首先,在 PowerShell 終端中切換到項目工程的根目錄。然後,輸入下圖命令打開在線文檔,如下圖所示。

image025
圖4.2.2.1 打開在線文檔

2,顯示應用程序大小

idf.py size

該命令將顯示應用程序大小,包括佔用的RAM和flash 及各部分(如 .bss)的大小。
下面是這個命令的解析和使用方法。
1)命令解析
①:idf.py:是 ESP-IDF 工具鏈的主要命令行工具。
②:size:操作功能為查看應用程序大小。

2)使用方法
首先,在 PowerShell 終端中切換到項目工程的根目錄。然後,輸入下圖命令查看程序大小,如下圖所示。

image027

圖4.2.2.2 查看程序相關大小

3,查看組件應用程序大小

idf.py size-components

該命令將顯示工程中各個組件的應用程序大小,幫助開發者瞭解每個組件在應用中的存儲佔用情況。
下面是這個命令的解析和使用方法。
1)命令解析
①:idf.py:是 ESP-IDF 工具鏈的主要命令行工具。
②:size-components:操作功能為查詢各組件的大小。
2)使用方法
首先,在 PowerShell 終端中切換到項目工程的根目錄。然後,輸入下圖命令查看各組件的大小,如下圖所示。

image029

圖4.2.2.3 各組件的應用程序大小(部分截圖)
4,查看每個源文件大小

idf.py size-files

該命令將顯示工程中每個源文件的大小,並支持通過--format選項指定輸出格式(支持text、csv、json,默認格式為text)。此外,還可以使用--output-file參數指定輸出文件的文件名,而不是將結果輸出到標準輸出。
下面是這個命令的解析和使用方法。
1)命令解析
①:idf.py:是 ESP-IDF 工具鏈的主要命令行工具。
②:size-files:操作功能為查詢g工程每個源文件大小。
2)使用方法
首先,在 PowerShell 終端中切換到項目工程的根目錄。然後,輸入下圖命令查看工程每個源文件的大小,如下圖所示。

image031

圖4.2.2.4 查看工程每個源文件的大小(部分截圖)
比較常用的高級命令就講解到這裏了。如果讀者想了解更多高級命令,可以參考樂鑫官方在線文檔中的“IDF前端工具”章節,裏面對各個命令的使用和功能有非常詳細的介紹。

4.3 搭建集成開發環境
在上一小節中,筆者詳細闡述了命令式開發的常用命令。然而,對於初學者來説,他們往往更傾向於使用圖形界面式的開發方式,因為圖形界面能更直觀地展示整個開發過程。因此,作者在此推薦使用VS Code IDE作為開發工具。VS Code 支持下載ESP-IDF插件,方便開發者進行項目開發和調試。該插件集成了編輯、編譯、燒錄和調試等基礎功能,還提供工具安裝SDK配置和CMake編輯器等附加功能,簡化並增強了開發人員在VS Code中開發基於ESP32的IoT應用程序的體驗。

4.3.1 VS Code環境安裝
鑑於我們使用的是VS Code IDE搭配樂鑫ESP-IDF進行開發,接下來將介紹VS Code的安裝過程。首先,訪問VS Code的官方(https://code.visualstudio.com/Download)下載頁面,根據系統需求選擇相應的安裝包進行下載。此外,也可以在A盤 6 ,軟件資料 1 , 軟件 1 ,IDF開發工具路徑下找到VS Code的安裝包。下圖為VS Code的官方下載頁面。

image033

圖4.3.1.1 VS Code官網下載界面
在此,我們選擇下載Windows版本的VS Code,因為我們是在Windows環境下進行開發。雖然其他版本的下載方式應該類似,但這裏我們將重點介紹Windows版本的下載步驟。下載完成後,按照以下步驟進行安裝即可:
1,以<管理員身份>運行VSCodeUserSetup-x64-1.94.2.exe安裝包,如下圖所示。

image035

圖4.3.1.2 以管理員身份運行VSCode安裝包
2,此時,進入安裝的許可協議頁面,如下圖所示。

image037

圖4.3.1.3 安裝許可協議
3,選擇“我同意此協議”,然後點擊“下一步”進入選擇目標位置頁面,如下圖所示。

image039

圖4.3.1.4 設置安裝路徑
用户可以自行填寫安裝位置,但需注意,安裝路徑最好使用全英文字符,以避免可能出現的路徑識別問題。
4,設置安裝路徑完成後,可點擊“下一步”進入選擇開始菜單文件夾,如下圖所示。

image041

圖4.3.1.5 選擇開始菜單文件夾
5,這裏我們保持默認配置,接着,點擊“下一步”進入選擇附加任務頁面,如下圖所示。

image043

圖4.3.1.6 選擇附加任務
6,請把附加任務全部勾選,然後點擊“下一步”進入準備安裝頁面,如下圖所示。

image045

圖4.3.1.7 準備安裝頁面
7,點擊“安裝”按鈕即可開始安裝VS Code集成開發環境。安裝成功後,界面將如圖所示。

image047

圖4.3.1.8 VSCode 安裝成功
值得注意的是,第一次安裝的VS Code軟件為英文版本。如果讀者希望將VS Code設置為中文漢化,則需要安裝簡體中文插件。安裝方式如下。
在VS Code集成開發環境中,可以通過點擊左側的“擴展”圖標或使用快捷鍵“Ctrl + Shift + X”直接進入擴展頁面。在搜索欄中輸入“Chinese”,然後選擇安裝“Chinese (Simplified) Language Pack for Visual Studio Code”插件,如下圖所示。安裝完成後,必須重啓VS Code才能切換為簡體中文界面。

image049

圖4.3.1.9 安裝簡體中文插件
至此,VS Code的安裝過程就完成了。

4.3.2 ESP-IDF插件安裝與配置
ESP-IDF插件在安裝後會調用之前安裝的ESP-IDF提供的各種工具和功能,為開發者提供一個集成的開發環境。具體而言,插件利用ESP-IDF的構建系統,使開發者能夠輕鬆編譯項目,並集成燒錄工具,以便直接將固件燒錄到目標設備。此外,插件還調用ESP-IDF監控功能,實時查看設備輸出,幫助進行調試。同時,它提供圖形化界面,簡化了項目參數的配置過程。簡單來説ESP-IDF插件通過圖形化方式結合ESP-IDF和ESP-IDF Tools,對項目進行構建,從而提升開發效率和用户體驗。
下圖是ESP-IDF插件、ESP-IDF Tools、ESP-IDF、ESP Component Registry和Project關係圖。

image051

圖4.3.2.1 項目工程編譯關係圖
在項目開發過程中,ESP-IDF插件、ESP-IDF Tools、ESP-IDF(SDK)和ESP Component Registry協同工作,形成一個集成的開發流程。ESP-IDF插件提供了用户友好的圖形界面,允許開發者提交編譯、燒錄等命令,並接收調試反饋。ESP-IDF Tools負責處理項目需求和執行編譯、構建工作。ESP-IDF作為核心開發平台,提供了必要的核心組件,如BSP和RTOS,而ESP Component Registry則為開發者提供大量開源組件。最終,項目通過這些工具和組件庫完成構建,輸出最終的結果。
接下來,筆者將詳細介紹如何在VS Code集成開發環境下安裝ESP-IDF插件的具體步驟。
首先,打開VS Code軟件,按下快捷鍵“Ctrl + Shift + X”進入擴展頁面。在搜索欄中輸入“ESP-IDF”進行搜索,然後點擊“安裝”按鈕進行插件安裝。下圖展示了具體操作步驟。

image053

圖4.3.2.2 下載與安裝ESP-IDF插件
按下快捷鍵“F1”或“Ctrl + Shift + P”打開“顯示所有命令”界面。然後,在搜索框中輸入“Configure ESP-IDF”,並從下拉菜單中選擇此選項,進入 ESP-IDF 配置界面,如下圖所示。

image025

圖4.3.2.3 配置ESP-IDF擴展
回車後,將進入配置 ESP-IDF 插件的界面,如下圖所示。

image027

圖4.3.2.4 進入ESP-IDF插件配置界面
在上圖中,點擊“USE EXISTING SETUP”使用現有的ESP-IDF,如下圖所示。

image059

圖4.3.2.5 搜索當前系統的ESP-IDF
如果在“Search ESP-IDF in System”下看到你想要安裝的版本(例如上圖的v5.3),可以直接點擊該版本進行安裝。如果沒有找到所需版本,則點擊“Search ESP-IDF in System”選項進入手動配置,通過指定路徑來完成安裝,如下圖所示。

image061

圖4.3.2.6 手動安裝ESP-IDF
在上圖中,首先選擇“Select download server”和“Select ESP-IDF version”選項,確保與上圖中的配置一致。接着,在“Enter ESP-IDF directory (IDF_PATH):”選項中設置為我們之前安裝ESP-IDF(SDK)的路徑,並在“Enter ESP-IDF Tools directory (IDF_TOOLS_PATH)”選項中設置為IDF_TOOLS_PATH/tools路徑(IDF_TOOLS_PATH路徑請看系統環境變量)。確保所有設置完成後,點擊上圖中的“install”按鈕,開始安裝ESP-IDF。
當出現下圖的所示,表示我們的ESP-IDF安裝成功。

image063

圖4.3.2.7 ESP-IDF插件配置成功
至此,我們已經成功配置了ESP-IDF插件,並且完成了與ESP-IDF(SDK)和ESP-IDF Tools的集成。這使我們可以在VSCode集成開發環境下,順利進行項目的編譯、燒錄和調試工作,實現高效的開發流程。

4.3.3 VSCode的個性化配置(可選)
在Visual Studio Code(VS Code)中,settings.json文件用於存儲用户的個性化配置和工作環境設置。它控制了編輯器的外觀、代碼格式化風格、自動補全行為、調試配置等,配置可以分為用户設置(全局設置)和工作區設置(針對特定項目)。以下是配置settings.json文件的流程:
1,打開設置界面
菜單欄中選擇 文件 > 首選項 > 設置,進入 VS Code 的設置頁。
2,添加個性化配置和工作環境設置參數
添加內容如下:

{
    /* 上面的部分是我自己創建的一些設置 */ 
    "editor.insertSpaces": true,
    /* 自動插入空格禁用*/ 
    "editor.detectIndentation": true,
    /* 啓用時根據文件內容進行重寫*/ 
    "editor.renderControlCharacters": true,
    /* 是否顯示控制字符:啓用*/ 
    "editor.renderWhitespace": "all",
    /* 顯示4個空格是.... */ 
    "editor.tabSize": 4,
    /* tab 設置為4個空格*/ 
    "editor.fontSize": 18,
}

至此,我們已成功完成VS Code集成開發環境中ESP-IDF插件的安裝,並配置好了VS Code的工作環境。在接下來的章節中,筆者將詳細講解如何在VS Code IDE中新建一個ESP-IDF項目工程,並進一步探討工程的調試工具及相關配置的使用,以幫助大家更好地進行項目開發。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.