如何列出当前运行的 esp32 开发板的分区表?

物联网 ESP8266 ESP32 闪存
2021-06-28 00:03:15

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

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

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

2个回答

ESP32 的当前工具没有明确的选项。然而,现有的工具可以很容易地组合起来做到这一点。

分区表0x8000在旧0x9000系统位于(32768),在新系统上位于(36384)。无论如何,它的位置可以CONFIG_PARTITION_TABLE_OFFSET在 menuconfig设置中找到(并设置)它的长度总是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

将表转储到标准输出。

我正在尝试以下操作:

gen_esp32part.py partable.bin

在名为“partable.bin”的文件上,该文件是使用 esptool 提取的分区表。但是 gen_esp32part.py 不断抛出以下错误:

gen_esp32part.py: error: the following arguments are required: input

更新:没关系,当直接输入脚本名称时,它会被馈送到 pylauncher,它不会传递参数。我不得不使用:

python gen_esp32part.py partable.bin

然后它起作用了。