2024-10-16 10:08 PM - edited 2024-10-17 12:50 AM
Hi there,
I'm developing a custom application for FUOTA (Firmware Update Over The Air), targeting an STM32WB55-Nucleo devboard. I’m referencing AN5247 and AN5289 and using the BLE_OTA example from STM (open source code in new page). My user application is located at 0x0800 7000.
When I perform the update using ST BLE ToolBox-1.4.2 or ST BLE Sensor Classic, the update is performed OK:
However, when I use my custom update application (a business requirement), the OTA does not send the Indicate message nor perform the reset:
If I inspect the Flash memory after an unsuccessful update using my custom firmware update app:
Using STM's Android apps (BLE Sensor Classic), the system behaves as expected:
With my custom app:
If I perform the update using the STM32 Android applications mentioned above, then it works just fine.
So I don't think the issue I'm missing something obvious, but I can't see it?
Any help would be appreciated, let me know if there's any additional information that would be useful.
Thanks!
2024-10-21 12:04 AM - edited 2024-11-04 08:34 PM
Bump as it's been 5 days and no responses.
Sadly, no responses and the support for the STM32WB BLE products is rather poor.
2024-11-11 11:37 PM - edited 2024-11-11 11:55 PM
I had a similar problem. Whenever the firmware is updated through OTA loader, the firmware file was successfully transferred but the system just got stuck after then. Even if the the system is restarted, the previous firmware is remaining.
After getting through some struggles, what I found and checked was...
(1) When the flash is entirely formatted (but excepting memory for CPU2 (e.g. after 0x080CB000)) and a fresh OTA loader was installed, the initial application firmware update was successful through OTA . But once any of application firmware was updated, the firmware update through OTA never works. This implies any remaining code other than OTA loader and CPU2 may cause the problem.
(2) In the STM32 BLE Toolbox app, before reboot the device to put into OTA mode, you can specified how much of sectors is going to be erased in the "Custom" tab. If an entire free area (e.g. Sector 7 to 191, total 185 sectors starting from Sector 7) are erased, it was found that any OTA firmware could be successfully and normally updated. I guess this number of sector will be model(memory size)-sensitive. If total number of sector exceeds this value, the device cannot be found in the toolbox because codes in CPU2 sector are deleted.
I am not sure this could solve your problem as well, but please give it a try.