I am having some trouble adding support for firmware updates to our product, for the application as well as the net core and the secondary bootloader.
Chip: nRF5340
SDK: nRF Connect SDK 2.2.0
Our device have only one button and a usb interface so we enter dfu/recovery by keep the button pressed for a number of seconds during boot, we would very much like to not have the user need to enter dfu/recovery more than once when updating both the application and the net core.
Serial recovery:
Currently we are able to support firmware updates of the application and net core using serial recovery but not the secondary bootloader.
Serial recovery is our preferred solution since we are able to update both the net core and the application fairly quickly and with only one required user interaction. This allows us to pack the net core image with the application update without inconveniencing the user.
USB DFU:
Using dfu-util we can update all three images (application, net core and secondary bootloader) however we have not been able to figure out how to do a simultaneous update of both the application and the net core images.
This means that the update process will be significantly worse for our current users, since they will have to essentially perform two entire firmware updates in succession.
Regarding the above I have 3 questions:
- We would like to know if it is possible to either add support for updating the secondary bootloader using serial recovery or to add support for simultaneous update of application and net core using usb dfu?
- In addition adding support for the above forced us to stop using a single slot bootloader and this have cost use a large chunk of the flash, so much so that we have had to remove our partition set aside to store logs. Is it possible to have the dfu/recovery work using only a single slot and just overwrite the main application each time anything is updated?
- If it is not possible to use only a single slot in the secondary bootloader, can we then reduce the size of the secondary slot so that it is only large enough to contain the largest of either the secondary bootloader or the net core image. I think it should be possible using serial recovery as we can write direly to the primary slot in the secondary bootloader so the secondary slot should not need to be as large as the primary one, right?
Thank you for your time.