徹底掌控 ESP32 Partition Table | 使用 Partition Table Editor UI 輕鬆配置
在開發 ESP32 應用程式時,管理和配置分區表(ESP32 Partition Table)是不可或缺的一環。ESP32 擁有靈活的閃存管理機制,這讓我們可以根據需求將閃存劃分為不同的區塊,並進行不同用途的配置。不過,隨著 Partition Table Editor UI 的推出,這一過程變得更加簡單。這個圖形化界面讓開發者可以直觀地設置和調整各個分區,無需關注 CSV 文件的具體語法。
內容
簡介
Partition Table Editor UI 方式相較於傳統的手動編輯 partitions.csv,這個圖形化工具提供了更直觀的操作界面,讓我們可以像玩樂高一樣,輕鬆地拖曳、調整分區大小。無論是初學者還是經驗豐富的開發者,都能快速上手。它支援多種分區類型,並能生成符合規範的分區表,大大降低了配置錯誤的風險。例如,在開發物聯網裝置時,我們可以將閃存劃分為 Bootloader、應用程式、OTA 更新、數據存儲等多個區塊,Partition Table Editor UI 能幫助我們快速完成這些配置。
什麼是 ESP32 Partition Table?
SP32 Partition Table 是用來定義 ESP32 內部閃存的結構。每個分區代表了一個特定用途的存儲區域,常見的分區包括:
- Bootloader(啟動程式):ESP32 開機時首先執行的程式,通常位於閃存的
0x1000
位置。 - 應用程式分區(app0, app1):用於存儲主要應用程式,並支持 OTA(Over-The-Air)更新。
- 數據分區(如 NVS, SPIFFS):用於存儲設備的配置數據或文件系統。
- OTA 分區:用於存儲 OTA 更新資料。
分區表將這些分區的類型、大小和位置具體化,並且幫助 ESP32 在啟動過程中決定如何處理各個分區。
開發環境
在開始編程之前,請確保已完成以下準備工作:
- 安裝 ESP-IDF 開發環境 (至少版本 v4.4 或更高)。
- ESP32 開發板。
如何使用 Partition Table Editor UI 配置分區表
打開 Partition Table Editor UI
首先,您需要確保安裝了 ESP32 IDF 和 VS Code 插件。當您創建一個新的 ESP32 專案時,進入 ESP-IDF 工具集中的 partitions.csv
文件。右鍵點擊該文件,選擇「Open in Partition Table Editor」,這樣就能打開 Partition Table Editor UI 了。
如果您的 ESP32 專案中沒有預設的 partitions.csv
文件,您可以手動創建這個文件,或者利用 ESP-IDF 提供的工具來生成自定義的分區表。
當您使用 ESP32 開發板並選擇 ESP-IDF 框架時,項目目錄結構通常如下:
<project_name>/
├── CMakeLists.txt # 用於編譯的 CMake 配置文件
├── main/ # 存放應用程式代碼的目錄
│ ├── CMakeLists.txt # 主程序的 CMake 配置文件
│ └──
main.c # 主應用程序代碼
├── partitions.csv # 分區表文件(如果使用自定義分區表)
├── sdkconfig # 配置文件,包含從 menuconfig 配置的選項
└──
README.md
編輯分區表
右鍵點擊該文件,選擇 Open with Partition Table Editor ,一旦進入 Partition Table Editor UI,界面上會顯示一個閃存的視覺化圖表。你可以看到現有的分區布局,並進行以下操作:
- 添加分區:點擊 “+” 按鈕來添加新分區。選擇分區類型(如
app
、data
等),並設置大小、偏移等屬性。 - 調整分區大小:通過拖動分區邊界來調整大小。這樣可以輕鬆地重新配置閃存空間。
- 刪除分區:選擇分區並點擊刪除按鈕來移除不需要的分區。
保存並應用
完成修改後,點擊「Save」以保存變更。
修改分區表設置
在 VS Code 中,按下 Ctrl+Shift+P
(Windows/Linux)或 Cmd+Shift+P
(Mac)來打開命 SDK Configuration Editor,在 SDK Configuration Editor 中找到 Partition Table 選項,並設置為 Custom partition table CSV 和指定自定義 partitions.csv
文件的路徑。保存更改後SDK Configuration Editor 會自動保存修改內容到 sdkconfig
文件中,這樣您就不需要手動編輯。
編譯和燒錄
修改完成後,按下 Ctrl+Shift+P
(Windows/Linux)或 Cmd+Shift+P
(Mac)打開命令面板,輸入 ESP-IDF: Build
並選擇該命令,VS Code 會開始編譯專案。
範例 ESP32 Partition Table
可用預設的 partitions_singleapp.csv 來作為自定範例,如下所示…
#Name, Type, SubType, Offset, Size, Flags
# Note: if you have increased the bootloader size, make sure to update the offsets to avoid overlap
nvs, data, nvs, , 0x6000,
phy_init, data, phy, , 0x1000,
factory, app, factory, , 1M,
各欄位的含義:
- Name: 分區的名稱,用於識別此分區。應用程序中會使用這個名稱來訪問特定分區。
- Type:
app
為應用程式分區。data
為數據分區,用於存儲各種非應用數據。 - SubType: 分區的子類型,具體說明該分區的作用。例如
nvs
(Non-Volatile Storage)存儲配置數據,phy
為 Wi-Fi PHY 校準數據,factory
為工廠默認應用分區。 - Offset: 分區的起始地址,通常省略讓工具自動計算。若自定義,需避免分區重疊。
- Size: 分區大小,可用十六進制或簡單的數字形式(如
0x1000
或1M
)。 - Flags: 特殊標誌,目前通常留空。
結論
ESP32 的 Partition Table 是設備運行的基礎,而 Partition Table Editor UI 提供了一個簡單而強大的方式來管理這些分區。通過這個工具,您不僅可以輕鬆創建和配置分區表,還能提高開發效率,避免手動編輯 CSV 文件的麻煩。無論您是新手還是資深開發者,這個工具都將大大簡化您在 ESP32 開發過程中的分區管理工作。