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
Stop developing web apps with yesterday’s tools. Today, developers are increasingly adopting Clojure as a web-development platform. See f...
New
PragmaticBookshelf
Machine learning can be intimidating, with its reliance on math and algorithms that most programmers don't encounter in their regular wor...
New
PragmaticBookshelf
Ruby on Rails helps you produce high-quality, beautiful-looking web applications quickly—you concentrate on creating the application, and...
New
PragmaticBookshelf
Learning Clojure involves much more than just learning the mechanics. To really get Clojure you need to understand the ideas underlying i...
New
PragmaticBookshelf
Elixir's straightforward syntax and this guided tour give you a clean, simple path to learn modern functional programming techniques. Exp...
New
PragmaticBookshelf
Write Elixir tests that you can be proud of. Dive into Elixir’s test philosophy and gain mastery over the terminology and concepts that u...
New
PragmaticBookshelf
Reusing well-written, well-debugged, and well-tested code improves productivity, code quality, and configurability. It even takes some pr...
New
PragmaticBookshelf
Dive into extraordinary and robust home automation projects written in Go. Deploy, host, and maintain code in your home lab using best of...
New
PragmaticBookshelf
Get the comprehensive, insider information you need for Rails 7.2 with the new edition of this award-winning classic. Sam Ruby @ruby...
New
PragmaticBookshelf
Overarching tutorial for Python beginner and intermediate developers that teaches web development with the Flask framework. Miguel Gr...
New

Other popular topics Top

PragmaticBookshelf
Learn from the award-winning programming series that inspired the Elixir language, and go on a step-by-step journey through the most impo...
New
PragmaticBookshelf
Write Elixir tests that you can be proud of. Dive into Elixir’s test philosophy and gain mastery over the terminology and concepts that u...
New
DevotionGeo
I know that -t flag is used along with -i flag for getting an interactive shell. But I cannot digest what the man page for docker run com...
New
AstonJ
You might be thinking we should just ask who’s not using VSCode :joy: however there are some new additions in the space that might give V...
New
AstonJ
I’ve been hearing quite a lot of comments relating to the sound of a keyboard, with one of the most desirable of these called ‘thock’, he...
New
Help
I am trying to crate a game for the Nintendo switch, I wanted to use Java as I am comfortable with that programming language. Can you use...
New
PragmaticBookshelf
Programming Ruby is the most complete book on Ruby, covering both the language itself and the standard library as well as commonly used t...
New
PragmaticBookshelf
25 puzzles that will make you a better C programmer by challenging your knowledge of the language, and explaining the technical details o...
New
PragmaticBookshelf
Get the comprehensive, insider information you need for Rails 8 with the new edition of this award-winning classic. Sam Ruby @rubys ...
New
AnfaengerAlex
Hello, I’m a beginner in Android development and I’m facing an issue with my project setup. In my build.gradle.kts file, I have the foll...
New