From a1e6387c165fa98dbe88a556f67740c0daf9ed04 Mon Sep 17 00:00:00 2001 From: "harshal.patil" Date: Tue, 18 Feb 2025 15:24:56 +0530 Subject: [PATCH] fix(esp_psram): Fix incorrect calculation of used XIP PSRAM pages The functions mmu_config_psram_text_segment() and mmu_config_psram_rodata_segment() used to return the value of next start page in *out_page instead of the number of pages used as mentioned in the documentation --- components/esp_psram/mmu_psram_flash_v2.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/components/esp_psram/mmu_psram_flash_v2.c b/components/esp_psram/mmu_psram_flash_v2.c index cf5cd0e2f0..72c662c4e3 100644 --- a/components/esp_psram/mmu_psram_flash_v2.c +++ b/components/esp_psram/mmu_psram_flash_v2.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -111,8 +111,7 @@ esp_err_t mmu_config_psram_text_segment(uint32_t start_page, uint32_t psram_size ESP_EARLY_LOGV(TAG, "after mapping text, starting from paddr=0x%08"PRIx32" and vaddr=0x%08"PRIx32", 0x%"PRIx32" bytes are mapped", MMU_PAGE_TO_BYTES(start_page), irom_load_addr_aligned, mapped_size); - start_page += BYTES_TO_MMU_PAGE(irom_size); - *out_page = start_page; + *out_page = BYTES_TO_MMU_PAGE(irom_size); ESP_EARLY_LOGI(TAG, ".text xip on psram"); return ESP_OK; @@ -147,8 +146,7 @@ esp_err_t mmu_config_psram_rodata_segment(uint32_t start_page, uint32_t psram_si ESP_EARLY_LOGV(TAG, "after mapping rodata, starting from paddr=0x%08"PRIx32" and vaddr=0x%08"PRIx32", 0x%"PRIx32" bytes are mapped", MMU_PAGE_TO_BYTES(start_page), drom_load_addr_aligned, mapped_size); - start_page += BYTES_TO_MMU_PAGE(drom_size); - *out_page = start_page; + *out_page = BYTES_TO_MMU_PAGE(drom_size); ESP_EARLY_LOGI(TAG, ".rodata xip on psram"); return ESP_OK;