This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

DFU Bootloader hangs on sd_softdevice_vector_table_base_set

I have implemented a boot loader for DFU based on the sdk v6.1 DFU project. After a when an upgrade is triggered within the application soft reset by the application:

    err_code = sd_power_gpregret_clr(0xff);
    APP_ERROR_CHECK(err_code);
    err_code = sd_power_gpregret_set(BOOTLOADER_DFU_START);
    APP_ERROR_CHECK(err_code); 	
    NVIC_SystemReset();

The boot loader, which is basically a copy of the sdk example, then within ble_stack_init() calls sd_softdevice_vector_table_base_set() and hangs in the SVC_Handler callback in arm_startup_nrf51.s

When cold booting the device, the boot loader runs flawless.

Am I missing some step in the reset procedure?

Should I have a special case in the boot loader to detect soft reset?

Parents
  • [EDITED] Hi TEJ,

    It's our modification with the bootloader. Now the bootloader can be triggered directly from the application. The softdevice will not be reinitialized when bootloader starts if it's jumped from the application that's why you got a hardfault because in your case you reset the chip and the softdevice is disabled. So in order to start the bootloader from application NVIC_SystemReset() should not be called , instead please follow this documentation

Reply
  • [EDITED] Hi TEJ,

    It's our modification with the bootloader. Now the bootloader can be triggered directly from the application. The softdevice will not be reinitialized when bootloader starts if it's jumped from the application that's why you got a hardfault because in your case you reset the chip and the softdevice is disabled. So in order to start the bootloader from application NVIC_SystemReset() should not be called , instead please follow this documentation

Children
Related