Get in Touch
 Duration 14 hours

Course Outline

Getting Started with Embedded Rust

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

Tooling, Build & Debug Workflow

  • Utilizing cargo, cargo-embed, probe-run, and OpenOCD workflows
  • Flashing and debugging via hardware probes (ST-Link, JLink)
  • CI considerations for constructing embedded Rust firmware

Hardware Abstraction and Peripheral Access

  • Exploring embedded-hal traits and driver design patterns
  • Working with peripheral access crates (PACs) and device crates (svd2rust)
  • Creating 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
  • Applying RTIC and other concurrency models for real-time systems
  • Managing heap vs. stack usage, allocators, and avoiding dynamic allocation

Error Handling, Testing & Reliability

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

Performance, Power & Resource Optimization

  • Performing benchmarking, measurement, and optimization of critical paths
  • Applying code size reduction techniques and linker scripts
  • Implementing power management strategies and low-power design patterns

Deployment, Security & Ecosystem Best Practices

  • Managing secure boot, firmware signing, and update strategies
  • Addressing supply-chain considerations and dependency management
  • Developing a roadmap for migrating C firmware to Rust and accessing community resources

Summary and Next Steps

Requirements

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

Target Audience

  • Embedded firmware engineers seeking to integrate Rust into their workflow
  • Software engineers with Rust background aiming to transition into low-level systems development
  • Technical leads assessing the viability of Rust for embedded product development

Number of participants


Price per participant

Testimonials (1)

Upcoming Courses

Related Categories