当我尝试在 esp32 中启用闪存加密时,引导加载程序大小很大。但我无法在分区表中找到 bootloader 字段

问题描述 投票:0回答:1

错误:引导加载程序二进制大小 0x7780 字节对于分区表偏移 0x8000 来说太大。引导加载程序二进制文件最大可为 0x7000 (28672) 字节,除非在项目配置菜单的分区表部分中增加分区表偏移量。

在 esp32 固件中启用 flash 加密。

encryption flash esp32 bootloader guid-partition-table
1个回答
0
投票

简短回答:

  1. CONFIG_PARTITION_TABLE_OFFSET
    更改为更高的值(例如使用
    idf.py menuconfig
    )。默认值为 0x8000。我将其设置为 0x1F000 为引导加载程序保留 0x17000 个字节(总共 120 KiB)。
  2. 更改项目的分区表,使第一个条目是您选择的CONFIG_PARTITION_TABLE_OFFSET + 0x1000。默认值为 0x9000。我将其设置为 0x20000 以匹配之前的更改。

    您可能想要查看并更新所有的位置和大小 接下来的分区,而不仅仅是第一个分区。

长答案

在您的

partitions.csv
中可见的分区表之前有3个“隐藏分区”。默认情况下它们是:

#     Start |   Length           | Partition
# ----------+--------------------+----------------------
#    0x0000 |   0x1000  (4 KB) | (hidden) Secure boot IV and app image signature
#    0x1000 |   0x7000 (28 KB) | (hidden) Bootloader
#    0x8000 |   0x1000  (4 KB) | (hidden) Partition table
# ----------+--------------------+----------------------

partitions.csv
中声明的可见分区从该表结束处开始,默认为0x9000。

您可以使用配置键

CONFIG_PARTITION_TABLE_OFFSET
更改分区表的偏移量,这会将分区“分区表”移动到新地址。这样做会为引导加载程序留下更多(或更少,如果你愿意的话:))空间。

显然,

partitions.csv
中的所有可见分区向前移动(或向后移动,如果你愿意的话:))移动相同的量。

下面是 16 MiB 闪存的示例分区表。

为引导加载程序留下 120 KiB 的空间。其次是半强制OTA数据、PHY分区。一个 884 KiB 的大 NVS 分区。最后两个 OTA 分区,每个大约 7.6 MiB。

  1. CONFIG_PARTITION_TABLE_OFFSET
    设置为 0x1F000
  2. partitions.csv
    更新为以下内容:
#     Start |   Length           | Partition
# ----------+--------------------+----------------------
#    0x0000 |   0x1000    (4 KB) | (hidden) Secure boot IV and app image signature
#    0x1000 |  0x1E000  (120 KB) | (hidden) Bootloader
#   0x1F000 |   0x1000    (4 KB) | (hidden) Partition table
# ----------+--------------------+----------------------

otadata,  data, ota,       0x20000,   0x2000,
phy_init, data, phy,       0x22000,   0x1000,
nvs,      data, nvs,       0x23000,  0xDD000,
app0,     app,  ota_0,    0x100000, 0x780000,
app1,     app,  ota_1,    0x880000, 0x780000,
© www.soinside.com 2019 - 2024. All rights reserved.