我在ESP32开发板上开发(esp8266,wroom)。我需要获取当前正在运行的设备的分区表。

此文档包含其分区表的相当不错的文档。我还可以通过esptool.pyparttool.py工具读取/写入闪存区域。这些可以很好地管理和修改表。

但是,我没有找到读取其分区的方法。我该怎么办?

#1 楼

ESP32的当前工具对此没有明确的选择。但是,可以轻松组合现有工具来实现此目的。
分区表位于旧版本的0x8000(32768)上,而在较新的系统上位于0x9000(36384)上。无论如何,可以在menuconfig的CONFIG_PARTITION_TABLE_OFFSET设置中找到(并设置)其位置。它的长度始终是0xc00(3072)字节。
通过esptool.py可以例如通过命令
python $(IDF_PATH)/components/esptool_py/esptool/esptool.py read_flash 0x9000 0xc00 ptable.img

读出,然后可以使用gen_esp32part.py工具进行转换到csv到stdout:gen_esp32part.py ptable.img。对于某些脚本,这些工具也可以组合使用,例如在Linux中。
(python $(IDF_PATH)/components/esptool_py/esptool/esptool.py \
  read_flash 0x9000 0xc00 /dev/fd/3 >&2) 3>&1|python \
  $(IDF_PATH)/components/partition_table/gen_esp32part.py /dev/fd/0

会将表转储到stdout。