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

DFU Update OTA of an application with ble secure bootloader works only once

Hi, I try to use the dfu update OTA with ble secure bootloader. If the Flash is erased and only the SD v5.0.0 and the own Bootloader are programmed a update OTA is working fine (using nrf Connect). After that, I tried to update the same APP.HEX file again and now the following error occurs:

[DFU] Remote DFU error: OPERATION FAILED

How can that be ???

Here my development environment:

GCC
NRF52
SDK14
SD5.0.0
Own ble_app_blinky (APP:HEX)
Own bootloader_secure_ble
Own private key

Thanks, Boris

Parents
  • I have found the reason of the error. The .evt_andler, .start_addr and .end_addr are not initialized (in file nrf_dfu_flash.c) at the second try. NRF_FSTORAGE_DEF(nrf_fstorage_t m_fs) = { .evt_handler = dfu_fstorage_evt_handler, .start_addr = MBR_SIZE, .end_addr = BOOTLOADER_SETTINGS_ADDRESS + CODE_PAGE_SIZE };

    If I delete NRF_FSTORAGE_DEF it work fine (nrf_fstorage_t m_fs = .....).

Reply
  • I have found the reason of the error. The .evt_andler, .start_addr and .end_addr are not initialized (in file nrf_dfu_flash.c) at the second try. NRF_FSTORAGE_DEF(nrf_fstorage_t m_fs) = { .evt_handler = dfu_fstorage_evt_handler, .start_addr = MBR_SIZE, .end_addr = BOOTLOADER_SETTINGS_ADDRESS + CODE_PAGE_SIZE };

    If I delete NRF_FSTORAGE_DEF it work fine (nrf_fstorage_t m_fs = .....).

Children
No Data
Related