Get in Touch
 Duration 14 hours

Course Outline

Introduction to Embedded Rust

  • Overview of the no_std, core, and broader embedded Rust ecosystem.
  • Selecting appropriate targets and interpreting target triples.
  • Configuring rustup, cargo, and specific target toolchains.

Tooling, Build, and Debugging Workflows

  • Utilizing cargo, cargo-embed, probe-run, and OpenOCD integration workflows.
  • Performing flashing and debugging using hardware probes (e.g., ST-Link, JLink).
  • Addressing Continuous Integration (CI) requirements for embedded Rust firmware builds.

Hardware Abstraction and Peripheral Access

  • Exploring embedded-hal traits and established driver patterns.
  • Working with Peripheral Access Crates (PACs) and device crates (svd2rust).
  • Creating and utilizing Hardware Abstraction Layer (HAL) drivers and Board Support Crates (BSCs).

Memory Safety, Concurrency, and Real-Time Operations

  • Implementing safe patterns for shared state and mutable references within interrupts.
  • Employing RTIC and alternative concurrency models for real-time system stability.
  • Managing heap versus stack usage, allocators, and minimizing dynamic allocation.

Error Handling, Testing, and Reliability

  • Applying effective error handling strategies in resource-constrained environments.
  • Conducting host-based unit testing versus hardware integration testing.
  • Analyzing faults, implementing logging, and defining post-mortem review strategies.

Performance, Power Efficiency, and Resource Optimization

  • Executing benchmarks, measuring performance, and optimizing critical code paths.
  • Reducing code size through optimization techniques and linker script configuration.
  • Strategizing power management and adopting low-power design patterns.

Deployment, Security, and Ecosystem Best Practices

  • Implementing secure boot, firmware signing, and over-the-air update strategies.
  • Considering supply chain security and managing dependencies effectively.
  • Planning the migration from C firmware to Rust and leveraging community resources.

Conclusion and Future Steps

Requirements

  • Solid grasp of fundamental Rust concepts, including ownership, borrowing, and lifetimes.
  • Demonstrated experience in developing complex Rust applications (intermediate proficiency).
  • Knowledge of embedded systems principles, such as memory-mapped I/O, interrupts, and peripheral handling.

Target Audience

  • Embedded firmware engineers aiming to integrate Rust into their workflow.
  • Software engineers with Rust expertise looking to transition into low-level systems development.
  • Technical leaders assessing the viability of Rust for embedded product development.

Number of participants


Price per participant

Testimonials (1)

Upcoming Courses

Related Categories