We have recently switched to using the nRF Connect SDK. Our application is based on the "Peripheral LBS" example, and after several iterations, the code has started crashing within function mpsl_timeslot_request() during the BLE stack initialisation.
I have looked for other tickets with similar symptoms, notably this one: RE: nRF52 DK - Peripheral UART example unmodified fails if CONFIG_BT_SERVICES is enabled. , which is a good match for what we are seeing. However, although there is a suggestion that what I am seeing is a known issue, there is no resolution described in that ticket.
In summary:
- If the device is completely erased before programming, the application will crash somewhere inside mpsl_timeslot_request().
- If I program (and run) the device with some other example code, and *then* program and run our app (without doing a full erase), it will be fine.
- This applies to SDK versions 2.1.1 (as with the ticket linked above) and *also* with SDK 2.0.2
I have also tried the following:
- Erase, program and run a known-good (example) app, such as the basic "Peripheral LBS".
- Read back the flash content, and extract the region between 0x7a000 and 0x7afff, i.e. the settings region.
- Erase, program and run our app, which will fail as described.
- Program (without erasing anything) the settings region extracted above.
- Reset; our app will now run correctly.
I have switched over to SDK 2.3.1-rc1, and this appears to cure the issue.
Can you confirm that this issue has indeed been addressed in 2.3.1? At the moment I cannot tell whether the "fix" is real, or just down to luck relating to memory layout, stack usage or similar.
Also - is there a time-scale for deciding whether this release candidate will be a full release?
Thanks,
Phil Dixon.