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

DFU - problem updating a BL of a different size (and different starting address)

Hallo

I'm using sdk12 , S130 on NRF51822, so far successfully updated application, soft device and BL, however

lately after changing the size and starting address for the DFU the BL software fails to update itself and not even returns to BL state, the device fail completely after the end of the upload (after reaching 100% transfer)

To my understanding and after some debugging it happens after comparing the new banked version,

ret_val = nrf_dfu_mbr_compare((uint32_t*)BOOTLOADER_START_ADDR, (uint32_t*)src_addr, len);

and than 

ret_val = nrf_dfu_mbr_copy_bl((uint32_t*)src_addr, len); 

that is sending a  SD_MBR_COMMAND_COPY_BL, command 

at that points that system stops completely 

would appreciate some insights, on why does this happens and can it be fixed 

Thanks !

Parents
  • Hi,

    Changing the bootloader size via DFU is not supported. Even if you were able to copy the larger bootloader in place, it still would not work as the MBR will branch to the bootloader address that is specified in UICR. And the UICR cannot be programmatically deleted (to be updated) on the nRF51, so there is absolutely no way you can achieve this with Nordic's DFU solution.

Reply
  • Hi,

    Changing the bootloader size via DFU is not supported. Even if you were able to copy the larger bootloader in place, it still would not work as the MBR will branch to the bootloader address that is specified in UICR. And the UICR cannot be programmatically deleted (to be updated) on the nRF51, so there is absolutely no way you can achieve this with Nordic's DFU solution.

Children
No Data
Related