Zephyr API Documentation 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
arm_mpu_mem_cfg.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2017 Linaro Limited.
3 * Copyright 2025 NXP
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7#ifndef _INCLUDE_ZEPHYR_ARCH_ARM_MPU_MEM_CFG_H_
8#define _INCLUDE_ZEPHYR_ARCH_ARM_MPU_MEM_CFG_H_
9
11
12#if !defined(CONFIG_ARMV8_M_BASELINE) && !defined(CONFIG_ARMV8_M_MAINLINE)
13
14/* Flash Region Definitions */
15#if CONFIG_FLASH_SIZE <= 32
16#define REGION_FLASH_SIZE REGION_32K
17#elif CONFIG_FLASH_SIZE <= 64
18#define REGION_FLASH_SIZE REGION_64K
19#elif CONFIG_FLASH_SIZE <= 128
20#define REGION_FLASH_SIZE REGION_128K
21#elif CONFIG_FLASH_SIZE <= 256
22#define REGION_FLASH_SIZE REGION_256K
23#elif CONFIG_FLASH_SIZE <= 512
24#define REGION_FLASH_SIZE REGION_512K
25#elif CONFIG_FLASH_SIZE <= 1024
26#define REGION_FLASH_SIZE REGION_1M
27#elif CONFIG_FLASH_SIZE <= 2048
28#define REGION_FLASH_SIZE REGION_2M
29#elif CONFIG_FLASH_SIZE <= 4096
30#define REGION_FLASH_SIZE REGION_4M
31#elif CONFIG_FLASH_SIZE <= 8192
32#define REGION_FLASH_SIZE REGION_8M
33#elif CONFIG_FLASH_SIZE <= 16384
34#define REGION_FLASH_SIZE REGION_16M
35#elif CONFIG_FLASH_SIZE <= 32768
36#define REGION_FLASH_SIZE REGION_32M
37#elif CONFIG_FLASH_SIZE <= 65536
38#define REGION_FLASH_SIZE REGION_64M
39#elif CONFIG_FLASH_SIZE <= 131072
40#define REGION_FLASH_SIZE REGION_128M
41#elif CONFIG_FLASH_SIZE <= 262144
42#define REGION_FLASH_SIZE REGION_256M
43#elif CONFIG_FLASH_SIZE <= 524288
44#define REGION_FLASH_SIZE REGION_512M
45#elif CONFIG_FLASH_SIZE <= 1048576
46#define REGION_FLASH_SIZE REGION_1G
47#elif CONFIG_FLASH_SIZE <= 2097152
48#define REGION_FLASH_SIZE REGION_2G
49#elif CONFIG_FLASH_SIZE <= 4194304
50#define REGION_FLASH_SIZE REGION_4G
51#else
52#error "Unsupported flash size configuration"
53#endif
54
55#define Z_SRAM_SIZE (DT_CHOSEN_SRAM_SIZE / 1024)
56
57/* SRAM Region Definitions */
58#if Z_SRAM_SIZE <= 16
59#define REGION_SRAM_SIZE REGION_16K
60#elif Z_SRAM_SIZE <= 32
61#define REGION_SRAM_SIZE REGION_32K
62#elif Z_SRAM_SIZE <= 64
63#define REGION_SRAM_SIZE REGION_64K
64#elif Z_SRAM_SIZE <= 128
65#define REGION_SRAM_SIZE REGION_128K
66#elif Z_SRAM_SIZE <= 256
67#define REGION_SRAM_SIZE REGION_256K
68#elif Z_SRAM_SIZE <= 512
69#define REGION_SRAM_SIZE REGION_512K
70#elif Z_SRAM_SIZE <= 1024
71#define REGION_SRAM_SIZE REGION_1M
72#elif Z_SRAM_SIZE <= 2048
73#define REGION_SRAM_SIZE REGION_2M
74#elif Z_SRAM_SIZE <= 4096
75#define REGION_SRAM_SIZE REGION_4M
76#elif Z_SRAM_SIZE <= 8192
77#define REGION_SRAM_SIZE REGION_8M
78#elif Z_SRAM_SIZE <= 16384
79#define REGION_SRAM_SIZE REGION_16M
80#elif Z_SRAM_SIZE <= 32768
81#define REGION_SRAM_SIZE REGION_32M
82#elif Z_SRAM_SIZE <= 65536
83#define REGION_SRAM_SIZE REGION_64M
84#elif Z_SRAM_SIZE <= 131072
85#define REGION_SRAM_SIZE REGION_128M
86#elif Z_SRAM_SIZE <= 262144
87#define REGION_SRAM_SIZE REGION_256M
88#elif Z_SRAM_SIZE <= 524288
89#define REGION_SRAM_SIZE REGION_512M
90#elif Z_SRAM_SIZE <= 1048576
91#define REGION_SRAM_SIZE REGION_1G
92#elif Z_SRAM_SIZE <= 2097152
93#define REGION_SRAM_SIZE REGION_2G
94#elif Z_SRAM_SIZE <= 4194304
95#define REGION_SRAM_SIZE REGION_4G
96#else
97#error "Unsupported sram size configuration"
98#endif
99
100#undef Z_SRAM_SIZE
101
102/* Define Wrong value */
103#define REGION_SIZE_UNSUPPORTED -1
104
105/* Customed Memory Region Definitions */
106#define REGION_CUSTOMED_MEMORY_SIZE(size_kb) \
107 ((size_kb) <= 16 ? REGION_16K : \
108 (size_kb) <= 32 ? REGION_32K : \
109 (size_kb) <= 64 ? REGION_64K : \
110 (size_kb) <= 128 ? REGION_128K : \
111 (size_kb) <= 256 ? REGION_256K : \
112 (size_kb) <= 512 ? REGION_512K : \
113 (size_kb) <= 1024 ? REGION_1M : \
114 (size_kb) <= 2048 ? REGION_2M : \
115 (size_kb) <= 4096 ? REGION_4M : \
116 (size_kb) <= 8192 ? REGION_8M : \
117 (size_kb) <= 16384 ? REGION_16M : \
118 (size_kb) <= 32768 ? REGION_32M : \
119 (size_kb) <= 65536 ? REGION_64M : \
120 (size_kb) <= 131072 ? REGION_128M : \
121 (size_kb) <= 262144 ? REGION_256M : \
122 (size_kb) <= 524288 ? REGION_512M : \
123 (size_kb) <= 1048576 ? REGION_1G : \
124 (size_kb) <= 2097152 ? REGION_2G : \
125 (size_kb) <= 4194304 ? REGION_4G : \
126 REGION_SIZE_UNSUPPORTED)
127
128#endif /* !ARMV8_M_BASELINE && !ARMV8_M_MAINLINE */
129
130#endif /* _INCLUDE_ZEPHYR_ARCH_ARM_MPU_MEM_CFG_H_ */