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

Why does my Application still run if I program UICR.NRFFW[0] but leave the destination blank?

I'm debugging some corner-cases with my own DFU process and Bootloader. I believe I hit a race condition in which sd_mbr_command() was called before the source of the new Bootloader was written. Thus, the MBR copied clear flash to the Bootloader location.

However, the device restarted and ran as usual, without a Bootloader. I ran an short experiment where I added a line to erase the Bootloader when the Application starts up, and indeed, it can still reset normally.

Is it expected behavior that the MBR is "smart enough" to run the Application when UICR is programmed with a Bootloader location containing blank flash?

  • Hello,

    The MBR will always check the bootloader address to see whether there is a bootloader available. If not (if you have deleted the address) it will assume that there isn't, and it will continue to the softdevice (if there is a softdevice), which will boot up the application, or finally, boot up the application if there is no softdevice.

Related