Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs

call nrf_dfu_mbr_init_sd() in app cause mcu crash

Because I forgot to jump to the SoftDevice address (0x1000) in the bootloader and instead jumped directly to the application, I am unable to properly use the SoftDevice functionalities in my app.

I previously consulted the community, and an engineer suggested calling nrf_dfu_mbr_init_sd(); in the main function to compensate for not jumping to the SoftDevice.

Initially, calling this function at the beginning of main() seemed to work. However, after some time, I found that it conflicts with certain delay functions such as nrf_delay_ms(), causing the system to crash.

I would like to ask:

Is calling nrf_dfu_mbr_init_sd(); in the application a valid solution?

Will this approach introduce any side effects?

Are there any alternative solutions that do not have such side effects?

by the way:

How can I determine in the application whether execution was transferred from the bootloader or from the SoftDevice?

Related