feat(mmu): support mmu and flash mmap driver on p4
This commit is contained in:
@@ -16,12 +16,11 @@
|
||||
|
||||
void mmu_hal_init(void)
|
||||
{
|
||||
//TODO: IDF-7509
|
||||
#if CONFIG_ESP_ROM_RAM_APP_NEEDS_MMU_INIT || CONFIG_IDF_TARGET_ESP32P4
|
||||
#if CONFIG_ESP_ROM_RAM_APP_NEEDS_MMU_INIT
|
||||
ROM_Boot_Cache_Init();
|
||||
#endif
|
||||
|
||||
//TODO: IDF-7509
|
||||
//TODO: IDF-7516
|
||||
#if CONFIG_IDF_TARGET_ESP32P4
|
||||
Cache_Invalidate_All(CACHE_MAP_L2_CACHE);
|
||||
#endif
|
||||
@@ -32,10 +31,15 @@ void mmu_hal_init(void)
|
||||
|
||||
void mmu_hal_unmap_all(void)
|
||||
{
|
||||
#if MMU_LL_MMU_PER_TARGET
|
||||
mmu_ll_unmap_all(MMU_LL_FLASH_MMU_ID);
|
||||
mmu_ll_unmap_all(MMU_LL_PSRAM_MMU_ID);
|
||||
#else
|
||||
mmu_ll_unmap_all(0);
|
||||
#if !CONFIG_FREERTOS_UNICORE
|
||||
mmu_ll_unmap_all(1);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
uint32_t mmu_hal_pages_to_bytes(uint32_t mmu_id, uint32_t page_num)
|
||||
@@ -90,11 +94,6 @@ void mmu_hal_map_region(uint32_t mmu_id, mmu_target_t mem_type, uint32_t vaddr,
|
||||
uint32_t entry_id = 0;
|
||||
uint32_t mmu_val; //This is the physical address in the format that MMU supported
|
||||
|
||||
//TODO: IDF-7509
|
||||
#if CONFIG_IDF_TARGET_ESP32P4
|
||||
uint32_t vaddr_orig = vaddr;
|
||||
#endif
|
||||
|
||||
*out_len = mmu_hal_pages_to_bytes(mmu_id, page_num);
|
||||
mmu_val = mmu_ll_format_paddr(mmu_id, paddr, mem_type);
|
||||
|
||||
@@ -105,22 +104,11 @@ void mmu_hal_map_region(uint32_t mmu_id, mmu_target_t mem_type, uint32_t vaddr,
|
||||
mmu_val++;
|
||||
page_num--;
|
||||
}
|
||||
|
||||
//TODO: IDF-7509
|
||||
#if CONFIG_IDF_TARGET_ESP32P4
|
||||
Cache_Invalidate_Addr(CACHE_MAP_L1_DCACHE | CACHE_MAP_L2_CACHE, vaddr_orig, len);
|
||||
#endif
|
||||
}
|
||||
|
||||
void mmu_hal_unmap_region(uint32_t mmu_id, uint32_t vaddr, uint32_t len)
|
||||
{
|
||||
uint32_t page_size_in_bytes = mmu_hal_pages_to_bytes(mmu_id, 1);
|
||||
|
||||
//TODO: IDF-7509
|
||||
#if CONFIG_IDF_TARGET_ESP32P4
|
||||
uint32_t vaddr_orig = vaddr;
|
||||
#endif
|
||||
|
||||
HAL_ASSERT(vaddr % page_size_in_bytes == 0);
|
||||
HAL_ASSERT(mmu_hal_check_valid_ext_vaddr_region(mmu_id, vaddr, len, MMU_VADDR_DATA | MMU_VADDR_INSTRUCTION));
|
||||
|
||||
@@ -132,11 +120,6 @@ void mmu_hal_unmap_region(uint32_t mmu_id, uint32_t vaddr, uint32_t len)
|
||||
vaddr += page_size_in_bytes;
|
||||
page_num--;
|
||||
}
|
||||
|
||||
//TODO: IDF-7509
|
||||
#if CONFIG_IDF_TARGET_ESP32P4
|
||||
Cache_Invalidate_Addr(CACHE_MAP_L1_DCACHE | CACHE_MAP_L2_CACHE, vaddr_orig, len);
|
||||
#endif
|
||||
}
|
||||
|
||||
bool mmu_hal_vaddr_to_paddr(uint32_t mmu_id, uint32_t vaddr, uint32_t *out_paddr, mmu_target_t *out_target)
|
||||
|
||||
Reference in New Issue
Block a user