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

Using the DFU SDK 12.1 with a BLE command to jump to 'bootloader' works every other time with nordic connect app

We have been using the DFU that came with the sdk 12.1 with a modification (essentially removing the button from the DFU code). We currently send an application command that will tell the code to 'jump' to the bootloader. This works great. Once the app command is reeived the device begins advertising 'DFUTarg' I use the nrf connect android app to load the .zip file.

It works the first time, and every odd number time after; hence the second time of jumping back to the bootloader it will appear as if the app was loaded properly and nrf conenct will state the app was successfully loaded but when I scan the device still advertises as DFUTarg. If I try to load again, it will say successfully loaded and will advertise with our custom name.

We have the watchdog timer enabled in the application and following some other posts I added NRF_WDT->RR[0] = WDT_RR_RR_Reload; to the wait_for_event loop in the DFU to pet the dog.

Any suggestions?

Parents
  • I've done some testing with the bootloader where I initialize and start the WDT right after entering main(). I am not seeing any issues with a WDT timeout interval of 2 seconds, so I do not think you should be breaking any timing requirements in the bootloader. When does the failures occur? I would expect that you sometimes could run into some issues as the device is jumping from application mode to bootloader mode, i.e. if you jump at the end of the WDT interval in the application then the WDT might expire before you reach the wait_for_event() loop.

Reply
  • I've done some testing with the bootloader where I initialize and start the WDT right after entering main(). I am not seeing any issues with a WDT timeout interval of 2 seconds, so I do not think you should be breaking any timing requirements in the bootloader. When does the failures occur? I would expect that you sometimes could run into some issues as the device is jumping from application mode to bootloader mode, i.e. if you jump at the end of the WDT interval in the application then the WDT might expire before you reach the wait_for_event() loop.

Children
No Data
Related