esp_partition_mmap could map a page less than needed because it did not take the region offset into account.

This commit is contained in:
Jeroen Domburg 2017-07-03 18:00:25 +08:00
parent 2aad52300a
commit 93b7eaf5b2

View File

@ -315,7 +315,7 @@ esp_err_t esp_partition_mmap(const esp_partition_t* partition, uint32_t offset,
// offset within 64kB block // offset within 64kB block
size_t region_offset = phys_addr & 0xffff; size_t region_offset = phys_addr & 0xffff;
size_t mmap_addr = phys_addr & 0xffff0000; size_t mmap_addr = phys_addr & 0xffff0000;
esp_err_t rc = spi_flash_mmap(mmap_addr, size, memory, out_ptr, out_handle); esp_err_t rc = spi_flash_mmap(mmap_addr, size+region_offset, memory, out_ptr, out_handle);
// adjust returned pointer to point to the correct offset // adjust returned pointer to point to the correct offset
if (rc == ESP_OK) { if (rc == ESP_OK) {
*out_ptr = (void*) (((ptrdiff_t) *out_ptr) + region_offset); *out_ptr = (void*) (((ptrdiff_t) *out_ptr) + region_offset);