2020-10-01 05:04 AM
I need to remote update the wireless stack. I read in the AN5270, AN5247 that this can be done only by FUS.
I am already able to write in an opportune unprotected Flash location the new wireless stack, but i have not found how to communicate to the FUS FW where it is written and what to do, before launch it with the function SHCI_C2_FUS_GetState.
I am looking at the application BLE_Ota contained in the firmware package 1.8. I have understood how the FW is passed via BLE between the 2 devices, but i have not understood how to set registers or flash part to tell the FUS where to write what.
NB: my client is another STM32WB, not an Android Application or STM32CubeMonitorRF, so i can't use the BLE_Ota application as it is.
Thank you in advance!
2020-10-02 02:14 AM
The BLE_OTA application is managing the GAP peripheral part for the connection. It has no dependency on the central device triggering the OTA update. It also supports the GATT server part to handle the data transfer.
So you have to reproduce the GATT client profile on the other WB (central device). You can have a look at the BLE Client profile in the dongle directory of the CubeWB FW package.
You can also have a look at:
• STM32WB MOOC FUOTA (7 vidéos, firmware update over the air)
• Getting Started Series: Part 7, Over-the-Air (OTA)
• AN5247 – Over the air application and wireless firmware update
2020-10-02 03:56 AM
The video you attached says that you can send an ota update service characteristic in order to update the stack. This could works for the server device. In my system the Client (central device) is connected via LTE to a cloud. If i download the binary of the wireless stack in the microcontroller flash of this central device, how can i trigger the FUS to update it?
Thank you in advance
2020-10-02 06:52 AM
I may have misunderstood your system architecture.
I understood one WB device (peripheral) is being updated OTA via a BLE connection by another WB device (central).
In this case, what i wrote above if the right thing to do.
Then if the central device is connected via LTE to a cloud service delivering new application or a new RF stack binary, then you have to manage the download of the data into the central device memory.. The BLE OTA would be of no use on the central device as it only manages BLE connection, not LTE.
If, in another architecture, there is only one WB device being connected via LTE to a FW server, then once downloaded the new code into the flash memory of the WB device, you have to call SHCI_C2_FUS_FwUpgrade (see app_entry.c file in the BLE_OTA project). The FUS will then browse the Flash memory looking for specific magic key word indicating the start of the image to upgrade. So no address to mention.
If my understanding is still wrong, please send me a picture of your architecture.