We are in a need to upgrade the existing Soft Device to higher version from the application firmware. The reason why I am asking this, if it is possible to upgrade then we should update all our products in the field.
We are in a need to upgrade the existing Soft Device to higher version from the application firmware. The reason why I am asking this, if it is possible to upgrade then we should update all our products in the field.
Hi,
If you equipped your products with a device firmware upgrade (DFU) solution, then that can be used for upgrading the products. For instance, we have in our SDK a DFU bootloader that can be used for that purpose. But for that you must have built this bootloader and programmed it, previously. (Also, the product must have a means to enter the bootloader, for instance a reset button on the product or a means for the application to trigger DFU.) If you have not done this you need to physically connect to the product with a programmer in order to reprogram it. That as well requires that this was made possible on the product, i.e. that there is access to the programmer pins of the nRF SoC, so that a programmer can be connected.
If you do not have a DFU solution on the product, and you do not have debug pin access, then firmware updates are not practical for that product.
Regards,
Terje
Thanks Terje!!!
Meanwhile I gone through DFU process documents. I tested the secure_bootloader UART example between few SD versions and our intended version. The example is working.
We haven't provided the programming pins accessible on our end products. So that it is not possible for the user to program using programmer. We have our own bootloader for field upgrade. But it will not help to upgrade SoftDevice. It is only useful to upgrade application firmware.
So our only solution is modifying the application firmware to support downloading DFU hex.
During upgrade,
First, upgrade to temporary application firmware which has support to download DFU hex.
Second, download DFU hex.
Third, upgrade to New SoftDevice + Bootloader and Application built with new SoftDevice and SDK.
All steps should be done in one click without user knowledge.
Hi,
Please note that our DFU solution is based on having a bootloader which is separate from the application. That means, in order to go from a different upgrade solution to our DFU solution, you must be able also to download our DFU bootloader and put it in the correct location.
For final copying of the data to its final location in flash, we issue a command to the MBR. The MBR is delivered as part of the SoftDevice, and is located in the first flash page on the device. (The first flash page of the SoftDevice). See Master Boot Record API for more info. This can be used to copy flash contents from one address to a different address.
You should be able to find a way to do this upgrade in several steps, that takes you from your existing bootloader, to an application or bootloader that can replace the bootloader with our DFU bootloader, then to full combination of new SoftDevice + DFU bootloader + application.
Regards,
Terje
Hi Terje,
Thanks for the reply. I was able to manage the stack update from our bootloader itself. We upgraded our bootloader from application and then from new bootloader it is possible to upgrade stack (without touching MBR) and the respective new application.
Regards,
Jebakumar.