Skip to content

Investigating affect of huge_app to the partition table bin when using esptool #337

@nitin710

Description

@nitin710

Feather details

Assembled Adafruit HUZZAH32 – ESP32 Feather Board

  • 240 MHz dual core Tensilica LX6 microcontroller with 600 DMIPS
  • Integrated 520 KB SRAM
  • Integrated 802.11b/g/n HT40 Wi-Fi transceiver, baseband, stack and LWIP
  • Integrated dual mode Bluetooth® (classic and BLE)
  • 🟢 4 MByte flash include in the WROOM32 module 🟢

Current FW installer command

		command = command + " " + "--chip esp32 --port " + featherPort +
			" --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB" +
			" 0x1000" + " " + ofToDataPath(ofFilePath::join("esp32","EmotiBit_stock_firmware.ino.bootloader.bin")) +
			" 0x8000" + " " + ofToDataPath(ofFilePath::join("esp32", "EmotiBit_stock_firmware.partitions.bin")) +
			" 0xe000" + " " + ofToDataPath(ofFilePath::join("esp32", "boot_app0.bin")) +
			" 0x10000" + " " + fwFilePath;

What each file means

  • bootlaoder
    • should remain the same. See explanation in notes above
  • partition table
    • specifies the partition of the flash. This will probably change if we use huge app
  • boot_app0
    • The boot_app0.bin is the OTA data partition initial content. It is documented here. source

Notes

  • Primary bootloader is outside the flash.
  • Primary bootloader calls the secondary bootloader, which is programmed in the flash at address 0x1000
    • Second stage bootloader reads the partition table found by default at offset 0x8000 (configurable value). See partition tables documentation for more information.
    • The bootloader finds factory and OTA app partitions.
  • The partition table is located at 0x8000
    • The partition table length is 0xC00 bytes, as we allow a maximum of 95 entries. An MD5 checksum, used for checking the integrity of the partition table at runtime, is appended after the table data. Thus, the partition table occupies an entire flash sector, which size is 0x1000 (4 KB). As a result, any partition following it must be at least located at (default offset) + 0x1000.
    • example partition table
 # ESP-IDF Partition Table
# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x4000,
otadata,  data, ota,     0xd000,  0x2000,
phy_init, data, phy,     0xf000,  0x1000,
factory,  app,  factory, 0x10000,  1M,
ota_0,    app,  ota_0,   0x110000, 1M,
ota_1,    app,  ota_1,   0x210000, 1M,

partition table for ESP32

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions