Get in Touch

Course Outline

Introduction to Embedded Rust

  • Overview of no_std, core, and the broader embedded Rust ecosystem
  • Selecting a target architecture and understanding target triples
  • Configuring rustup, cargo, and specific target toolchains

Tooling, Build & Debugging Workflow

  • Leveraging cargo, cargo-embed, probe-run, and OpenOCD workflows
  • Flashing and debugging using hardware probes (ST-Link, JLink)
  • Considerations for Continuous Integration (CI) when building embedded Rust firmware

Hardware Abstraction and Peripheral Access

  • Exploring embedded-hal traits and driver implementation patterns
  • Utilizing Peripheral Access Crates (PACs) and device crates via svd2rust
  • Developing and utilizing HAL drivers and board support crates (BSCs)

Memory Safety, Concurrency & Real-Time Systems

  • Safe patterns for managing shared state and mutable references within interrupts
  • Employing RTIC and alternative concurrency models for real-time applications
  • Balancing heap versus stack usage, allocators, and strategies to avoid dynamic allocation

Error Handling, Testing & Reliability

  • Implementing error handling patterns suited for constrained environments
  • Conducting unit tests on the host and integration tests on actual hardware
  • Performing fault analysis, logging, and post-mortem strategy development

Performance, Power & Resource Optimization

  • Benchmarking, measurement, and optimizing critical code paths
  • Techniques for reducing code size and managing linker scripts
  • Strategies for power management and low-power design patterns

Deployment, Security & Ecosystem Best Practices

  • Secure boot mechanisms, firmware signing, and update strategies
  • Addressing supply-chain considerations and dependency management
  • Mapping the roadmap for migrating C firmware to Rust and utilizing community resources

Summary and Future Steps

Requirements

  • A solid grasp of fundamental Rust concepts, including ownership, borrowing, and lifetimes.
  • Proven experience developing non-trivial Rust applications (intermediate proficiency).
  • Familiarity with embedded systems concepts such as memory-mapped I/O, interrupts, and peripheral management.

Target Audience

  • Embedded firmware engineers seeking to integrate Rust into their workflow.
  • Software engineers with existing Rust experience aiming to transition into low-level system development.
  • Technical leads assessing Rust as a solution for embedded product development.
 14 Hours

Number of participants


Price per participant

Testimonials (1)

Provisional Upcoming Courses (Require 5+ participants)

Related Categories