Hanno Braun

Michelstadt, Germany

hanno@braun-embedded.com

Braun Embedded

Software Development and Consulting Services

Painless Embedded Rust

The Rust programming language is showing a lot of promise in embedded software development. It allows us to create programs that are robust, efficient, and run even on the tiniest microcontrollers. But writing code to interface with your target hardware is a huge chore. It's taking too much time and effort that could go into your core product instead.

I can help you focus on the work that truly matters to you, by taking the low-level infrastructure off your hands. Go back to working on your core product, and let me do what I do best. All for a fixed price with a full money back guarantee.

I would highly recommend Hanno to anyone looking for embedded development support in Rust. He quickly researched the unknowns in the scope of the project, and provided some really valuable insights into what was, and what wasn't, necessary to meet my goals.

This helped to keep costs down, while still getting me the things that were important for my project.

- James Munns, Ferrous Systems

↓ or keep reading ↓


What I can do

Microcontroller support libraries

Rust libraries for the microcontroller you want to use don't exist or don't suit your needs? I got you covered. From basic support to get you started, to a fully type-safe hardware abstraction layer: I can shield you from the low-level difficulties and keep you productive.

Drivers for external sensors and actuators

Want to talk to that accelerometer on your board? Or having trouble using that radio transceiver? Let's talk. I'll deal with the problems and give you a safe, convenient, and documented Rust API. No need to learn all the intricacies, if you just want to use the features.

Custom embedded software

Do you need custom control software for that device you're working on? Or maybe you need someone to implement a specific library, to aid you with your project? I'm always happy to talk about custom software development projects in the embedded space. Contact me, and we'll figure out the best way forward for you.

Why work with me?

Fixed price, full guarantee

I will quote you a fixed price up-front and I'll stick to it. I'll even give you a full guarantee on top. If my estimate is off, that's my problem, not yours. If I fail to deliver on the agreed-upon objectives for any reason, I'll refund you the full price. If you find bugs later, I will fix them at no additional charge.

Low touch, high leverage

Before every project, I ask questions, sometimes a lot of them. By the time I'm ready to start, I'll understand what the project is about, and can work mostly autonomously. I'll write regular reports, keep you in the loop, listen to your feedback. But if you need me to, I'll be on autopilot.

Slow and measured

Others take pride in getting things done quickly. I take pride in doing it right, and I'll take my time to do it. I will keep my code as clear and simple as the task allows, making it cheaper to change and maintain. No matter if it's me who ends up doing that, or someone else.

What my clients say

I am absolutely pleased with how this project went. Your professionalism, creativity in scoping and execution of the project, as well as your very clear desire to meet and exceed the scope of the project made this work an absolute joy.

- James Munns, Ferrous Systems

It surprised me when you refused to increase the price after spending more time than expected.

- Philippe Delrieu, MD69 Solutions

Examples of my work

STM32F7xx HAL: USART, SPI, DMA

Client: MD69 Solutions

#8, #12, #13, #14, #15, #16, #17, #18

STM32F7xx HAL is a hardware abstraction layer for the STM32F7 family of microcontrollers. As part of a project for MD69 Solutions, I improved and extended support for the USART peripheral, added support for the SPI peripheral, and added DMA support to both of those.

DWM1001: IEEE 802.15.4 and location tracking

Client: Ferrous Systems

dwm1001 (GitHub, crates.io), dw1000 (GitHub, crates.io), iee802154 (GitHub, crates.io)

The Decawave DWM1001 module, with its Nordic nRF52832 microcontroller and Decawave DW1000 UWB radio transceiver, is a solution for real-time location tracking and wireless communication based on IEEE 802.15.4. This project for Ferrous Systems involved building the software stack required to use the DWM1001 in Rust, including a board support package for the DWM1001 module and development board, a DW1000 driver, and a partial implementation of the IEEE 802.15.4 standard.

LPC8xx HAL

GitHub, crates.io

Hardware Abstraction Layer (HAL) for the NXP LPC800 family of ARM Cortex-M0+ microcontrollers, written in Rust. Provides a safe and convenient way to write reliable software for LPC800 microcontrollers.

LPC82x PAC

GitHub, crates.io

Peripheral Access Crate (PAC) for the NXP LPC82x family of ARM Cortex-M0+ microcontrollers. Low-level library to enable code written in the Rust programming language to fully control the hardware on those devices.

Community involvement

As an active member of the Embedded Rust community, I'm associated with the following groups.

Rust Embedded Devices Working Group

Rust website, GitHub

founding member, currently inactive

The Embedded Devices Working Group is the part of the Rust project that focuses on making Rust a great choice for embedded development.

nrf-rs

GitHub

founding member

Works on supporting Rust on Nordic's nRF series of microcontrollers.

lpc-rs

GitHub

founding member

Works on supporting Rust on NXP's LPC microcontrollers.

stm32-rs

GitHub

member

Works on supporting Rust on ST's STM32 microcontrollers.

About me

My name is Hanno Braun, and I'm an embedded software developer based out of the rural Odenwald region in central Europe. I've been using Rust for embedded development since 2015. Today, providing services in this space is my main professional focus.