This section describes the memory resource requirements for an enabled and disabled S145 SoftDevice.
NVM
The NVM usage of the SoftDevice can be found in the SoftDevice properties section of the
release notes. This value corresponds to area from SD_CODE_BASE and up to
the Reserved memory partition on top of NMV in Memory resource map. The NVM usage
of the SoftDevice can be found by looking at SD_FLASH_SIZE defined in
nrf_sdm.h.
RAM
| RAM | S145 Enabled | S145 Disabled |
|---|---|---|
| SoftDevice RAM consumption | Minimum required RAM 1 + configurable resources | 0 bytes |
| APP_RAM_BASE address (minimum required value) | 0x20000080 + SoftDevice RAM consumption | 0x20000080 |
Call stack
By default, the nRF54L System on Chip (SoC) has a shared call stack with both application stack frames and SoftDevice stack frames, managed by the Main Stack Pointer (MSP).
The application configures the call stack, and the MSP gets initialized on reset to the address specified by the application vector table entry 0. In its reset vector the application might configure the CPU to use the Process Stack Pointer (PSP) in thread mode. This configuration is optional but might be required by an OS, for example, to isolate application threads and OS context memory. The application programmer must be aware that the SoftDevice uses the MSP as it is always executed in exception mode.
With each major release of an S145 SoftDevice, its maximum (worst case) call stack requirement might be updated. The SoftDevice uses the call stack when SoftDevice interrupt handlers execute. These are asynchronous to the application, so the application programmer must reserve call stack for the application in addition to the call stack requirement by the SoftDevice.
The application must reserve sufficient space to satisfy both the application and the SoftDevice stack memory requirements.
The SoftDevice does not use the Arm® Cortex®-M33 Floating-Point Unit (FPU) and does not configure any floating-point registers. S145 Memory resource requirements for call stack depicts the maximum call stack size that might be consumed by the SoftDevice when not using the FPU.
The SoftDevice uses multiple interrupt levels, as described in detail in Interrupt model and processor availability. If FPU is used by the application, the processor needs to reserve memory in the stack frame for stacking the FPU registers for each interrupt level used by the SoftDevice. This must be accounted for when configuring the total call stack size. For more information on how the use of multiple interrupt levels impacts the stack size when using the FPU, see Application Note 298 from Arm.
| Call stack | S145 Enabled | S145 Disabled |
|---|---|---|
| Maximum usage with FPU disabled | See release notes | 0 bytes |
Heap
There is no heap required by nRF54L SoftDevices. The application is free to allocate and use a heap without disrupting the SoftDevice functionality.