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

SDK15.2 Bootloader does not timeout even though NRF_BL_DFU_INACTIVITY_TIMEOUT_MS is set

During a DFU on SDK15.2 the BLE connection is terminated. The NRF_BL_DFU_INACTIVITY_TIMEOUT_MS is set to 120000.

After 2 minutes, the device still has not reset and started running the application again.

This same test on SDK14.0.0 will restart the device after 2 minutes of inactivity.

Using the Keil Debugger, confirmed that inactivity_timeout() is being called after two minutes

but the call to bootloader_reset() does not recover the device.

Screenshot attached.

Parents
  • Hi Mark, 

    bootloader_reset() doesn't do the reset immediately. It will try to store the bootloader setting ( to store the DFU progress)  before triggering a reset. Normally the actual reset (inside reset_after_flash_write()) should be triggered after the write command finished (a callback from softdevice). There must be something causing the callback event not to arrive. 

    Can you reproduce the issue every time or it only happens occasionally ? 

    Have you checked if you have the same problem on SDK v15.3 ? 

    Could you check if settings_write() inside settings_backup() return NRF_SUCCESS, and reset_after_flash_write() is called ? 

Reply
  • Hi Mark, 

    bootloader_reset() doesn't do the reset immediately. It will try to store the bootloader setting ( to store the DFU progress)  before triggering a reset. Normally the actual reset (inside reset_after_flash_write()) should be triggered after the write command finished (a callback from softdevice). There must be something causing the callback event not to arrive. 

    Can you reproduce the issue every time or it only happens occasionally ? 

    Have you checked if you have the same problem on SDK v15.3 ? 

    Could you check if settings_write() inside settings_backup() return NRF_SUCCESS, and reset_after_flash_write() is called ? 

Children
No Data
Related