2024-03-12 10:41 AM - edited 2024-03-12 01:42 PM
I'm working with a commercial-grade food-service product that uses the STM32L073 in conjunction with an android tablet connected over UART or Bluetooth. For our next-gen product, we're investigating methods to economically implement firmware updates on a fleet of a few thousand units. The one major factor is that we have limited resources (one part-time firmware developer with no filesystem or bootloader experience, along with a part-time electrical engineer), so maximizing implementation speed is key. We have the following options we are exploring for firmware updates:
1. Currently the only method implemented to perform firmware updates is using a ST-Link Programmer. Our issues with this setup is that:
2. Switch to an STM32WB:
3. Switch to Golioth IoT Platform (replace the ST board)
4. Flash Drive:
5. SD card:
Which of these 4 options would you recommend committing to for this next generation product, and what resources can I refer to help understand the implementation? Thanks!
2024-03-12 10:52 AM - edited 2024-03-12 10:53 AM
> we have limited resources (one part-time firmware developer with no filesystem or bootloader experience, along with a part-time electrical engineer)
You can try to find help for your project here.
Also, instead of owning a laptop and other equipment, you can rent it.
2024-03-12 11:12 AM
Surely a boot loader written with some thought can authenticate the firmware image so random/unofficial firmware don't get loaded. There's a) encryption, and b) public/private elliptical curve signing methods that will fit in STM32
Not sure of the SDIO and USB-HOST type support in L07x parts.
Delivery via chip/dongle that plugs in the device is something that's viable. Cheap/simple stand-alone flasher.
2024-03-12 12:55 PM
Simple micro-SD adapter with UART interface, a.k.a "Openlog Serial Data Logger".
STM32 can use this to read files from a SD card. The UART connector has to be designed. It is slow (~ 115200) but dirt cheap and easy to program.
2024-03-12 01:48 PM
The OpenLager uses an STM32F411 (512KB Flash)
https://store.myairbot.com/openlager.html
https://newbeedrone.com/products/newbeedrone-f411-openlager
https://github.com/d-ronin/openlager
For pushing updates via AN3155 (STM32 UART Protocol Loader) one can take a look at the update mechanism in the Arduino MKR WAN1300 github repo
2024-03-12 02:04 PM - edited 2024-03-12 02:05 PM
The OpenLager firmware on github looks like only logger.
Many openloggers sold on ebay have the sparkfun firmware, it can read existing files from SD and has many interesting options.
2024-03-12 03:47 PM
Well the d-Ronin guys haven't touched it in 8 years, but the hardware can be disabused to other applications, and the firmware for them delivered as a .BIN.
Yeah the software's not feature rich, but it's designed for very high speed data streams and uses 4-bit SDIO w/DMA
GHI Electronics had some ALFAT related products. https://docs.ghielectronics.com/hardware/filesystem/intro.html
2024-03-14 07:54 AM
> STM32L073 in conjunction with an android tablet connected over UART or Bluetooth
So, can't the update be delivered from that tablet via the UART connection? Isn't the Bluetooth just a BT-to-UART module connected to STM32 via UART too?
If both answers are yes, then on STM32 side it's the same problem set as with any UART-based bootloader, and we can then discuss them as such; and then you would also need to provide the software counterpart on the tablet side.
JW
2024-03-14 05:13 PM
Bluetooth UART (HC-05 or newer BLE BM-70) is a viable idea. But wireless may need extra certification effort and security considerations.
2024-03-15 02:12 AM
As I understand it, it's already part of the product (although I don't know in what way exactly).
JW