To communicate with an ESP32 the ESP-IDF (Espressif IoT Development Framework) can be used. This framework provides a collection of useful scripts to communicate with your ESP device. The framework is supported on Windows, Linux and macOS.
You can download the ESP-IDF repository and extract the contents into a folder.
Note that you need to have Python 3 installed. For example by using brew install python
on macOS. In addition, the esptool
library is required by running pip install esptool
in your terminal.
Reading the Partition Table
The partition table is located at 0x8000
(32768) on older, and on 0x9000
(36384) on newer systems. Its length is always 0xc00
(3072) bytes.
With the esptool.py
, this can be read out, for example by the command
python $(IDF_PATH)/components/esptool_py/esptool/esptool.py read_flash 0x9000 0xc00 partitions.img
To create a “human” readable csv file, you can use the gen_esp32part.py
tool:
python $(IDF_PATH)/components/partition_table/gen_esp32part.py partitions.img > partitions.csv
In my case, the partition table looks as follows:
Writing the Partition Table
When using an IDE like PlatformIO, the flashing of the partition table is part of the build process. For this, just add the following line to your platformio.ini
:
board_build.partitions = partitions.csv
The Manual Way
First, you have to generate the partition table binaries. This can be done with idf.py
:
python $(IDF_PATH)/components/partition_table/gen_esp32part.py partitions.csv partitions.bin
After this you can use esptool.py (which we already used for reading) for writing:
python $(IDF_PATH)/components/esptool_py/esptool/esptool.py write_flash -z 0x9000 partitions.bin
More details about Partition Tables, how to create custom tables, handle different partition types and the flashing precedure are listed on the official Espressif documentation.
Foto von Vishnu Mohanan auf Unsplash
Leave a Reply