ManningBooks

ManningBooks

Devtalk Sponsor

Embedded Software with Rust (Manning)

Embedded Software with Rust is a practical introduction to building firmware that is fast, efficient, and far safer than traditional embedded software written in C or C++. Rust gives developers the low-level control embedded systems demand, but adds modern guarantees around memory safety, data races, and error handling. In a field where a single bug can cause crashes, security flaws, or costly field failures, those guarantees are a major advantage.

David Cabanis

Embedded firmware has always demanded close control over hardware: memory-mapped registers, interrupts, linker scripts, startup code, timing, and strict resource limits. Traditionally, that has meant C or C++, along with all the familiar risks around pointer misuse, undefined behavior, data races, and fragile error handling.

Rust offers another path. It gives embedded developers low-level control while adding compile-time checks for memory safety, ownership, borrowing, and concurrency. For firmware running in consumer devices, industrial systems, vehicles, medical equipment, robotics, and edge platforms, those guarantees matter.

Embedded Software with Rust is a practical guide to building bare-metal firmware in Rust. It starts with the foundations and moves steadily toward working hardware-focused development, showing how Rust’s language features connect directly to embedded tasks.

Inside the book, you’ll learn how to:

  • Set up an embedded Rust development environment

  • Build and inspect firmware with Cargo, cargo-binutils, GNU tools, OpenOCD, probe-rs, and QEMU

  • Configure no_std projects for bare-metal execution

  • Understand the reset-to-main() path on Cortex-M systems

  • Define memory layouts with linker scripts and memory.x

  • Work with startup code, vector tables, exceptions, and interrupts

  • Share data safely between main code and interrupt handlers

  • Use PACs, HALs, BSPs, and embedded-hal traits

  • Manage memory in constrained systems

  • Interoperate with C as part of a migration path

The book is hands-on throughout. Early chapters walk through toolchain setup, project structure, no_std configuration, linker scripts, and minimal startup. Later chapters expand into memory-mapped I/O, debugging, profiling, stack and heap management, async and RTOS compatibility, performance tuning, and Rust-C integration.

A big strength of the book is that it explains what is happening underneath the abstractions. You won’t only use cortex-m-rt, embedded-hal, or a board support crate; you’ll also see how the reset handler, vector table, .data copying, .bss zeroing, panic behavior, and interrupt dispatch actually fit together.

The book is written for software engineers with basic Rust knowledge. Prior embedded experience helps, but the text introduces the needed background step by step. Experienced firmware engineers coming from C or C++ will also find plenty of familiar ground, especially around build/debug workflows, hardware registers, linker configuration, and interrupt-driven design.

About the author: Dr David Cabanis is Principal Engineer at Doulos, specializing in Arm embedded software, FPGA and SoC design, and system-level modeling. He is an ARM Accredited Engineer, MCU Engineer, and former ARM Certified Trainer, with deep practical experience in embedded Rust.


Don’t forget you can get 45% off with your Devtalk discount! Just use the coupon code “devtalk.com” at checkout :+1:

Where Next?

Popular Backend topics Top

PragmaticBookshelf
You want increased customer satisfaction, faster development cycles, and less wasted work. Domain-driven design (DDD) and functional prog...
New
PragmaticBookshelf
This hands-on book will quickly get you building, querying, and comparing graph data models using a robust, concurrent programming langua...
New
PragmaticBookshelf
This project based book gets you up to speed on building and deploying Elixir IoT applications using Nerves, as you develop a real-world ...
New
PragmaticBookshelf
Learn Functional Programming by building a complete web application that uses Kotlin, TDD with end-to-end tests, and CQRS and Event Sourc...
New
PragmaticBookshelf
Use your Ruby knowledge to quickly learn Elixir and build scalable applications using the most powerful libraries in the Elixir ecosystem...
New
PragmaticBookshelf
Shave countless hours off development time with production-ready Go recipes. Learn language nuances while doing common (and not so common...
New
PragmaticBookshelf
Develop, deploy, and debug BEAM applications using BEAMOps: a new paradigm that focuses on scalability, fault tolerance, and owning each ...
New
PragmaticBookshelf
Hone your Clojure skills and validate your understanding as you explore the design decisions behind this data-driven functional programmi...
New
PragmaticBookshelf
Escape callback hell and ship fast, clean code that reads as smoothly as it runs. Squash bugs and stamp out memory leaks with an intuitiv...
New
PragmaticBookshelf
Quickly turn complex problems into simple, working solutions using functional programming, safe concurrency, and the expressive tools of ...
New

Other popular topics Top

PragmaticBookshelf
Take your Go skills to the next level by learning how to design, develop, and deploy a distributed service. Start from the bare essential...
New
ohm
Which, if any, games do you play? On what platform? I just bought (and completed) Minecraft Dungeons for my Nintendo Switch. Other than ...
New
AstonJ
Or looking forward to? :nerd_face:
503 14742 279
New
Exadra37
Please tell us what is your preferred monitor setup for programming(not gaming) and why you have chosen it. Does your monitor have eye p...
New
dasdom
No chair. I have a standing desk. This post was split into a dedicated thread from our thread about chairs :slight_smile:
New
AstonJ
I ended up cancelling my Moonlander order as I think it’s just going to be a bit too bulky for me. I think the Planck and the Preonic (o...
New
PragmaticBookshelf
Rails 7 completely redefines what it means to produce fantastic user experiences and provides a way to achieve all the benefits of single...
New
AstonJ
If you get Can't find emacs in your PATH when trying to install Doom Emacs on your Mac you… just… need to install Emacs first! :lol: bre...
New
PragmaticBookshelf
Build efficient applications that exploit the unique benefits of a pure functional language, learning from an engineer who uses Haskell t...
New
PragmaticBookshelf
Use advanced functional programming principles, practical Domain-Driven Design techniques, and production-ready Elixir code to build scal...
New