Skip to content

Commit d65c108

Browse files
committed
Merge branch 'feat/mmu_find_paddr_caps_by_any_offset_v5.4' into 'release/v5.4'
mmu: supported find paddr caps by any paddr offset (v5.4) See merge request espressif/esp-idf!36813
2 parents 667c1b6 + efd8c46 commit d65c108

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

components/esp_mm/esp_mmu_map.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,7 @@ IRAM_ATTR esp_err_t esp_mmu_paddr_find_caps(const esp_paddr_t paddr, mmu_mem_cap
359359
}
360360

361361
//now we are only traversing the actual dynamically allocated blocks, dummy_head and dummy_tail are excluded already
362-
if (mem_block->paddr_start == paddr) {
362+
if (paddr >= mem_block->paddr_start && paddr < mem_block->paddr_end) {
363363
found = true;
364364
found_block = mem_block;
365365
break;

components/esp_mm/test_apps/mm/main/test_mmap.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,23 @@ TEST_CASE("Can dump mapped block stats", "[mmu]")
5050
TEST_ESP_OK(esp_mmu_unmap(ptr1));
5151
TEST_ESP_OK(esp_mmu_unmap(ptr2));
5252
}
53+
54+
TEST_CASE("Can find paddr caps by any paddr offset", "[mmu]")
55+
{
56+
const esp_partition_t *part = s_get_partition();
57+
ESP_LOGI(TAG, "found partition '%s' at offset 0x%"PRIx32" with size 0x%"PRIx32, part->label, part->address, part->size);
58+
59+
void *ptr0 = NULL;
60+
TEST_ESP_OK(esp_mmu_map(part->address, TEST_BLOCK_SIZE, MMU_TARGET_FLASH0, MMU_MEM_CAP_READ, 0, &ptr0));
61+
62+
mmu_mem_caps_t caps = 0;
63+
TEST_ESP_OK(esp_mmu_paddr_find_caps(part->address, &caps));
64+
ESP_LOGI(TAG, "caps: 0x%x", caps);
65+
TEST_ASSERT(caps == MMU_MEM_CAP_READ);
66+
67+
TEST_ESP_OK(esp_mmu_paddr_find_caps(part->address + 0x100, &caps));
68+
ESP_LOGI(TAG, "caps: 0x%x", caps);
69+
TEST_ASSERT(caps == MMU_MEM_CAP_READ);
70+
71+
TEST_ESP_OK(esp_mmu_unmap(ptr0));
72+
}

0 commit comments

Comments
 (0)