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

Single bin and dat files that contain sd+bl+app

Hello,

I know that you can generate a single zip that contains dat and bin files for sd+bl and dat and bin files for the app.

Is it possible to generate a single dat and bin files that contains sd+bl+app?

I will modify the bootloader to handle it.

All the best,

Ofer.

  • Hi Ofer, 

    After nrf_dfu_mbr_copy_bl() call the MBR will swap the old bootloader with the new bootloader and trigger a reset. After that you should see the new bootloader running. 
    You would then modify the bootloader setting so that the new bootloader would detect that there is an image for the application and it would need to swap the application. 
    I would assume that you know how to compile the bootloader with no optimization and know how to step into the code of the bootloader and debug.

  • Hi Hung,

    I was able to do the full DFU. I added the NRF_DFU_BANK_VALID_SD_BL_APP case where it activates the application first, then the SD and then the BL. 

    I generated my DFU package with a release version of my bootloader.

    When I test from release bootloader to release bootloader it works but when I try from debug bootloader to  release bootloader it fails at the bootloader section.

    Here is the debug log:

    INF app : Inside main
    DBG app : In nrf_bootloader_init
    DBG nrf_dfu_settings: Calling nrf_dfu_settings_init()...
    DBG nrf_dfu_flash : Initializing nrf_fstorage_nvmc backend.
    DBG nrf_dfu_settings: Using settings page.
    DBG nrf_dfu_settings: Would have copied forbidden parts from backup page. Skipping.
    DBG nrf_dfu_settings: Destination settings are identical to source, write not needed. Skipping.
    INF nrf_dfu_settings: Backing up settings page to address 0xFE000.
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FE000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FE000, len=1 pages), queue usage: 0
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FE000, src=0x20009560, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FE000, pending 0
    INF app : Current bank is set to Bank1
    INF app : Postvalidating update after reset.
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FF000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FF000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FF000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FF000, src=0x200091E0, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FF000, pending 0
    INF nrf_dfu_settings: Backing up settings page to address 0xFE000.
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FE000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FE000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FE000, src=0x20009560, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FE000, pending 0
    DBG app : Enter nrf_bootloader_fw_activate
    DBG app : Valid SD + BL + APP
    DBG app : Enter nrf_dfu_app_continue
    INF nrf_bootloader_wdt: WDT is not enabled
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x00027000, len=8 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x00027000, pending 0
    DBG app : Copying 0xAA000 to 0x27000, size: 0x8000
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x00027000, src=0x000AA000, len=32768 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x00027000, pending 0
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FF000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FF000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FF000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FF000, src=0x200091E0, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FF000, pending 0
    INF nrf_dfu_settings: Backing up settings page to address 0xFE000.
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FE000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FE000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FE000, src=0x20009560, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x0002F000, len=8 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x0002F000, pending 0
    DBG app : Copying 0xB2000 to 0x2F000, size: 0x8000
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x0002F000, src=0x000B2000, len=32768 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x0002F000, pending 0
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FF000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FF000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FF000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FF000, src=0x200091E0, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FF000, pending 0
    INF nrf_dfu_settings: Backing up settings page to address 0xFE000.
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FE000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FE000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FE000, src=0x20009560, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x00037000, len=8 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x00037000, pending 0
    DBG app : Copying 0xBA000 to 0x37000, size: 0x8000
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x00037000, src=0x000BA000, len=32768 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x00037000, pending 0
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FF000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FF000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FF000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FF000, src=0x200091E0, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FF000, pending 0
    INF nrf_dfu_settings: Backing up settings page to address 0xFE000.
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FE000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FE000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FE000, src=0x20009560, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x0003F000, len=8 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x0003F000, pending 0
    DBG app : Copying 0xC2000 to 0x3F000, size: 0x8000
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x0003F000, src=0x000C2000, len=32768 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x0003F000, pending 0
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FF000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FF000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FF000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FF000, src=0x200091E0, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FF000, pending 0
    INF nrf_dfu_settings: Backing up settings page to address 0xFE000.
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FE000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FE000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FE000, src=0x20009560, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x00047000, len=8 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x00047000, pending 0
    DBG app : Copying 0xCA000 to 0x47000, size: 0x8000
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x00047000, src=0x000CA000, len=32768 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x00047000, pending 0
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FF000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FF000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FF000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FF000, src=0x200091E0, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FF000, pending 0
    INF nrf_dfu_settings: Backing up settings page to address 0xFE000.
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FE000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FE000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FE000, src=0x20009560, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x0004F000, len=8 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x0004F000, pending 0
    DBG app : Copying 0xD2000 to 0x4F000, size: 0x8000
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x0004F000, src=0x000D2000, len=32768 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x0004F000, pending 0
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FF000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FF000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FF000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FF000, src=0x200091E0, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FF000, pending 0
    INF nrf_dfu_settings: Backing up settings page to address 0xFE000.
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FE000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FE000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FE000, src=0x20009560, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x00057000, len=8 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x00057000, pending 0
    DBG app : Copying 0xDA000 to 0x57000, size: 0x8000
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x00057000, src=0x000DA000, len=32768 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x00057000, pending 0
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FF000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FF000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FF000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FF000, src=0x200091E0, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FF000, pending 0
    INF nrf_dfu_settings: Backing up settings page to address 0xFE000.
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FE000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FE000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FE000, src=0x20009560, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x0005F000, len=6 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x0005F000, pending 0
    DBG app : Copying 0xE2000 to 0x5F000, size: 0x53E0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x0005F000, src=0x000E2000, len=21472 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x0005F000, pending 0
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FF000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FF000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FF000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FF000, src=0x200091E0, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FF000, pending 0
    INF nrf_dfu_settings: Backing up settings page to address 0xFE000.
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FE000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FE000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FE000, src=0x20009560, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FE000, pending 0
    DBG app : Setting app as valid
    DBG app : Enter nrf_dfu_sd_bl_continue
    DBG app : Enter nrf_bootloader_dfu_sd_continue
    DBG app : Updating SD. Old SD ver: 7, New ver: 7
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x00001000, len=8 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x00001000, pending 0
    DBG app : Copying 0x7E000 to 0x1000, size: 0x8000
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x00001000, src=0x0007E000, len=32768 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x00001000, pending 0
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FF000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FF000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FF000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FF000, src=0x200091E0, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FF000, pending 0
    INF nrf_dfu_settings: Backing up settings page to address 0xFE000.
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FE000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FE000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FE000, src=0x20009560, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x00009000, len=8 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x00009000, pending 0
    DBG app : Copying 0x86000 to 0x9000, size: 0x8000
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x00009000, src=0x00086000, len=32768 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x00009000, pending 0
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FF000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FF000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FF000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FF000, src=0x200091E0, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FF000, pending 0
    INF nrf_dfu_settings: Backing up settings page to address 0xFE000.
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FE000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FE000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FE000, src=0x20009560, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x00011000, len=8 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x00011000, pending 0
    DBG app : Copying 0x8E000 to 0x11000, size: 0x8000
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x00011000, src=0x0008E000, len=32768 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x00011000, pending 0
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FF000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FF000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FF000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FF000, src=0x200091E0, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FF000, pending 0
    INF nrf_dfu_settings: Backing up settings page to address 0xFE000.
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FE000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FE000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FE000, src=0x20009560, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x00019000, len=8 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x00019000, pending 0
    DBG app : Copying 0x96000 to 0x19000, size: 0x8000
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x00019000, src=0x00096000, len=32768 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x00019000, pending 0
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FF000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FF000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FF000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FF000, src=0x200091E0, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FF000, pending 0
    INF nrf_dfu_settings: Backing up settings page to address 0xFE000.
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FE000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FE000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FE000, src=0x20009560, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x00021000, len=6 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x00021000, pending 0
    DBG app : Copying 0x9E000 to 0x21000, size: 0x6000
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x00021000, src=0x0009E000, len=24576 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x00021000, pending 0
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FF000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FF000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FF000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FF000, src=0x200091E0, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FF000, pending 0
    INF nrf_dfu_settings: Backing up settings page to address 0xFE000.
    DBG nrf_dfu_settings: Writing settings...
    DBG nrf_dfu_settings: Erasing old settings at: 0x000FE000
    DBG nrf_dfu_flash : nrf_fstorage_erase(addr=0x0x000FE000, len=1 pages), queue usage: 1
    DBG nrf_dfu_flash : Flash erase success: addr=0x000FE000, pending 0
    DBG nrf_dfu_flash : nrf_fstorage_write(addr=0x000FE000, src=0x20009560, len=896 bytes), queue usage: 1
    DBG nrf_dfu_flash : Flash write success: addr=0x000FE000, pending 0
    DBG nrf_dfu_settings: Destination settings are identical to source, write not needed. Skipping.
    INF nrf_dfu_settings: Backing up settings page to address 0xFE000.
    DBG nrf_dfu_settings: Destination settings are identical to source, write not needed. Skipping.
    DBG app : Verifying BL: Addr: 0x000F0000, Src: 0x000A3634, Len: 0x00005F64
    DBG app : Copying bootloader: Src: 0x000A3634, Len: 0x00005F64

    Is the problem going from debug to release?

    Thank you,

    Ofer.

  • Hi Ofer, 

    Have you checked if the start address in flash of the debug build and the release build is actually the same ? 
    I would suggest to test by simply use nrfjprog to overwrite the debug bootloader with the release bootloader and check if it can run. 
    If it run you may need to print out logging or use GPIOs toggle to debug. 

  • Thank you Hung,

    In the Segger bootloader project, I right click the project and then in the Build->Memory Segments I get for both: 

    FLASH RX 0x0 0x100000;RAM1 RWX 0x20000000 0x40000;uicr_bootloader_start_address RX 0x10001014 0x4;bootloader_settings_page RX 0x000FF000 0x1000;uicr_mbr_params_page RX 0x10001018 0x4;mbr_params_page RX 0x000FE000 0x1000

    Is it enough to say that they both start at the same place?

    All the best,
    Ofer.

  • Hi Ofer, 

    The actual start address is at Section Placement Macros. For example here the bootloader starts at 0xF8000 in flash. 

Related