Painless Embedded Rust
You are developing your next firmware application in Rust, but you don't have time to get bogged down in hardware specifics. I can help you focus on the work that truly matters, by taking the low-level infrastructure off your hands. Go back to working on your core product, and leave the rest to me.
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.
↓ or keep reading ↓
Board bring-up and microcontroller support
Rust libraries for your target hardware 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.
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.
I would say this has been the lowest touch contractor relationship I've had (over the last 3 years or so, I've worked with roughly 3 large agencies, and 4~5 independent contractors).
The biggest surprise is there was no surprise. The project mostly worked as hoped.
It surprised me when you refused to increase the price after spending more time than expected.
STM32L4xx HAL: USART, ADC
Client: Georg Fischer Signet
For Georg Fischer Signet, I made some improvements to STM32L4xx HAL, mostly focused on USART and ADC.
LPC8xx HAL: USART, GPIO, I2C, SPI, DMA
Client: Georg Fischer Signet
#217, #223, #236, #237, #238, #239, #240, #241, #252, #253, #259, #260, #261, #262, #263, #264, #265, #266, #267, #269, #271, #272, #275
For Georg Fischer Signet, I made many improvements to LPC8xx HAL, mainly focused on USART, GPIO, I2C, SPI, and DMA, but also including many clean-ups of the code base.
Embedded Test Stand
Client: Georg Fischer Signet
Repository: github.com/braun-embedded/embedded-test-stand
For Georg Fischer Signet, I developed this test stand for firmware applications, and added test suites for features of the LPC8xx HAL and STM32L4xx HAL libraries.
As part of my third project for Helium Systems, I made some more improvements to STM32L0xx HAL, specifically related to the RNG, USB, and FLASH peripherals.
STM32L0xx HAL: low-power modes, RTC, USB, I2C, DMA, ADC
Client: Helium Systems
As a follow-up project for Helium Systems, I made further improvements and additions to STM32L0xx HAL, specifically related to support for low-power modes, the real-time clock, USB, I2C, DMA, and ADC.
STM32L0xx HAL: I2C, AES, DMA, ADC, USART, PWM
Client: Helium Systems
STM32L0xx HAL is the hardware abstraction layer for the STM32L0 family microcontrollers. To support the internal development efforts of my client, Helium Systems, I made improvements and added support for new features, specifically related to I2C, AES, DMA, ADC, USART, and PWM.
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), ieee802154 (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.
Toolkit for motion control software in Rust. Designed to run on microcontrollers with minimal to no overhead.
The Embedded Devices Working Group is the part of the Rust project that focuses on making Rust a great choice for embedded development. I was a founding member and member of the HAL team, mostly focusing on embedded-hal.
Community group focused on Rust support for NXP's LPC line of microcontrollers. I co-founded the group together with other members of the community and have been focused mostly on maintaining the LPC PACs and development of LPC8xx HAL.
Community group focused on Rust support for Nordic's nRF line of microcontrollers. I co-founded the group together with other members of the community, and made contributions to nrf-hal.
My name is Hanno Braun, and I'm an embedded software developer based out of the rural Odenwald region in Germany. I've been using Rust for embedded development since 2015. Today, providing services in this space is my main professional focus.