Wirepas SDK
|
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:
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.
Checkout flashing guidance from Wirepas Helpdesk.
The nRF52 chip version supported by Wirepas Mesh has minimum 512kB of flash and 64kB of RAM.
This page contains following sections:
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:
Processor | Flash memory |
---|---|
nRF52832 | 50kB |
nRF52833 | 50kB |
nRF52840 | 256kB |
Allocated RAM memory for application by the processor is following:
Processor | RAM memory |
---|---|
nRF52832 | Up to 16 kB (8 kB by default) |
nRF52833 | 72 kB |
nRF52840 | 188 kB |
Some peripherals are used by the Wirepas Mesh stack and cannot be used by the application.
Peripheral | Associated interrupt (from file mcu/nrf52/vendor/nrf52.h) |
---|---|
Power | POWER_CLOCK_IRQn |
Radio | RADIO_IRQn |
Timer0 | TIMER0_IRQn |
WDT | WDT_IRQn |
Rtc1 | RTC1_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,...)
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.
All the other peripherals not listed above are free to be used by the application.
Following chip variants (at 2.4 GHz only) are supported:
This page contains following sections:
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:
Processor | Flash memory |
---|---|
efr32xg12pxxxf1024 | 256kB |
efr32xg12pxxxf512 | 50kB |
efr32xg21xxxxf512 | 50kB |
efr32xg21xxxxf768 | 50kB |
efr32xg21xxxxf1024 | 256kB |
efr32xg22xxxxf512 | 50kB |
Allocated RAM memory for application, by the processor is following:
Processor | RAM memory |
---|---|
efr32xg12pxxxf1024 | 72kB |
efr32xg12pxxxf512 | 8kB |
efr32xg13pxxxf512 | 16kB |
efr32xg21xxxxf512 | 12kB |
efr32xg21xxxxf768 | 12kB |
efr32xg21xxxxf1024 | 44kB |
efr32xg22xxxxf512 | 4.5kB |
Some peripherals are used by the Wirepas Mesh stack and cannot be used by the application.
Peripheral | Associated interrupt (from chip vendor files) |
---|---|
TIMER0 | TIMER0_IRQn |
RTCC | RTCC_IRQn |
WDOG0 | WDOG0_IRQn |
CMU | CMU_IRQn |
CRYPTO0 | CRYPTO0_IRQn |
All the internal interrupt of cortex M are handled by the stack directly (NMI, HardFault,...)
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.
Peripheral | Reservation ID (from app_lib_hardware_peripheral_e) |
---|---|
ADC0 | APP_LIB_HARDWARE_PERIPHERAL_ADC |
All the other peripherals not listed above are free to be used by the application.
[3] WP-RM-108 - OTAP Reference Manual
[4] https://github.com/wirepas/wm-sdk/blob/master/source/reference_apps/dualmcu_app/api/DualMcuAPI.md