Hi,
I'm trying to analyse some ESP32 binaries, and could not find any documentation about the image format besides the explanation of the header fields in the ESP-IDF Programming Guide [1], not even the name of the format (it's a modified version of .elf). Or formats, as reading Esptool's code [2] shows it's actually more than one.
Regards
[1] https://docs.espressif.com/projects/esp ... ormat.html
[2] https://github.com/espressif/esptool/bl ... n_image.py
App Image Format Documentation
-
- Posts: 9708
- Joined: Thu Nov 26, 2015 4:08 am
Re: App Image Format Documentation
That description is terse, but accurate. What information specifically are you missing? (And note that aside from having segments, the format has very little to do with ELF and is not derived from it, it's a custom format.)
Re: App Image Format Documentation
The format is also documented in https://docs.espressif.com/projects/esp ... ormat.html
Re: App Image Format Documentation
ESP_Sprite wrote: That description is terse, but accurate. What information specifically are you missing? (And note that aside from having segments, the format has very little to do with ELF and is not derived from it, it's a custom format.)
For example, segment placement. There's a talk about "Extracting an ELF From an ESP32" [1] on Youtube, that claims on the slide shown from 24:25 to 24:51, that multiple flash segments must not be placed within the same 64kB flash mapping region. I couldn't find any information that confirms or denies this behaviour. Now I'm wondering what other information might be missing in the above linked documentation.
[1] https://www.youtube.com/watch?v=w4_3vwN_2dI
-
- Posts: 9708
- Joined: Thu Nov 26, 2015 4:08 am
Re: App Image Format Documentation
That's more a practical limit of the ESP32 MMU rather than the flash format. The logic there is that the MMU can map flash blocks to memory space, but those blocks are 64K in size with the physical address also aligned to 64K. That means mapping multiple segments to the same 64K block only works if the virtual addresses they're mapped to also are consecutive, and in that case it makes more sense to merge the segments. So in practice, multiple segments in a 64K mapping is an error.
Who is online
Users browsing this forum: No registered users and 21 guests