Get in Touch
 Duration 14 hours

Course Outline

Initiating Embedded Rust Development

  • An introduction to no_std, the core library, and the broader Rust embedded ecosystem.
  • Selecting appropriate targets and interpreting target triples.
  • Configuring rustup, cargo, and the necessary target toolchains.

Tooling, Build, and Debugging Workflows

  • Leveraging cargo, cargo-embed, probe-run, and OpenOCD for streamlined processes.
  • Executing flashing and debugging tasks using hardware probes like ST-Link and JLink.
  • Integrating CI best practices for building embedded Rust firmware.

Hardware Abstraction and Peripheral Interaction

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

Memory Safety, Concurrency, and Real-Time Systems

  • Implementing safe patterns for shared state and mutable references during interrupts.
  • Adopting RTIC and other concurrency models suited for real-time applications.
  • Optimizing heap versus stack usage, managing allocators, and minimizing dynamic allocation.

Error Handling, Testing, and Reliability

  • Applying effective error handling strategies in resource-constrained settings.
  • Conducting unit tests on the host and integration tests on actual hardware.
  • Performing fault analysis, logging, and implementing post-mortem strategies.

Performance, Power, and Resource Optimization

  • Carrying out benchmarking, measurement, and optimization of critical code paths.
  • Employing code size reduction techniques and utilizing linker scripts.
  • Implementing power management strategies and low-power design patterns.

Deployment, Security, and Ecosystem Best Practices

  • Establishing secure boot, firmware signing, and update mechanisms.
  • Addressing supply-chain considerations and effective dependency management.
  • Planning the migration of C firmware to Rust and exploring community resources.

Conclusions and Future Steps

Requirements

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

Target Audience

  • Embedded firmware professionals seeking to integrate Rust into their workflow.
  • Software engineers with Rust expertise who are transitioning into low-level systems development.
  • Technical leaders assessing Rust for embedded product development projects.

Number of participants


Price per participant

Testimonials (1)

Upcoming Courses

Related Categories