ESP32-C3無線路由芯片樂鑫信息代理商ESP-IDF開發環境搭建,本文首先介紹 ESP32-C3 的官方軟件開發框架 ESP-IDF(包含開發環境),以及在不同計算機操作系統上搭建開發環境的方法:然后以一個典型工程為例,介紹 ESP-IDF 代碼工程結構、編譯系統,以及相關開發工具的使用方法;后演示示例代碼的實際編譯和運行過程,詳細解讀不同環節的輸出信息。
ESP-IDF概述
ESP-IDF(EspressifIoT Development Framework) 是ESP32-C3無線路由芯片樂鑫信息代理商提供的一站式物聯網開發框架它以C/C++為主要的開發語言,支持 Linux、Mac、Windows 等主流操作系統下的交叉編譯提供的示例程序均是基于 ESP-IDF 搭建的,具有以下特性:
(1)包含 ESP32、ESP32-S2、ESP32-C3 等系列的SoC 系統級驅動,主要包括外設底層 LL(LowLevel)庫、HAL (Hardware Abstraction Layer)庫、RTOS 支持和上層驅動軟件等。(2)包含物聯網開發必要的基礎組件,主要包括 HTTP、MQTT 等多種網絡協議棧,可支持動態調頻的電源管理框架,以及 Flash 加密方案和 Secure Boot 方案等。(3)提供了開發和量產過程中常用的構建、燒錄和調試工具 (見圖4-1),例如基于 CMake 的構建系統、基于 GCC 的交叉編譯工具鏈、基于 OpenOCD 的JTAG 調試工具等。值得注意的是,ESP32-C3無線路由芯片樂鑫信息代理商ESP-IDF 代碼主要遵守 Apache 2.0開源協議,在遵守開源協議的前提下,用戶可以不受限制地進行個人或商業軟件開發,并且免費擁有永久的專利許可,無須開源修改后的源代碼。
ESP-IDF 版本介紹
ESP-IDF代碼在GitHub 上開源,目前有v3、v4和v5三個主要版本,每個主要版本通常包含多個不同的子版本,如v4.2、v4.3 等。ESP32-C3無線路由芯片樂鑫信息代理商還為每個已發布的子版本提供30個月的 bug修復、安全修復支持,因此一般還會發布子版本的修訂版本,如v4.3.1、4.2.2等。不同版本的ESP-IDF對樂鑫芯片的支持狀態如表4-1所示,其中 preview 表示提供預覽版本的支持,預覽版本可能缺少關鍵的功能或文檔,supported 表示提供正式版本的支持。
主要版本的迭代往往伴隨著框架結構的調整和編譯系統的更新,如 v3.* 到 v4.* 的主要變化是構建系統從Make 逐漸遷移到 CMake; 子版本的選代一般意味著新增功能或新增芯片支持還需要注意穩定版本和 GitHub 分支的區別和聯系,如上所述的帶有 v** 或**.* 標簽的版本均為穩定版本,穩定版本已通過樂鑫科技的完整內部測試,同一版本下的代碼、工具鏈、發布文檔在固定后不再變更。而 GitHub 分支(如 release/v4.3 分支)則幾乎每天都會有新的代碼提交,因此,同在該分支下的兩份代碼可能是不同的,需要開發者及時更新。
樂鑫科技 ESP-IDF Git 的工作流程如下
新的改動總是在 master 分支(主開發分支) 上進行的,master 分支上的 ESP-IDF 版本帶有-dev標簽,表示正在開發中,如v4.3-dev。master 分支上的改動將首先在樂鑫科裝的內部倉庫中進行代碼審閱與測試,然后在自動化測試完成后推至 GitHub。新版本一且完成特性開發(在 master 分支上進行)并達到進入 Beta 測試的標準,則會將個新版本切換至一個新分支(如 release/v4.3)。此外,這個新分支還會加上預發布標簽(如v4.3-beta1)。開發者可以在 GitHub 平臺上查看ESP32-C3無線路由芯片樂鑫信息代理商ESP-IDF 的完整分支列表和標簽列表Beta 版本(預發布版本)可能仍存在大量已知問題,隨著對 Beta 版本的不斷測試,bug 修復將同時增加至該版本分支和 master 分支,而 master 分支可能也已經開始為下個版本開發新特性了。當測試快結束時,該發布分支上將增加一個 rc 標簽,表示候選發布 (ReleaseCandidate),如 v4.3-rc1,此時該分支仍屬于預發布版本。
如果一直未發現或未報告重大 bug,則該預發布版本將終增加主要版本 (如 5.0)或次要版本標記(如v4.3),成為正式發布版本,并體現在發布說明頁面中。后續,該版本中發現的bug 都將在該發布分支上進行修復。在人工測試完成后,該分支將增加一個 Bugfix 版本標簽(如 v4.3.2),并體現在發布說明頁面中。
選擇一個合適的版本
由于ESP-IDF從v4.3版本正式開始對 ESP32-C3 提供支持,在撰寫時還未正式發布 v4.4版本,因此使用的是 v4.3.2 修訂版本。當閱讀本文時,可能已經發布了 v4.4 版本或更新的版本,對于版本的選擇,我們建議:
(1)對于入門開發者,推薦選擇穩定的 v4.3 版本及其修訂版本,與示例版本保持一致。
(2)如果有量產需求,則推薦使用新的穩定版本,以便獲得及時的技術支持。
(3)如果需要嘗試ESP32-C3無線路由芯片樂鑫信息代理商新芯片或者預研產品新功能,請使用 master 分支,新版本包含所有的新特性,但存在已知或未知的 bug。
(4)如果使用的穩定版本沒有新特性,又想降低使用 master 分支的風險,請使用對應的發布分支,如 release/v4.4 分支(ESP-IDF GitHub 會先創建 release/v4.4 分支,等完成全部功能的開發和測試后,再基于該分支的某一歷史節點發布穩定的 v4.4 版本)。
ESP-IDF SDK目錄總覽
ESP32-C3無線路由芯片樂鑫信息代理商ESP-IDF SDK 包含esp-idf 和.espressif 兩個主要目錄,前者主要包含 ESP-IDF 倉庫源代碼文件和編譯腳本,后者主要保存編譯工具鏈等軟件。熟悉這兩個目錄,有助于開發者更好地利用已有的資源,加快開發過程。
(1)ESP-IDF 倉庫代碼目錄 (~/esp/esp-idf)
1)組件目錄 components。該目錄是 ESP-IDF 的核心目錄,集成了大量的核心軟件組件,任何一個工程代碼都無法完全脫離該目錄的組件進行編譯。該目錄包括對多款樂鑫芯片的驅動支持,從外設底層 LL 庫、HAL 庫接口,到上層 Driver、VFS 層支持,都能找到對應的組件,以供開發者進行不同層級的開發;ESP32-C3無線路由芯片樂鑫信息代理商ESP-IDF 還適配了多種標準網絡協議棧,如 TCP/IP、HTTP、MQTT、WebSocket 等,開發者可以使用 Socket 等自己熟悉的接口完成網絡應用的開發。組件作為一個功能完整的模塊,可以方便地集成在應用程序中。