I think I understand. You want to read this metadata externally, yes? ie the application runs on a computer and parses the .bin files.
If so, writing to a fixed memory address only gets you part way. Because the ESP32 has an MMU, there's no guarantee that a virtual memory address (like 0x3F400018) corresponds to a particular address in the .bin file. You'd need to parse the .bin file format in order to determine that information.
(This is different on a much simpler micro like the one you linked, where there's no MMU and the physical flash layout always has a fixed correspondence to the virtual address space.)
You can do it that way, but it's a lot of extra complexity that I would recommend avoiding.
One other way is to append the information "out of band" to the .bin file:
- Generate the .bin file normally from the build process
- Pad the .bin file with 0xFFs to (Size of partition - 0x100)
- Append the 0x100 bytes (or whatever) of metadata there
- Read it from an external app by seeking to the end of the .bin file, or read it from inside the ESP32 with esp_partition_mmap().
Another way to get a canonical "app identifier" which ESP-IDF uses is a SHA-256 hash of all the image content. You can get these from "esptool.py --chip esp32 image_info path/to/binfile.bin" or
esp_partition_get_sha256() (new in IDF V3.2). You'd still need an external lookup table from SHA identifier to other metadata. This has the advantage that even if you accidentally deploy two .bin files with the same metadata but different content, you can differentiate them.