Rust is working well for you, but writing code to interface with hardware is taking too much time.
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.
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
Having trouble using that radio transceiver, or some other complicated piece of hardware? Let's talk. I'll deal with the problems and hide them under a safe and convenient Rust API.
Custom software development
Do you need custom control software for your latest hardware project? 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?
No cost overruns, no arguing over billed hours. I will quote you a fixed price up-front and I'll stick to it. Of course my estimates aren't perfect, just like everybody else's, but that's not going to be your problem.
Things don't always go as we expect them to. 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 cost.
Strategy, not tactics
We'll start by talking about your objectives. I'll keep you updated as I work on those, and ask for feedback when I need it. But you won't have to watch over my shoulder, making minute decisions. No need to waste your time micromanaging.
No project will ever go perfectly. That doesn't mean we have to accept the low quality software that is so prevalent today. With modern tools and a disciplined approach, I minimize bugs and security issues, as best I can.
Software is often thrown together under a tight deadline, leaving behind a mess that is hard to maintain. I take the time required to create simple and clear code that is easy to change later. 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.
Examples of my work
Rust implementation of IEEE 802.15.4
Partial implementation of the IEEE 802.15.4 standard for low-rate wireless personal area networks in Rust.
Portable Rust driver for the Decawave DW1000 wireless transceiver chip, for wireless communication and position tracking.
Board Support Crate (BSC) for the Decawave DWM1001 module and DWM1001-Dev board. The board combines a DW1000 wireless transceiver chip with a Nordic nRF52832 microcontroller. DWM1001 BSC enables the use of the board's features from the Rust programming language.
Hardware Abstraction Layer (HAL) for the NXP LPC82x family of ARM Cortex-M0+ microcontrollers, written in Rust. Provides a safe and convenient way to write reliable software for LPC82x microcontrollers.
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.
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 an early adopter of Rust on embedded systems. Today, providing services in this space is my main professional focus.