Rust Ethernet bootloader for STM32F4

April 2018

Status: Finished, feature-complete, in use

blethrs on GitHub

blethrs (“BootLoad ETHernet RuSt”…) is an open-source ethernet bootloader for STM32F4 microcontrollers, written in Rust. I originally wrote it for use with the in-house data acquisition system we run at work, which saved a huge amount of time manually reprogramming boxes.

The normally running firmware can reboot into the bootloader, or an external pin can be used to trigger booting into bootloader on power-up. Once the bootloader is running, it configures its IP and network details from a predefined region of flash memory (which can be shared with the main application), and listens on the network for connections.

It supports programming and reading back flash memory to allow for write verification, and a typical program-verify cycle takes only a couple of seconds.

The host-side software is written in Python.