ESP32 內置記憶體的分區表 (partition table)

分區表

        ESP32 內建 flash,這個 flash 被規劃成數個區塊,稱為分區表(partition table)。ESP32 將分區表分成三類:第一為單一應用程式且無 OTA 區塊(single factory app, no OTA),圖一所示。第二為具有 OTA 定義的區塊(factory app, two OTA definitions),圖二所示,這被規劃做為韌體更新的分區表,可以更新應用程式區塊。第三為客戶自行定義的分區表。

圖一:單一應用程式的分區表

圖二:具有 OTA 的分區表

        底下的影片詳細描述內建的分區表,表上有幾個部分是不會變動的,如:Bootloader分區表NVS資料區硬體資料區應用程式區...等。Bootloader 程式的大小約莫小於 0x7000 (28672 Bytes),開機後執行 Bootloader,然後跳到應用程式運行。到應用程式,可以存取 NVS 資料區,這是一塊非揮發性記憶空間,適合做為 config 之用。

函數

        ESP-IDF component 提供 NVS 相關的函數,在範例程式中,有 C 語法調用的方式,也有 C++ 語法的調用。C 語法的做法,先透過 nvs_open / nvs_close 這對函數取得 NVS 的控制權杖,然後才能調用存取的函數,如:nvs_get_i8nvs_get_i16nvs_set_i8nvs_set_i16...等,依據資料的大小來調用適合的存取函數。而 C++ 語法的做法,也是透過 open_nvs_handle 取得控制權,再來調用 get_itemset_item...等存取函數。

留言

此網誌的熱門文章

[筆記] Raspberry Pi 樹莓派的軟體開發

[應用] 在 ESP32 Audio 開發板的 VoIP 範例

[筆記] ESP32 在 VS Code 開發環境的編譯與除錯

[筆記] Visual Studio 遠端偵錯的設定步驟

[筆記] Android APP 藍芽範例說明 -- BluetoothChat

[應用] 藍芽 BLE client/server 架構:BLE remote controller

[模組] LD3320 離線語音辨識晶片與 ESP32 無線傳輸