2012-04-06 23:49:35 +08:00
|
|
|
#
|
|
|
|
# For a description of the syntax of this configuration file,
|
2012-04-07 00:45:52 +08:00
|
|
|
# see misc/tools/kconfig-language.txt.
|
2012-04-06 23:49:35 +08:00
|
|
|
#
|
2012-04-11 22:47:25 +08:00
|
|
|
|
2013-03-09 09:27:42 +08:00
|
|
|
config MM_KERNEL_HEAP
|
|
|
|
bool "Support a protected, kernel heap"
|
|
|
|
default y
|
2014-09-01 00:54:55 +08:00
|
|
|
depends on BUILD_PROTECTED || BUILD_KERNEL
|
2013-03-09 09:27:42 +08:00
|
|
|
---help---
|
|
|
|
Partition heap memory into two parts: (1) a protected, kernel-mode
|
|
|
|
heap accessible only by the NuttX kernel, and (2) an unprotected
|
|
|
|
user-mode heap for use by applications. If you are only interested
|
|
|
|
in protected the kernel from read access, then this option is not
|
|
|
|
necessary. If you wish to secure the kernel data as well, then
|
|
|
|
this option should be selected.
|
|
|
|
|
2013-03-10 05:12:20 +08:00
|
|
|
The kernel heap size that is used is provided a a platform-specific
|
|
|
|
up_allocate_kheap() interface. This configuration setting is made
|
|
|
|
available to that platform specific code. However, the
|
|
|
|
up_allocate_kheap() interface may chose to ignore this setting if it
|
|
|
|
has a more appropriate heap allocation strategy.
|
|
|
|
|
2013-03-09 09:27:42 +08:00
|
|
|
config MM_KERNEL_HEAPSIZE
|
|
|
|
int "Kernal heap size"
|
|
|
|
default 8192
|
|
|
|
depends on MM_KERNEL_HEAP
|
|
|
|
---help---
|
|
|
|
This is the size of the a protected, kernel-mode heap (in bytes).
|
|
|
|
The remaining of available memory is given to the unprotected
|
|
|
|
user-mode heap. This value may need to be aligned to units of the
|
|
|
|
size of the smallest memory protection region.
|
|
|
|
|
2012-04-11 22:47:25 +08:00
|
|
|
config MM_SMALL
|
|
|
|
bool "Small memory model"
|
|
|
|
default n
|
|
|
|
---help---
|
|
|
|
Each memory allocation has a small allocation overhead. The size
|
|
|
|
of that overhead is normally determined by the "width" of the
|
|
|
|
address support by the MCU. MCUs that support 16-bit addressability
|
|
|
|
have smaller overhead than devices that support 32-bit addressability.
|
|
|
|
However, there are many MCUs that support 32-bit addressability *but*
|
|
|
|
have internal SRAM of size less than or equal to 64Kb. In this case,
|
2013-04-26 05:52:00 +08:00
|
|
|
MM_SMALL can be defined so that those MCUs will also benefit
|
2012-04-11 22:47:25 +08:00
|
|
|
from the smaller, 16-bit-based allocation overhead.
|
2012-09-06 07:02:43 +08:00
|
|
|
|
2013-06-11 01:57:37 +08:00
|
|
|
WARNING: This selection will also change the alignment of allocated
|
|
|
|
memory. For example, on ARM memory will have 8-byte alignment by
|
|
|
|
default. If MM_SMALL is selected, then allocated memory will have
|
|
|
|
only 4-byte alignment. This may be important on some platforms where
|
|
|
|
64-bit data is in allocated structures and 8-byte alignment is required.
|
|
|
|
|
2012-09-06 07:02:43 +08:00
|
|
|
config MM_REGIONS
|
|
|
|
int "Number of memory regions"
|
|
|
|
default 1
|
|
|
|
---help---
|
|
|
|
If the architecture includes multiple, non-contiguous regions of
|
|
|
|
memory to allocate from, this specifies the number of memory regions
|
|
|
|
that the memory manager must handle and enables the API
|
2013-03-09 06:01:50 +08:00
|
|
|
mm_addregion(heap, start, end);
|
2012-09-06 07:02:43 +08:00
|
|
|
|
|
|
|
config ARCH_HAVE_HEAP2
|
|
|
|
bool
|
2014-01-24 02:06:57 +08:00
|
|
|
default n
|
|
|
|
|
|
|
|
if ARCH_HAVE_HEAP2
|
2012-09-06 07:02:43 +08:00
|
|
|
|
|
|
|
config HEAP2_BASE
|
2013-03-09 04:36:18 +08:00
|
|
|
hex "Start address of second user heap region"
|
2012-09-06 07:02:43 +08:00
|
|
|
default 0x00000000
|
|
|
|
---help---
|
|
|
|
The base address of the second heap region.
|
|
|
|
|
|
|
|
config HEAP2_SIZE
|
2013-03-09 04:36:18 +08:00
|
|
|
int "Size of the second user heap region"
|
2012-09-06 07:02:43 +08:00
|
|
|
default 0
|
|
|
|
---help---
|
|
|
|
The size of the second heap region.
|
|
|
|
|
2014-01-24 02:06:57 +08:00
|
|
|
endif # ARCH_HAVE_HEAP2
|
|
|
|
|
2014-09-23 04:53:56 +08:00
|
|
|
|
|
|
|
config MM_SHM
|
|
|
|
bool "Shared memory support"
|
|
|
|
default n
|
|
|
|
depends on BUILD_KERNEL && EXPERIMENTAL
|
|
|
|
---help---
|
|
|
|
Build in support for the shared memory interfaces shmget(), shmat(),
|
|
|
|
shmctl(), and shmdt().
|
|
|
|
|
2012-09-12 04:33:58 +08:00
|
|
|
config GRAN
|
|
|
|
bool "Enable Granule Allocator"
|
|
|
|
default n
|
|
|
|
---help---
|
2014-08-24 06:35:52 +08:00
|
|
|
Enable granule allocator support. Allocations will be aligned to the
|
2012-09-12 04:33:58 +08:00
|
|
|
granule size; allocations will be in units of the granule size.
|
|
|
|
Larger granules will give better performance and less overhead but
|
|
|
|
more losses of memory due to alignment and quantization waste.
|
|
|
|
|
|
|
|
NOTE: The current implementation also restricts the maximum
|
|
|
|
allocation size to 32 granaules. That restriction could be
|
|
|
|
eliminated with some additional coding effort.
|
|
|
|
|
|
|
|
config GRAN_SINGLE
|
|
|
|
bool "Single Granule Allocator"
|
|
|
|
default n
|
|
|
|
depends on GRAN
|
|
|
|
---help---
|
|
|
|
Select if there is only one instance of the granule allocator (i.e.,
|
|
|
|
gran_initialize will be called only once. In this case, (1) there
|
|
|
|
are a few optimizations that can can be done and (2) the GRAN_HANDLE
|
|
|
|
is not needed.
|
|
|
|
|
2012-09-12 23:18:56 +08:00
|
|
|
config GRAN_INTR
|
|
|
|
bool "Interrupt level support"
|
|
|
|
default n
|
|
|
|
depends on GRAN
|
|
|
|
---help---
|
|
|
|
Normally mutual exclusive access to granule allocator data is assured
|
|
|
|
using a semaphore. If this option is set then, instead, mutual
|
|
|
|
exclusion logic will disable interrupts. While this options is more
|
|
|
|
invasive to system performance, it will also support use of the granule
|
|
|
|
allocator from interrupt level logic.
|
|
|
|
|
2012-09-12 04:33:58 +08:00
|
|
|
config DEBUG_GRAN
|
|
|
|
bool "Granule Allocator Debug"
|
|
|
|
default n
|
|
|
|
depends on GRAN && DEBUG
|
|
|
|
---help---
|
2014-08-24 06:35:52 +08:00
|
|
|
Just like DEBUG_MM, but only generates output from the gran
|
2012-09-12 04:33:58 +08:00
|
|
|
allocation logic.
|
2014-08-24 06:35:52 +08:00
|
|
|
|
|
|
|
config MM_PGALLOC
|
|
|
|
bool "Enable Page Allocator"
|
|
|
|
default n
|
2014-08-30 04:47:22 +08:00
|
|
|
depends on ARCH_USE_MMU
|
2014-08-24 06:35:52 +08:00
|
|
|
select GRAN
|
|
|
|
---help---
|
|
|
|
Enable support for a MMU physical page allocator based on the
|
|
|
|
granule allocator.
|
|
|
|
|
|
|
|
if MM_PGALLOC
|
|
|
|
|
|
|
|
config MM_PGSIZE
|
|
|
|
int "Page Size"
|
|
|
|
default 4096
|
|
|
|
--help---
|
|
|
|
The MMU page size. Must be one of {1024, 2048, 4096, 8192, or
|
|
|
|
16384}. This is easily extensible, but only those values are
|
|
|
|
currently support.
|
|
|
|
|
|
|
|
config DEBUG_PGALLOC
|
|
|
|
bool "Page Allocator Debug"
|
|
|
|
default n
|
|
|
|
depends on DEBUG
|
|
|
|
---help---
|
|
|
|
Just like DEBUG_MM, but only generates output from the page
|
|
|
|
allocation logic.
|
|
|
|
|
|
|
|
endif # MM_PGALLOC
|