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
  • If there is only the SoftDevice and the bootloader present, then you should not reach nrf_bootloader_app_start in nrf_dfu.c. If you read the bank 0 code at 0x0007F020 it should be 0x00000000. After the DFU of the applications it should be set to 0x00000001 and the nrf_dfu_app_is_valid check should return true.

     if (nrf_dfu_app_is_valid())
        {
            NRF_LOG_INFO("Jumping to: 0x%08x\r\n", MAIN_APPLICATION_START_ADDR);
            nrf_bootloader_app_start(MAIN_APPLICATION_START_ADDR);
        }
    
Reply
  • If there is only the SoftDevice and the bootloader present, then you should not reach nrf_bootloader_app_start in nrf_dfu.c. If you read the bank 0 code at 0x0007F020 it should be 0x00000000. After the DFU of the applications it should be set to 0x00000001 and the nrf_dfu_app_is_valid check should return true.

     if (nrf_dfu_app_is_valid())
        {
            NRF_LOG_INFO("Jumping to: 0x%08x\r\n", MAIN_APPLICATION_START_ADDR);
            nrf_bootloader_app_start(MAIN_APPLICATION_START_ADDR);
        }
    
Children
No Data
Related