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
  • Here my workaround: In file nrf_dfu_flash.c

    // original code //NRF_FSTORAGE_DEF(nrf_fstorage_t m_fs) = ......

    // original code (decoded)
    //nrf_fstorage_t m_fs attribute ((section( "." "fs_data"))) attribute((used)) = .....

    // workaround code
    nrf_fstorage_t m_fs =
    {
    .evt_handler = dfu_fstorage_evt_handler,
    .start_addr = MBR_SIZE,
    .end_addr = BOOTLOADER_SETTINGS_ADDRESS + CODE_PAGE_SIZE
    };

    I don't know why, but it works with this workaround.

Reply
  • Here my workaround: In file nrf_dfu_flash.c

    // original code //NRF_FSTORAGE_DEF(nrf_fstorage_t m_fs) = ......

    // original code (decoded)
    //nrf_fstorage_t m_fs attribute ((section( "." "fs_data"))) attribute((used)) = .....

    // workaround code
    nrf_fstorage_t m_fs =
    {
    .evt_handler = dfu_fstorage_evt_handler,
    .start_addr = MBR_SIZE,
    .end_addr = BOOTLOADER_SETTINGS_ADDRESS + CODE_PAGE_SIZE
    };

    I don't know why, but it works with this workaround.

Children
No Data
Related