Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Handle FPU IRQ with FreeRTOS and SDK 14.2.0

I am in the process of porting a current production application from SDK 13.0.0 to SDK 14.2.0  https://devzone.nordicsemi.com/f/nordic-q-a/39494/dfu-migration-sdk-13-0-0-s132-sd-4-0-3-to-sdk-14-2-0-s132-sd-5-0-0 and I noticed the current was high due the the FPU interrupt not being handled.  We use FreeRTOS configured for tickless idle in our designs and when I checked the port_cmsis_systick.c file between SDK 13.0.0 and SDK 14.2.0 I noticed that

#if(__FPU_USED == 1)
              __set_FPSCR(__get_FPSCR()  & ~(FPU_EXCEPTION_MASK));
              (void) __get_FPSCR();
              NVIC_ClearPendingIRQ(FPU_IRQn);
#endif

was missing from vPortSuppressTicksAndSleep().  It looks like this would be handled if I used the nrf_pwr_mgmt library in SDK 14.2.0 but this library doesn't seem compatible with FreeRTOS in tickless mode since it calls sd_app_evt_wait().  The example HRS with FreeRTOS also doesn't call nrf_pwr_mgmt.  So my question is what is the recommend way to handle the FPU interrupt when using FreeRTOS with tickless idle enabled?

Thanks!

Related