Rust • CAN • Desktop

RustyCAN — Cross-platform CANopen Viewer

A native CANopen frame viewer and analyser written entirely in Rust, targeting macOS first. Uses an egui-based GUI with a modular sniffer-core library. Distributed via a Homebrew cask.

Rust CAN / CANopen egui
Embedded Linux • Driver • C

epd-driver — E-Paper Display Driver

A C driver for the Pervasive Displays EM027BS013 e-paper module targeting embedded Linux on Vybrid/ARM, covering SPI communication, COG power-on sequencing, and image rendering.

C Embedded Linux SPI / EPD
Firmware • Motor Control • STM32

STM32G431 Motor Controller Firmware

Bare-metal C firmware for the NUCLEO-STM32G431RB running motor control algorithms. Built with CMake and STM32CubeMX-generated HAL, covering PWM generation, ADC sampling, and closed-loop current control.

C / HAL STM32G431 CMake
Testing • STM32H743 • Hardware-in-loop

STM32H743 On-Target Unit Test Framework

Integration of the Unity test framework directly on the STM32H743I-EVAL2 board. Tests run on real hardware with results streamed over UART, bridging simulation and full HIL setups.

C Unity / CMock STM32H743
DevOps • Toolchain • Docker

kdocker — ARM Cross-Compilation Container

A Docker image providing a reproducible C++ ARM cross-compilation environment. Bundles the ARM GNU toolchain, CMake, and Ninja so any developer or CI runner produces identical binaries.

Docker ARM toolchain CMake
FPGA • VHDL • Zynq

Full Adder — VHDL on Zybo Z20

A verified VHDL full-adder implementation synthesised and tested on the Zybo Z20 (Zynq-7000 SoC). Includes a Tcl-driven Vivado project flow and testbench for simulation-to-hardware equivalence checking.

VHDL Zynq-7000 Vivado / Tcl

Have a project in mind?

Let’s discuss how we can help you bring it to life.

Get in Touch