Flyability — firmware, HAL & drivers
Flyability's caged drones fly into places people can't. When the new hardware revision landed with more sensors, new lighting, and new comms, my job was making sure the same firmware could run on both the old platform and the new one — without forking the codebase.
Wrote the HAL that sits between the application code and the two hardware revisions, so the same FreeRTOS application could target either board without the application layer knowing which one it was actually running on.
Built the pipeline that took that one codebase and produced two correct, hardware-specific builds from it — so a single change didn't mean maintaining two diverging versions by hand.
Implemented the communication protocols for everything that only existed on the new revision — the added sensors, the control lighting system, and the comms links talking over SPI and I2C.
SPI · I2C · FreeRTOS · STM32
Set up DMA channels on the STM32 so data moved between peripherals and memory without blocking the CPU, keeping the real-time tasks responsive under load.
The HAL and the pipeline are what let Flyability ship the new hardware without splitting the firmware in two — one application, compiled correctly for whichever drone was in the technician's hands that day.