Wirepas SDK
SDK Environment setup

As a prerequisite for this guide, you must be able to successfully build one of the provided application example from the SDK.

This page contains following sections:

Installation of SDK Environment

To ease the management of SDK environement, Wirepas maintains a docker image with all the required dependencies installed.

For more information to use it, please read guidance from Wirepas Helpdesk.

It is also possible to install requirement in your native environement but it is not described here. Requirement are listed in Github SDK main page under Requirement section.

Flashing devices

Checkout flashing guidance from Wirepas Helpdesk.

Resources on Nordic nRF52 and nRF54L

The nRF52 chip version supported by Wirepas Mesh has minimum 512 kB of NVM (flash) and 64 kB of RAM.

The nRF54L chip version supported by Wirepas Mesh has minimum 500 kB of NVM (RRAM) and 96 kB of RAM.

This page contains following sections:

NVM available for application on nRF52 and nRF54L

As stated in description of memory partitioning, the available non-volatile memory for application is limited by size of the memory area that is used commonly for application and also scratchpad image. If application size is too large, there is possibility that large scratchpad image will override application image. The default maximum size of the application has been set so that it is always safe to use scratchpad image that will contain both firmware and application.

The recommended maximum size of NVM for an application, according to processor type is following:

ProcessorNVM
nRF5283250 kB, Flash
nRF5283350 kB, Flash
nRF52840256 kB, Flash
nRF54L05256 kB, RRAM
nRF54L10256 kB, RRAM
nRF54L15256 kB, RRAM

RAM available for application on nRF52 and nRF54L

Allocated RAM for application by the processor is following:

ProcessorRAM
nRF52832Up to 16 kB (8 kB by default)
nRF5283372 kB
nRF52840188 kB
nRF54L0548 kB
nRF54L1096 kB
nRF54L15128 kB

Peripherals accessible by stack only

Some peripherals are used by the Wirepas Mesh stack and cannot be used by the application.

PeripheralAssociated interrupt nRF52Associated interrupt nRF54L
PowerPOWER_CLOCK_IRQnCLOCK_POWER_IRQn
RadioRADIO_IRQnRADIO_0_IRQn
TimerTIMER0_IRQnTIMER24_IRQn
WDTWDT_IRQnWDT30_IRQn
RTCRTC1_IRQnGRTC_0_IRQn
ECB (AES)ECB_IRQnECB00_IRQn
PPI (Channels 0, 1 and 2)NoneNone

All the internal interrupt of cortex M are handled by the stack directly (NMI, HardFault,...)

Peripherals shared between the stack and the application

Some peripherals are used by the stack but can also be accessed by the application.

Random Number Generator RNG is available for application to use within App_init function. After App_init returns, this peripheral is reserved for Wirepas Mesh stack and all initializations done in App_init may be overwritten. Application may also take the control of RNG/TRNG by initializing the peripheral in scheduled task after App_init has returned and after Wirepas Mesh stack has started. Do note that initialization must not take place within interrupt context as interrupt could be served before these peripherals are released from Wirepas Mesh stack usage.

Peripherals available for the application

All the other peripherals not listed above are free to be used by the application.

Resources on EFR32

Following chip variants (at 2.4 GHz only) are supported:

  • EFR32FG12P232F1024G L125/M48 [1024/128, BGA125/QFN48]
  • EFR32FG12P432F1024G L125/M48 [1024/256, BGA125/QFN48]
  • EFR32FG12P433F1024G L125/M48 [1024/256, BGA125/QFN48]
  • EFR32MG12P232F1024G L125/M48 [1024/128, BGA125/QFN48]
  • EFR32MG12P332F1024G L125/M48 [1024/128, BGA125/QFN48]
  • EFR32MG12P432F1024G L125/M48 [1024/256, BGA125/QFN48]
  • EFR32MG12P433F1024G L125/M48 [1024/256, BGA125/QFN48]
  • EFR32BG12P232F1024G L125/M48 [1024/128, BGA125/QFN48]
  • EFR32BG12P432F1024G L125/M48 [1024/256, BGA125/QFN48]
  • EFR32BG12P433F1024G L125/M48 [1024/256, BGA125/QFN48]
  • EFR32BG21A010F1024IM32
  • EFR32BG21A010F512IM32
  • EFR32BG21A010F768IM32
  • EFR32BG21A020F1024IM32
  • EFR32BG21A020F512IM32
  • EFR32BG21A020F768IM32
  • EFR32BG22C224F512GM32
  • EFR32BG22C224F512GM40
  • EFR32BG22C224F512GN32
  • EFR32BG22C224F512IM32
  • EFR32BG22C224F512IM40
  • BGM220PC22HNA
  • BGM220SC22HNA
  • EFR32MG24B310F1536IM48-B
  • EFR32MG24B210F1536IM48-B
  • EFR32MG24B310F1536IM48-B [10 dBm 1536/256 SV=High QFN48]
  • EFR32MG24B220F1536IM48-B [19.5 dBm 1536/256 SV=High QFN48]
  • EFR32MG24B210F1536IM48-B [10 dBm 1536/256 SV=High QFN48]
  • EFR32MG24B120F1536IM48-B [19.5 dBm 1536/256 SV=High QFN48]
  • EFR32MG24B110F1536IM48-B [10 dBm 1536/256 SV=High QFN48]
  • EFR32MG24B020F1536IM48-B [19.5 dBm 1536/256 SV=High QFN48]
  • EFR32MG24B020F1536IM40-B [19.5 dBm 1536/256 SV=High QFN40]
  • EFR32MG24B020F1024IM48-B [19.5 dBm 1024/128 SV=High QFN48]
  • EFR32MG24B010F1536IM48-B [10 dBm 1536/256 SV=High QFN48]
  • EFR32MG24B010F1536IM40-B [10 dBm 1536/256 SV=High QFN40]
  • EFR32MG24B010F1024IM48-B [10 dBm 1024/128 SV=High QFN48]
  • EFR32MG24A420F1536IM48-B [19.5 dBm 1536/256 SV=Mid QFN48]
  • EFR32MG24A420F1536IM40-B [19.5 dBm 1536/256 SV=Mid QFN40]
  • EFR32MG24A410F1536IM48-B [10 dBm 1536/256 SV=Mid QFN48]
  • EFR32MG24A410F1536IM40-B [10 dBm 1536/256 SV=Mid QFN40]
  • EFR32MG24A110F1024IM48-B [10 dBm 1024/128 SV=Mid QFN48]
  • EFR32MG24A021F1024IM40-B [19.5 dBm 1024/128 SV=Mid QFN40]
  • EFR32MG24A020F1536IM48-B [19.5 dBm 1536/192 SV=Mid QFN48]
  • EFR32MG24A020F1536IM40-B [19.5 dBm 1536/192 SV=Mid QFN40]
  • EFR32MG24A020F1024IM48-B [19.5 dBm 1024/128 SV=Mid QFN48]
  • EFR32MG24A020F1024IM40-B [19.5 dBm 1024/128 SV=Mid QFN40]
  • EFR32MG24A010F1536IM48-B [10 dBm 1536/192 SV=Mid QFN48]
  • EFR32MG24A010F1536IM40-B [10 dBm 1536/192 SV=Mid QFN40]
  • EFR32MG24A010F1024IM48-B [10 dBm 1024/128 SV=Mid QFN48]
  • EFR32MG24A010F1024IM40-B [10 dBm 1024/128 SV=Mid QFN40]

This page contains following sections:

Flash Memory available for application on EFR32

As stated in description of memory partitioning, the available flash memory for application is limited by size of the memory area that is used commonly for application and also scratchpad image. If application size is too large, there is possibility that large scratchpad image will override application image. The default maximum size of the application has been set so that it is always safe to use scratchpad image that will contain both firmware and application.

The recommended maximum size of flash memory for an application, according to processor type is following:

ProcessorFlash memory
efr32xg12pxxxf1024256kB
efr32xg12pxxxf51250kB
efr32xg21xxxxf51250kB
efr32xg21xxxxf76850kB
efr32xg21xxxxf1024256kB
efr32xg22xxxxf51250kB
efr32xg24xxxxf1024256kB
efr32xg24xxxxf1536_196256kB
efr32xg24xxxxf1536_256256kB

RAM Memory available for application on EFR32

Allocated RAM memory for application, by the processor is following:

ProcessorRAM memory
efr32xg12pxxxf102472kB
efr32xg12pxxxf5128kB
efr32xg21xxxxf51212kB
efr32xg21xxxxf76812kB
efr32xg21xxxxf102444kB
efr32xg22xxxxf5124.5kB
efr32xg24xxxxf102472kB
efr32xg24xxxxf1536_196140kB
efr32xg24xxxxf1536_256155kB

Peripherals accessible by stack only

Some peripherals are used by the Wirepas Mesh stack and cannot be used by the application.

PeripheralAssociated interrupt (from chip vendor files)
TIMER0TIMER0_IRQn
RTCCRTCC_IRQn
WDOG0WDOG0_IRQn
CMUCMU_IRQn
CRYPTO0CRYPTO0_IRQn

All the internal interrupt of cortex M are handled by the stack directly (NMI, HardFault,...)

Peripherals shared between the stack and the application

True Random Number Generator TRNG is available for application to use within App_init function. After App_init returns, this peripheral is reserved for Wirepas Mesh stack and all initializations done in App_init may be overwritten. Application may also take the control of RNG/TRNG by initializing the peripheral in scheduled task after App_init has returned and after Wirepas Mesh stack has started. Do note that initialization must not take place within interrupt context as interrupt could be served before this peripheral is released from Wirepas Mesh stack usage.

Peripherals available for the application

All the other peripherals not listed above are free to be used by the application.

Related Material

[3] WP-RM-108 - OTAP Reference Manual

[4] https://github.com/wirepas/wm-sdk/blob/master/source/reference_apps/dualmcu_app/api/DualMcuAPI.md