Part V: Kernel Configuration

This chapter details the available configuration options, covering system parameters, scheduling settings, memory protection, interrupt handling, and enabled services. QuantumRT settings are defined at compile-time and must be adjusted before building the kernel. Developers can:

  • Enable or disable kernel features (e.g., FPU support, caching).

  • Adjust system parameters (e.g., thread limits, total memory allocated for thread stacks).

  • Define memory protection settings (e.g., MPU regions).

Configuration Options

Configuration options for generic ARM Cortex-M3 microcontrollers.

Allows configuring processor core, MPU, FPU, System Timer, scheduler, interrupt handling, IPC and kernel.

Copyright

Copyright (c) 2025 TNX Software Ltd. All rights reserved. Licensed under the terms of the QuantumRT Kernel License. the LICENSE file in the root of this package for details.

Defines

QRT_CFG_CPU_CORE

Options:

  • QRT_CPU_CORTEX_M0P

  • QRT_CPU_CORTEX_M3

  • QRT_CPU_CORTEX_M4

  • QRT_CPU_CORTEX_M7

  • QRT_CPU_CORTEX_M23

  • QRT_CPU_CORTEX_M33

  • QRT_CPU_CORTEX_M35P

  • QRT_CPU_CORTEX_M52

  • QRT_CPU_CORTEX_M55

  • QRT_CPU_CORTEX_M85

QRT_CFG_ICACHE_ENABLE

Enable instruction cache (if supported by CPU core)

Options:

  • 0: Instruction cache disabled

  • 1: Instruction cache enabled

QRT_CFG_DCACHE_ENABLE

Enable data cache (if supported by CPU core)

Options:

  • 0: Data cache disabled

  • 1: Data cache enabled

QRT_CFG_THREAD_LIMIT

Maximum number of threads.

QRT_CFG_CLEANUP_LIMIT

Maximum cleanup handlers per thread.

QRT_CFG_STACK_POOL_SIZE

Total stack pool size in bytes.

QRT_CFG_THREAD_STACK_DEFAULT

Default thread stack size in bytes.

QRT_CFG_THREAD_STACK_LIMIT_CHECK

Enable stack limit checking for threads (ARMv8-M only)

Options:

  • 0: Stack limit checking disabled

  • 1: Stack limit checking enabled

QRT_CFG_THREAD_NAME_ENABLE

Enable thread naming support.

Options:

  • 0: Thread naming disabled

  • 1: Thread naming enabled

QRT_CFG_SCHED_TIME_SLICE

Default time slice in milliseconds.

QRT_CFG_IDLE_STACK_SIZE

Idle thread stack size in bytes.

QRT_CFG_IDLE_SLEEP_ENABLE

Enable sleep mode in idle thread.

Options:

  • 0: Sleep disabled (most clock signals stopped)

  • 1: Sleep enabled (CPU enters sleep mode when idle)

QRT_CFG_IDLE_DEEP_SLEEP_ENABLE

Enable deep sleep mode in idle thread. Overrides configuration option QRT_CFG_IDLE_SLEEP_ENABLE.

Options:

  • 0: Deep sleep disabled (all clock signals stopped)

  • 1: Deep sleep enabled (CPU enters deep sleep mode when idle)

QRT_CFG_ATOMIC_DISABLE_IRQ

Atomic operation method.

Options:

  • 0: Use LDREX/STREX instructions for atomic operations

  • 1: Disable interrupts for atomic operations

QRT_CFG_MPU_ENABLE

Enable Memory Protection Unit support.

Options:

  • 0: MPU disabled (all memory accessible)

  • 1: MPU enabled (enforces memory access restrictions)

QRT_CFG_MPU_ENTRIES

Number of MPU regions to configure.

QRT_CFG_TZ_SECURE_WORLD

TrustZone configuration (ARMv8-M only)

Options:

  • 0: Running in Non-Secure World

  • 1: Running in Secure World

QRT_CFG_SEMAPHORE_ENABLE

Enable semaphore support.

Options:

  • 0: Semaphores disabled

  • 1: Semaphores enabled

QRT_CFG_MUTEX_ENABLE

Enable mutex support.

Options:

  • 0: Mutexes disabled

  • 1: Mutexes enabled

QRT_CFG_MUTEX_LIST_SIZE

Maximum mutexes a thread can hold simultaneously.

QRT_CFG_MESSAGE_QUEUE_ENABLE

Enable message queue support.

Options:

  • 0: Message queues disabled

  • 1: Message queues enabled

QRT_CFG_MESSAGE_QUEUE_LIMIT

Maximum number of message queues.

QRT_CFG_MESSAGE_QUEUE_NAME_LIMIT

Maximum message queue name length.

QRT_CFG_TIMER_ENABLE

Enable software timer support.

Options:

  • 0: Software timers disabled

  • 1: Software timers enabled

QRT_CFG_TIMER_LIMIT

Maximum number of software timers.

QRT_CFG_ERRNO_ENABLE

Enable errno support.

Options:

  • 0: errno disabled

  • 1: errno enabled

QRT_CFG_DEFER_ENABLE

Enable deferred calls.

Options:

  • 0: Deferred calls disabled

  • 1: Deferred calls enabled

QRT_CFG_DEFER_LIMIT

Maximum number of deferred interrupt calls.

QRT_CFG_SYSCALL_EXT_ENABLE

Enable System Call Extension support (requires MPU)

Options:

  • 0: System Call Extensions disabled

  • 1: System Call Extensions enabled

QRT_CFG_SYSCALL_EXT_LIMIT

Maximum number of registered System Call Extensions.

QRT_CFG_KERNEL_HEAP_SIZE

Kernel heap size in bytes.

QRT_CFG_FPU_ENABLE

Enable Floating-Point Unit support.

Options:

  • 0: FPU disabled (no floating-point support)

  • 1: FPU enabled (floating-point operations supported)

QRT_CFG_FPU_STACK_ENABLE

Enable FPU context stacking.

Options:

  • 0: Never save FPU context (single-thread FPU use only)

  • 1: Save FPU context on context switches (multi-thread FPU support)