Get in Touch
 Duration 14 hours

Course Outline

Introductory Steps for Embedded Rust

  • An overview of the no_std, core, and broader embedded Rust ecosystem
  • Selecting a target and interpreting target triples
  • Configuring rustup, cargo, and the necessary target toolchains

Tooling, Build, and Debug Workflows

  • Leveraging cargo, cargo-embed, probe-run, and OpenOCD workflows
  • Flashing and debugging via hardware probes (ST-Link, JLink)
  • Addressing CI considerations when building embedded Rust firmware

Hardware Abstraction and Peripheral Interaction

  • Exploring embedded-hal traits and driver patterns
  • Utilizing Peripheral Access Crates (PACs) and device crates (svd2rust)
  • Creating and employing HAL drivers and Board Support Crates (BSCs)

Memory Safety, Concurrency, and Real-Time Systems

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

Error Handling, Testing, and Reliability

  • Developing error handling patterns for constrained environments
  • Comparing host-based unit testing with hardware-based integration testing
  • Conducting fault analysis, logging, and post-mortem strategies

Performance, Power, and Resource Optimization

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

Deployment, Security, and Ecosystem Best Practices

  • Implementing secure boot, firmware signing, and update mechanisms
  • Addressing supply-chain concerns and dependency management
  • Outlining a roadmap for migrating C firmware to Rust and identifying community resources

Summary and Path Forward

Requirements

  • A solid grasp of core Rust concepts, including ownership, borrowing, and lifetimes.
  • Experience in developing non-trivial Rust programs (intermediate level).
  • Familiarity with embedded system concepts such as memory-mapped I/O, interrupts, and peripherals.

Target Audience

  • Embedded firmware engineers interested in adopting Rust.
  • Software engineers with Rust experience looking to transition into low-level systems.
  • Technical leads assessing Rust for embedded product development.

Number of participants


Price per participant

Testimonials (1)

Upcoming Courses

Related Categories