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

sd_softdevice_enable return ram address instead of error code.

The following is loaded into flash on the nRF52840:
Bootloader: 0xe0000
Application: 0x27000
SOFTDEVICE S140: 0x1000
MBR at 0x0000

Bootloader starts, waits 5 sec and runs the following:
sd_softdevice_vector_table_base_set(0x27000);
nrf_dfu_mbr_irq_forward_address_set(); /* Forward irq from mbr to softdevice */
app_start(0x27000);

Program counter arrives at the application.

If the application calls any sd_* functions the function will return some RAM address: ex: 0x2003ffbc
An example function could be:
uint32_t err_code:
sd_mbr_command_t mbr_cmd = { .command = SD_MBR_COMMAND_INIT_SD};
err_code = sd_mbr_command(&mbr_cmd);

err_code will have the value: 0x2003ffd0

If I remove the bootloader everything runs as expected.
I cannot find any return code which matches the 0x2003ffbc so it must be a RAM address.

Related