Unerstanding of DFU OTA on legacy bootloder

Hello,


I have an application running on legacy NRF SDK and using the nRF5 bootloader, which has below flash sectors,
0x00000 - 0x026000 - Soft-device section
0x26000 - 0x0D9000 - Application section
0xD9000 - 0x0F8000 - Reserved section
0xF8000 - 0x100000 - Bootloader/settings/mrb

Now I want to perform a DFU OTA over this with my new application called the intermediate application. This shall have,
- two large byte arrays, of 50KB and 320KB
- A function that copies the above array to flash into a specific address(in 0x00000 to 0x062000); this function is a RAM function that loads into RAM.
- And a main function that calls this RAM function.

The flash sections of this intermediate application are as below,
0x00000 - 0x062000 - Space to paste two byte array data
0x62000 - 0x0BF000 - dedicates sectors to hold byte array in flash memory
0xBF000 - 0x100000 - Application section

What I want is to perform a DFU OTA of the intermediate application over the legacy application. Now the legacy application has a bootloader, softdevice, and application in the dedicated flash regions, while the intermediate application has a different flash layout compared to the legacy application.

So the question here is, is it possible for the legacy application bootloader to accept the intermediate application and perform DFU? Because the intermediate application does not have a softdevice, a bootloader, and the same flash layout that the legacy application expects.

If not, then can you suggest a way I can follow to achieve my goal?

Parents
  • Hi Ankit, 

    I believe you can have minimum size MCUboot that can fit to the bootloader. Have you looked at the example provided by Vidar ? 


    Ankit_chauhan said:
    Also, the softdevice region is from 0x100 to 0x26000, which means the Zephyr application that is going to be updated over the Softdevice region is limited to that size.

    As far as I know it's ok for a new softdevice to increase in size. You have to provide the softdevice size (and info) at a special location inside the softdevice hex file for that. 

    Of course you can continue to do what you plan. But it would be easier if you follow what discussed in the embeddedrelated link. Instead of overwriting the softdevice , you simply replace the bootloader and remove the protection in the bootloader, after that run in RAM and overwrite softdevice to write your application there. 


Reply
  • Hi Ankit, 

    I believe you can have minimum size MCUboot that can fit to the bootloader. Have you looked at the example provided by Vidar ? 


    Ankit_chauhan said:
    Also, the softdevice region is from 0x100 to 0x26000, which means the Zephyr application that is going to be updated over the Softdevice region is limited to that size.

    As far as I know it's ok for a new softdevice to increase in size. You have to provide the softdevice size (and info) at a special location inside the softdevice hex file for that. 

    Of course you can continue to do what you plan. But it would be easier if you follow what discussed in the embeddedrelated link. Instead of overwriting the softdevice , you simply replace the bootloader and remove the protection in the bootloader, after that run in RAM and overwrite softdevice to write your application there. 


Children
No Data
Related