#include <esp_partition.h>
#include <esp_err.h>
#include <esp_log.h>
void* map_partition_to_memory(const char* partition_name) {
const esp_partition_t* partition = esp_partition_find_first(
ESP_PARTITION_TYPE_ANY, ESP_PARTITION_SUBTYPE_ANY, partition_name);
if (!partition) {
Serial.printf("Partition '%s' not found\n", partition_name);
return NULL;
}
static const char store_data[] = "ESP-IDF Partition Memory Map Example";
// Prepare data to be read later using the mapped address
ESP_ERROR_CHECK(esp_partition_erase_range(partition, 0, partition->size));
ESP_ERROR_CHECK(esp_partition_write(partition, 0, store_data, sizeof(store_data)));
ESP_LOGI(TAG, "Written sample data to partition: %s", store_data);
const void *map_ptr;
esp_partition_mmap_handle_t map_handle;
// Map the partition to data memory
ESP_ERROR_CHECK(esp_partition_mmap(partition, 0, partition->size, ESP_PARTITION_MMAP_DATA, &map_ptr, &map_handle));
Serial.printf("Mapped partition to data memory address %p\n", map_ptr);
return (void*) map_ptr;
}
void setup() {
Serial.begin(115200);
// Example: Map a partition named 'lib'
void* mapped_data = map_partition_to_memory("lib");
if (mapped_data) {
// Access the mapped data
uint8_t* data_ptr = (uint8_t*)mapped_data;
Serial.printf("1st block: %s\n", data_ptr);
// Example of writing data
data_ptr[0] = 0x41; // Write 0xAA to the first byte
char msg[] = "Annex RDS";
esp_partition_write(partition, 0, msg, sizeof(msg));
Serial.printf("2st block: %s\n", data_ptr);
}
// Additional setup code
}
void loop() {
// Your loop code
}
esp:0
esp:2
esp:4
esp:5
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:21
esp:22
esp:23
esp:25
esp:26
esp:27
esp:32
esp:33
esp:34
esp:35
esp:3V3
esp:EN
esp:VP
esp:VN
esp:GND.1
esp:D2
esp:D3
esp:CMD
esp:5V
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:D1
esp:D0
esp:CLK