Get in Touch
 Duration 14 hours

Course Outline

Getting Started with Embedded Rust

  • An overview of no_std, core, and the broader embedded Rust ecosystem
  • Target selection and comprehension of 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 processes using hardware probes like ST-Link and JLink
  • Addressing CI considerations when building embedded Rust firmware

Hardware Abstraction and Peripheral Access

  • Analyzing embedded-hal traits and standard driver patterns
  • Examining Peripheral Access Crates (PACs) and device crates generated by 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
  • Exploring RTIC and alternative concurrency models suited for real-time systems
  • Comparing heap versus stack usage, managing allocators, and minimizing dynamic allocation

Error Handling, Testing & Reliability

  • Developing error handling strategies tailored for constrained environments
  • Conducting unit testing on the host compared to integration testing on hardware
  • Performing fault analysis, implementing logging, and establishing post-mortem strategies

Performance, Power & Resource Optimization

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

Deployment, Security & Ecosystem Best Practices

  • Integrating secure boot, firmware signing, and update strategies
  • Evaluating supply-chain risks and managing dependencies effectively
  • Defining a roadmap for migrating C firmware to Rust and leveraging community resources

Summary and Next Steps

Requirements

  • Proficiency in core Rust concepts, including ownership, borrowing, and lifetimes
  • Practical experience in developing complex Rust applications (intermediate level)
  • Familiarity with embedded system principles such as memory-mapped I/O, interrupts, and peripherals

Audience

  • Embedded firmware engineers seeking to integrate Rust into their workflow
  • Software engineers with Rust background transitioning into low-level systems development
  • Technical leaders assessing the suitability of Rust for embedded product strategies

Number of participants


Price per participant

Testimonials (1)

Upcoming Courses

Related Categories