2026-05-29 4:09 AM
Hi,
I am using an STM32F767ZI which is connected to a server via Ethernet. It is also connected to other STM32F767ZI devices that are part of the same system, and these devices communicate with each other over CAN.
So far, everything is working correctly: the STM32F767ZI with Ethernet communicates with the server using TCP/IP and forwards the information to the other devices connected to the CAN bus.
The problem is that I am now being asked to support firmware updates for all the devices connected to the CAN network, including the STM32F767ZI that has the Ethernet connection. I am not sure what the most optimal way to do this would be. I have also never programmed a bootloader before, although I think I should be able to do it.
Is there a way to program all the STM32 devices connected to the CAN bus from a server that is connected to the system via an Ethernet cable?
Should I change the design so that all devices are connected via Ethernet using TCP/IP and remove the CAN network altogether?
How could I approach this? If necessary, I can redesign parts of the system in order to meet the requirement that the devices can be programmed remotely.
Thank you very much in advance!
2026-05-29 4:21 AM
Take a look at the ST OpenBootloader - it behaves like the built-in STM32 bootloader.
@BTurc.2 wrote:Is there a way to program all the STM32 devices connected to the CAN bus from a server that is connected to the system via an Ethernet cable?
Not directly - you would need to implement something to either bridge from Ethernet to CAN, or "stage" the upload via the Ethernet-connected device.
@BTurc.2 wrote:Should I change the design so that all devices are connected via Ethernet using TCP/IP and remove the CAN network altogether?
That's entirely up to you, depending on the specific requirements, constraints, etc of your specific system - of which we know nothing.
Presumably you had good reason to choose the Ethernet+CAN approach in the first place?