blob: 222052a21ffb43a475489910b17a0d071705ef8a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
menu "AArch64 Architecture Configuration"
config ARCH_TEXT_OFFSET
hex "Text offset"
default 0x200000
help
Offset of kernel text section from start of RAM.
Defines where the kernel code (.text section) is located relative to
the beginning of physical RAM. This space before the kernel is typically
reserved for:
- Bootloader and device tree blob (DTB)
- Initial page tables
- Boot-time data structures
Default 0x200000 (2MB):
- Provides 2MB for bootloader and DTB
- Aligns with common ARM64 configurations
- Compatible with 2MB page granularity
Only change if you have specific bootloader requirements or memory layout.
config ARCH_RAM_OFFSET
hex "RAM offset"
default 0
help
Physical address offset of the RAM start.
Defines the starting physical address of system RAM. On many systems,
RAM doesn't start at address 0x0.
Common values:
- 0x00000000: RAM starts at address 0 (some SoCs)
- 0x40000000: Common for many ARM SoCs
- 0x80000000: Some development boards
This must match your hardware memory map. Check your SoC datasheet
or bootloader configuration.
Default 0 means RAM starts at physical address 0x0.
config ARCH_SECONDARY_CPU_STACK_SIZE
int "Secondary CPU stack size"
default 4096
help
Stack size for secondary CPU cores in multi-core (SMP) systems.
Each secondary CPU core (CPU1, CPU2, etc.) needs its own stack for
initialization and exception handling before the scheduler starts.
Default 4096 bytes (4KB):
- Sufficient for standard initialization
- Handles nested exceptions during boot
Increase if:
- Experiencing secondary CPU boot failures
- Complex initialization routines
- Deep call chains during CPU startup
Total memory used: (Number of secondary cores) × stack size
Note: After scheduler starts, each thread has its own stack.
config ARCH_HAVE_EFFICIENT_UNALIGNED_ACCESS
bool
default y
help
ARMv8 supports efficient unaligned memory access.
ARMv8 architecture can access unaligned memory addresses (addresses not
aligned to word boundaries) without performance penalty or exceptions.
Benefits:
- Simpler code (no manual alignment required)
- Network packet processing (headers often unaligned)
- Reduced padding in data structures
This is automatically enabled for ARMv8 - no configuration needed.
Note: Some embedded systems may disable this for deterministic timing
or to catch alignment bugs, but ARMv8 handles it efficiently in hardware.
config ARCH_USING_GENERIC_CPUID
bool "Using generic cpuid implemenation"
select ARCH_USING_HW_THREAD_SELF
default y if RT_USING_OFW
default n
help
Use generic CPU identification implementation for multi-core systems.
Provides standardized method to identify which CPU core is currently
executing, essential for SMP (Symmetric Multi-Processing).
When enabled:
- Reads MPIDR_EL1 register for CPU ID
- Maps hardware CPU IDs to logical CPU numbers
- Enables proper per-CPU data structures
Required for:
- SMP systems with multiple cores
- Per-CPU statistics and profiling
- CPU affinity and core-specific operations
Automatically enabled when using OpenFirmware/Device Tree (RT_USING_OFW).
Enable if you have multi-core ARMv8 system. Disable for single-core
to save minimal overhead.
config ARCH_HEAP_SIZE
hex "Size of system heap"
default 0x4000000
help
Size of system heap for dynamic memory allocation.
Defines the amount of memory available for rt_malloc() and related
dynamic allocation functions.
Default 0x4000000 (64MB):
- Suitable for application-class systems with RT-Smart
- Supports moderate number of dynamic allocations
Adjust based on:
- Available RAM in your system
- Application memory requirements
- Static vs dynamic allocation strategy
Smaller values for resource-constrained systems.
Larger values for systems with abundant RAM and heavy dynamic allocation.
Note: Actual available memory depends on total RAM size.
Example configurations:
- 128MB RAM system: 0x4000000 (64MB) or less
- 256MB RAM system: 0x8000000 (128MB) or more
- 1GB+ RAM system: 0x20000000 (512MB) or more
config ARCH_INIT_PAGE_SIZE
hex "Size of init page region"
default 0x200000
help
Size of initial page table region for early boot.
Reserves memory for page tables used during system initialization
before the full memory management is set up.
Default 0x200000 (2MB):
- Sufficient for initial kernel mappings
- Covers typical early boot requirements
- Aligns with 2MB page granularity
This memory is used for:
- Initial MMU page table entries
- Early kernel virtual memory mappings
- Temporary boot-time allocations
Increase if:
- Experiencing boot failures related to page tables
- Large kernel image
- Extensive early I/O mappings
Decrease for memory-constrained systems (minimum ~1MB).
Note: After full MM initialization, regular page allocation takes over.
endmenu
|