Get in Touch

Course Outline

Getting Started with Embedded Rust

  • Overview of the no_std, core, and broader embedded Rust ecosystem.
  • Choosing a target architecture and understanding target triples.
  • Setting up rustup, cargo, and target-specific toolchains.

Tooling, Build & Debug Workflow

  • Utilizing workflows with cargo, cargo-embed, probe-run, and OpenOCD.
  • Flashing and debugging processes using hardware probes such as ST-Link and JLink.
  • Continuous Integration (CI) considerations for building embedded Rust firmware.

Hardware Abstraction and Peripheral Access

  • Understanding embedded-hal traits and driver patterns.
  • Working with Peripheral Access Crates (PACs) and device crates generated via svd2rust.
  • Writing and utilizing HAL drivers and Board Support Crates (BSCs).

Memory Safety, Concurrency & Real-Time

  • Implementing safe patterns for shared state and mutable references within interrupts.
  • Employing RTIC and other concurrency models suitable for real-time systems.
  • Managing heap versus stack usage, selecting allocators, and avoiding dynamic allocation.

Error Handling, Testing & Reliability

  • Error handling patterns tailored for constrained environments.
  • Conducting unit testing on the host machine versus integration testing on hardware.
  • Fault analysis, logging mechanisms, and post-mortem strategies.

Performance, Power & Resource Optimization

  • Benchmarking, measurement, and optimization of critical code paths.
  • Techniques for reducing code size and managing linker scripts.
  • Power management strategies and design patterns for low-power operation.

Deployment, Security & Ecosystem Best Practices

  • Secure boot implementation, firmware signing, and update strategies.
  • Supply-chain considerations and dependency management.
  • Roadmap for migrating C firmware to Rust and available community resources.

Summary and Next Steps

Requirements

  • A solid grasp of core Rust concepts, including ownership, borrowing, and lifetimes.
  • Practical experience in writing non-trivial Rust programs (demonstrating intermediate proficiency).
  • Familiarity with embedded systems concepts such as memory-mapped I/O, interrupts, and peripherals.

Audience

  • Embedded firmware engineers seeking to adopt Rust.
  • Software engineers with Rust expertise who are transitioning to low-level systems.
  • Technical leads evaluating Rust for use in embedded product development.
 14 Hours

Testimonials (1)

Upcoming Courses

Related Categories