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

DFU without rebooting nRF

Is there a supported way of doing an unsecure flash (the nRF is hardwired via UART to a secure processor) without rebooting? 

The HW design the nRF is integrated with uses the nRF as as the main CPU power sequencer and thus cannot be rebooted to allow DFU update from that CPU.

Parents
  • Hi Honsch, 

    Could you clarify what exactly you need ? How do you receive the image ?
    I assume you receive the new image in your application and want to switch to the new image without trigger a reset ? 

    It's actually possible, but you need to change the vector table forwarding of the softdevice to point to the new image. You can do that by calling sd_softdevice_vector_table_base_set() but your application need to run as it's in bootloader mode (MBR forward interrupt to the bootloader/application instead of the softdevice) 

    Please refere to ble_stack_init() in nrf_dfu_ble.c in our bootloader

  • Hung,

    Yes, we are downloading a new image from a secured internet connection and want to flash the nRF via a hardwired UART connection.

    Thank you for the hint on ble_stack_init().  I'll look in to it.

  • I assume you will not have any bootloader but receive and store the image using your application. 

    If you want to use sd_softdevice_vector_table_base_set() you would need to run your application as a bootloader. Meaning the MBR when booting goes straight to your application ( which works as a bootloader ). Please have a look at the booting sequence here.

Reply Children
No Data
Related