static const struct arm_mpu_region mpu_regions[] = {
#if defined(CONFIG_SDRAM_LMA_ADJUST)
/*
* Если мы перенесли всё ядро в SDRAM, то регионы FLASH_0 и SRAM_0
* физически указывают на внешнюю память (0x80000000 и 0x81000000).
* Мы обязаны разметить оба диапазона как полноценную оперативную память (RAM).
*/
/* Region 0 (Первая половина SDRAM, где лежит код и базовый стек) */
MPU_REGION_ENTRY("FLASH_0",
CONFIG_FLASH_BASE_ADDRESS,
REGION_RAM_ATTR(REGION_FLASH_SIZE)),
/* Region 1 (Вторая половина SDRAM, где лежат данные, мьютексы и кучи) */
MPU_REGION_ENTRY("SRAM_0",
CONFIG_SRAM_BASE_ADDRESS,
REGION_RAM_ATTR(REGION_SRAM_SIZE)),
#else
/* Стандартная разметка Zephyr по умолчанию для XIP из встроенной флеш */
/* Region 0 */
MPU_REGION_ENTRY("FLASH_0",
CONFIG_FLASH_BASE_ADDRESS,
REGION_FLASH_ATTR(REGION_FLASH_SIZE)),
/* Region 1 */
MPU_REGION_ENTRY("SRAM_0",
CONFIG_SRAM_BASE_ADDRESS,
REGION_RAM_ATTR(REGION_SRAM_SIZE)),
#endif
#ifndef CONFIG_NXP_IMX_EXTERNAL_SDRAM
/* ... */
MPU_REGION_ENTRY("SDRAM0", SDRAM_BASE_ADDR, REGION_IO_ATTR(REGION_512M)),
#endif
};