This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

FDS Writing Issue with FreeRTOS and Softdevice

Hello,

I am currently trying to get a project working that uses FDS, but I am having trouble getting the writing and updating working.

The peripherals in my project are FDS, FreeRTOS, the Soft Device, BLE, SPI, and TWI. 

The issue I am facing lies within the NRF_SDH_DISPATCH_MODEL config in the sdk_config.h

// <o> NRF_SDH_DISPATCH_MODEL
 

// <i> NRF_SDH_DISPATCH_MODEL_INTERRUPT: SoftDevice events are passed to the application from the interrupt context.
// <i> NRF_SDH_DISPATCH_MODEL_APPSH: SoftDevice events are scheduled using @ref app_scheduler.
// <i> NRF_SDH_DISPATCH_MODEL_POLLING: SoftDevice events are to be fetched manually.
// <0=> NRF_SDH_DISPATCH_MODEL_INTERRUPT 
// <1=> NRF_SDH_DISPATCH_MODEL_APPSH 
// <2=> NRF_SDH_DISPATCH_MODEL_POLLING 

#ifndef NRF_SDH_DISPATCH_MODEL
#define NRF_SDH_DISPATCH_MODEL 0
#endif

When NRF_SDH_DISPATCH_MODEL is set to 2 and the softdevice is enabled with nrf_sdh_enable_request(), the FDS writing/updating fails with the error of FDS_ERR_CRC_CHECK_FAILED. 

For reference, this is the piece of the sdk_config refers to the meaning of this check failing

// <o> FDS_CRC_CHECK_ON_WRITE  - Perform a CRC check on newly written records.
 

// <i> Perform a CRC check on newly written records.
// <i> This setting can be used to make sure that the record data was not altered while being written to flash.
// <1=> Enabled 
// <0=> Disabled 

#ifndef FDS_CRC_CHECK_ON_WRITE
#define FDS_CRC_CHECK_ON_WRITE 0
#endif

When NRF_SDH_DISPATCH_MODEL is set to 0, the FDS writing/updating works, but once FreeRTOS is included into the project, there is a compiling issue that I am unsure how to solve. 

The compiling error is: multiple definition of `SWI2_EGU2_IRQHandler' at components/softdevice/common/nrf_sdh_freertos.c:62 and components/softdevice/common/nrf_sdh.c:366 .

What possible solutions would there be in order for me to be able to use FDS properly and still have all my peripherals included and working?

Either a solution that fixes the compiling issue or a solution that fixes FDS writing/updating?

Related