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

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

This page contains following sections:

Flash Memory available for application on nRF52

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
nRF5283250kB
nRF5283350kB
nRF52840256kB

RAM Memory available for application on nRF52

Allocated RAM memory for application by the processor is following:

ProcessorRAM memory
nRF52832Up to 16 kB (8 kB by default)
nRF5283372 kB
nRF52840188 kB

Peripherals accessible by stack only

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

PeripheralAssociated interrupt (from file mcu/nrf52/vendor/nrf52.h)
PowerPOWER_CLOCK_IRQn
RadioRADIO_IRQn
Timer0TIMER0_IRQn
WDTWDT_IRQn
Rtc1RTC1_IRQn
ECB (AES)ECB_IRQn
PPI (Channels 0, 1 and 2)None

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 (nRF52) and True Random Number Generator TRNG (EFR32) are available for application to use within App_init function. After App_init returns, these peripherals are 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 [2.4 GHz only, 1024/128, BGA125/QFN48]
  • EFR32FG12P432F1024G L125/M48 [2.4 GHz only, 1024/256, BGA125/QFN48]
  • EFR32FG12P433F1024G L125/M48 [2.4 GHz & SubGHz, 1024/256, BGA125/QFN48]
  • EFR32MG12P232F1024G L125/M48 [2.4 GHz only, 1024/128, BGA125/QFN48]
  • EFR32MG12P332F1024G L125/M48 [2.4 GHz only, 1024/128, BGA125/QFN48]
  • EFR32MG12P432F1024G L125/M48 [2.4 GHz only, 1024/256, BGA125/QFN48]
  • EFR32MG12P433F1024G L125/M48 [2.4 GHz & SubGHz, 1024/256, BGA125/QFN48]
  • EFR32BG12P232F1024G L125/M48 [2.4 GHz only, 1024/128, BGA125/QFN48]
  • EFR32BG12P432F1024G L125/M48 [2.4 GHz only, 1024/256, BGA125/QFN48]
  • EFR32BG12P433F1024G L125/M48 [2.4 GHz & SubGHz, 1024/256, BGA125/QFN48]
  • EFR32BG21A010F1024IM32
  • EFR32BG21A010F512IM32
  • EFR32BG21A010F768IM32
  • EFR32BG21A020F1024IM32
  • EFR32BG21A020F512IM32
  • EFR32BG21A020F768IM32
  • EFR32BG22C224F512GM32
  • EFR32BG22C224F512GM40
  • EFR32BG22C224F512GN32
  • EFR32BG22C224F512IM32
  • EFR32BG22C224F512IM40
  • BGM220PC22HNA
  • BGM220SC22HNA

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

RAM Memory available for application on EFR32

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

ProcessorRAM memory
efr32xg12pxxxf102472kB
efr32xg12pxxxf5128kB
efr32xg13pxxxf51216kB
efr32xg21xxxxf51212kB
efr32xg21xxxxf76812kB
efr32xg21xxxxf102444kB
efr32xg22xxxxf5124.5kB

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

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

These peripherals must be reserved through the API before being used and the application must initialize them each time after reserving it. In fact, the stack may configure them differently.

It is also important to avoid long reservation of theses peripherals to let the stack use them for its own purpose.

PeripheralReservation ID (from app_lib_hardware_peripheral_e)
ADC0APP_LIB_HARDWARE_PERIPHERAL_ADC

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