ezFD Bootloader

Custom bootloader for flashing firmware over CAN on embedded FSAE vehicle nodes

ezFD Bootloader

Overview

The ezFD Bootloader is a custom bootloader for flashing embedded firmware over CAN. I have open-sourced the project and plan to expand its capabilities to more target devices, and support more interfaces. There are two parts to the bootloader: the bootloader itself, which runs on the target device, and the host tool, which sends the firmware image over CAN. Both the host and device code are written purely in Rust.

Why?

I wrote this bootloader because the current existing bootloaders were not suitable for my communication protocol and workflow. Mainly however, I wanted to learn more about bootloaders and how they work, and also put my Rust skills to the test. To see more about how the bootloader works, check out the Host repository and the Device repository on GitHub.

Results

The actual bootloader firmware for the device gets down to only needing 12 KiB of flash. This is a significant reduction from the 32 KiB flash required by the existing openBootloader implementation from ST. Additionally, I hope that since its a much simpler codebase, that other developers will find it easier to fork and implement in their own projects. I had a lot of fun writing this, and learned a lot about writing applications that are not only functional, but also convenient to use. You can always stop developing something once its feature complete, but often times you can gain a lot by making it easier to use.