Hello,
We are looking to do OTA device firmware update by GSM for the nRF52840.
We have a custom board with a nRF52840 and a GSM/LTE-M modem. They are communicating together by an UART.
The new firmware is downloaded and stocked by the GSM modem.
We did some research and it appeared that is not possible to use DFU with uart transport exemple in our case. DFU target (nRF52840) need a DFU controller and the gsm modem has no application/logic.
After some read on the DevZone we understood that we must implement a custom bootloader.
We relied on this example: OTA Firmware Updates with nRF52840 and SIM7600E LTE Module – ravikiranb.com
If we understand correctly, steps are:
- Receive the new firmware by uart
- Stock it on flash with nrf_nvmc lib
- Start the bootloader
Questions are:
- On which address we have to write the new firmware ?
according to this document Nordic Semiconductor Infocenter, the new app has to be written to the “bank 1” (we use dual-bank configuration).
- How to start the check of the new application and do the switch between bank 1 and bank 0 ?
we just have to start the bootloader (nrf_bootloader_init) ?
“The original application is located in memory bank 0. The transferred image is stored in bank 1. After the new application image is received, both the old and the new application are present. This ensures that fallback to the old application is possible if the new application cannot be activated. If the new application can be activated, it is copied from bank 1 to bank 0. Existing application data can be retained; see Preserving application data for more information.”
Thanks for your help.