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

SOFTDEVICE: ASSERTION FAILED pc: 0x00025B94

Hi all

So i had a working running example on SDK Thread and Zigbee V3.0.0.
This flavor used the softdevice s140_nrf52_6.1.1_softdevice.hex
I've migrated to the new SDK being nRF5_SDK_for_Thread_and_Zigbee_v4_1_0.
I now use the soft device s140_nrf52_7.0.1_softdevice.hex.

I have a custom PCB with 2 NRF52840 modules on them from Fanstel.
Both have a crystal oscillator circuit for the LFCLK. 
The 32KHz crystal has a 12pF capacitance, with 2 12pF load caps at the ends.

The application was running smoothly with the SDK V3.0.0.
The application is a BLE + OT combination. I also have the LIBUARTe running.
I've used the SDK variant with the USB Transport layer, so i have UART0 for debug logging and UART1 for the libUARTe for RS485.
I've migrated the SDK to V4.1.0, and was still flashing the old softdevice (eg. 6.1.1) to it.
When the application ran, i got SOFTDEVICE: ASSERTION FAILED crashes.

I then migrated to the new softdevice eg. V7.0.1.
The assertions still come up. I've added pc logging and the error_handler fails at PC 0x00025B94.
Looking at this forum i've found 2 NRF_RAAL_TIMESLOT_DEFAULT_SAFE_MARGIN_US bug entries with suggests increasing the margin on the LFCLK.

Changing the NRF_RAAL_TIMESLOT_DEFAULT_SAFE_MARGIN_US from 3 to 20 or 35 has no effect.

While logging i get this result:

<error> app: SOFTDEVICE: ASSERTION FAILED pc: 0x00025B94
<error> app: SOFTDEVICE: INVALID MEMORY ACCESS

My suspicion is that it has to do with the SDK, since both softdevices V6.1.1 and V7.0.1 have this behaviour.
I cannot look at the .MAP file for the soft device to see where it crashes.
Anyone has some pointers in going forward ?

Related