soc_esp32::app_desc
The ESP-IDF application image header. A chip-boot artifact, not a CPU one – the second-stage bootloader reads it, and the Xtensa core knows nothing about it. ESP-IDF application descriptor.
The ESP-IDF 2nd-stage bootloader (the one espflash bundles) refuses to hand
off to an app whose image lacks a valid esp_app_desc_t at flash offset
0x20 — it calls abort() and the chip reset-loops. This is an
Espressif-boot-image artifact, so it lives here in the Xtensa arch crate, not
in the portable kernel or the declarative board manifests. A different
chipset’s arch crate supplies whatever its boot format needs instead.
Placement: the linker puts .rodata_appdesc at the very start of the first
loaded segment (DRAM, lowest address), so it lands at image offset 0x20.
EXTERN(esp_app_desc) in the linker script forces it past --gc-sections.
Structs
Section titled “Structs”EspAppDesc
Section titled “EspAppDesc”struct EspAppDesc { pub magic_word: u32, pub secure_version: u32, pub reserv1: [u32; 2], pub version: [u8; 32], pub project_name: [u8; 32], pub time: [u8; 16], pub date: [u8; 16], pub idf_ver: [u8; 32], pub app_elf_sha256: [u8; 32], pub reserv2: [u32; 20],}Layout matches esp_app_desc_t (256 bytes). The bootloader only strictly
validates magic_word; the rest is informational (shown in the boot log).