徹底掌控 ESP32 Partition Table | 使用 Partition Table Editor UI 輕鬆配置


在開發 ESP32 應用程式時,管理和配置分區表(ESP32 Partition Table)是不可或缺的一環。ESP32 擁有靈活的閃存管理機制,這讓我們可以根據需求將閃存劃分為不同的區塊,並進行不同用途的配置。不過,隨著 Partition Table Editor UI 的推出,這一過程變得更加簡單。這個圖形化界面讓開發者可以直觀地設置和調整各個分區,無需關注 CSV 文件的具體語法。

ESP32 Partition

簡介

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 在啟動過程中決定如何處理各個分區。

開發環境

在開始編程之前,請確保已完成以下準備工作:

如何使用 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
ESP32 Partition

編輯分區表

右鍵點擊該文件,選擇 Open with Partition Table Editor ,一旦進入 Partition Table Editor UI,界面上會顯示一個閃存的視覺化圖表。你可以看到現有的分區布局,並進行以下操作:

  • 添加分區:點擊 “+” 按鈕來添加新分區。選擇分區類型(如 appdata 等),並設置大小、偏移等屬性。
  • 調整分區大小:通過拖動分區邊界來調整大小。這樣可以輕鬆地重新配置閃存空間。
  • 刪除分區:選擇分區並點擊刪除按鈕來移除不需要的分區。
ESP32 Partition

保存並應用

完成修改後,點擊「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 文件中,這樣您就不需要手動編輯。

ESP32 Partition

編譯和燒錄

修改完成後,按下 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,
Master ESP32 Partition Table Easily Configure with Partition Table Editor UI 4 scaled

各欄位的含義:

  • 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 開發過程中的分區管理工作。