123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- #
- # For a description of the syntax of this configuration file,
- # see the file kconfig-language.txt in the NuttX tools repository.
- #
- config MM_KERNEL_HEAP
- bool "Support a protected, kernel heap"
- default y
- depends on BUILD_PROTECTED || BUILD_KERNEL
- ---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.
- 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.
- 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.
- 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,
- MM_SMALL can be defined so that those MCUs will also benefit
- from the smaller, 16-bit-based allocation overhead.
- 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.
- 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
- mm_addregion(heap, start, end);
- config ARCH_HAVE_HEAP2
- bool
- default n
- if ARCH_HAVE_HEAP2
- config HEAP2_BASE
- hex "Start address of second user heap region"
- default 0x00000000
- ---help---
- The base address of the second heap region.
- config HEAP2_SIZE
- int "Size of the second user heap region"
- default 0
- ---help---
- The size of the second heap region.
- endif # ARCH_HAVE_HEAP2
- config GRAN
- bool "Enable Granule Allocator"
- default n
- ---help---
- Enable granule allocator support. Allocations will be aligned to the
- 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 granules. That restriction could be
- eliminated with some additional coding effort.
- 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.
- config DEBUG_GRAN
- bool "Granule Allocator Debug"
- default n
- depends on GRAN && DEBUG_FEATURES
- ---help---
- Just like DEBUG_MM, but only generates output from the gran
- allocation logic.
- config MM_PGALLOC
- bool "Enable Page Allocator"
- default n
- depends on ARCH_USE_MMU
- 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_FEATURES
- ---help---
- Just like DEBUG_MM, but only generates output from the page
- allocation logic.
- endif # MM_PGALLOC
- config MM_SHM
- bool "Shared memory support"
- default n
- depends on MM_PGALLOC && BUILD_KERNEL && EXPERIMENTAL
- ---help---
- Build in support for the shared memory interfaces shmget(), shmat(),
- shmctl(), and shmdt().
- config MM_FILL_ALLOCATIONS
- bool "Fill allocations with debug value"
- default n
- ---help---
- Fill all malloc() allocations with 0xAA. This helps
- detecting uninitialized variable errors.
- source "mm/iob/Kconfig"
|