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?