2023-02-12 08:00 PM
Greetings.
For our data collection devices, we use STM32F401 as the microprocessor and Telit modems to communicate with the server. We are planning to have a feature to update the firmware on the STM32F401 over the air, if possible. Currently we use STM Cube IDE or ST Link Utility to update the firmware. Is there any support for this? Does STM32F401 has enough memory to support this or do we need another processor with a file system to achieve this?
2023-02-12 11:35 PM
It shall be possible. You basically partition the flash in 3 areas: boot loader, firmware1, firmware2. One firmware partition is the current/running firmware, the other will be overwritten with the next firmware update. The boot loader decides which one should run. There is some material around like a video series https://youtu.be/OkUQ3iMmiYQ and more, check the web for STM32 OTA (over the air) boot loader.
F4 series is not the latest and greatest concerning IoT features (crypto, security, trust zone,...) and the F401 flash might be a little small, but it is worth looking into it.
hth
KnarfB
2024-05-09 11:41 AM
Hello,
I'm trying to do the same thing, receiving a firmware update for an STM32WB, via a Telit LTE module. Have you had success with this implementation?
Thank you
2024-05-09 01:40 PM
I've updated my STM32 firmwares using Telit cellular modems..
Used HTTP to find if there is an update for current firmware, used that to pull a secondary .HEX with the new update.
2024-05-10 04:11 AM
Did you do this using UART?
And did you need to create your own bootloader? Could you give more details on how you did it?
Thank you.
2024-05-10 04:18 AM
@Viniciuspsc wrote:Did you do this using UART?
Yes, I have done this with a cellular modem via UART - based on Application Note AN4657, STM32 in-application programming (IAP) using the USART:
2024-05-13 07:27 AM
Do you need to control Boot0 Pin to do that?
2024-05-13 07:33 AM
2024-05-13 07:40 AM
Yes, the UART is the only mode of connectivity I have with the modem.
I didn't need to use BOOT0, because the modem has no way of interacting directly with the STM32, and would need an app on the modem to facilitate that kind of interaction.
As the developer you'd be expected to write code to facilitate the update. Yes, you'd probably want to code a bootloader to do the physical update at the FLASH level once you'e insured you have a viable update. The App side could be more complicated as it would need to connect to the cellular network, and your servers, and pull / stage the firmware update so the loaders job was simpler.
2024-05-14 06:27 AM
Have you used the FreeRTOS AWS OTA library?