Embedded Software using RUST
CEC Archives | CEC Semester Twenty Three 2023 | Embedded Software using RUST
Selecting the right embedded software language is no longer as simple as just choosing C or C++. Rust, a memory-safe programming language offers an interesting use case to help businesses develop reusable, scalable, and higher quality software. In the session, we are going to explore Rust, its capabilities, and how it fits into embedded software development.
Before writing an application for hardware, it’s helpful to learn a language and the process using emulation. In this session, we will explore how to create a project, leverage Rusts cargo tools, and write a Rust application for the Arm Cortex®-M processor. Attendees will walk away understanding how to run an emulated Rust application and debug it using GDB.
With the understanding learned from using QEMU, we are now ready to deploy an application to hardware. In this session, we will deploy our first application to the STM32F3 Discovery board and debug it. In addition, we will learn about memory mapping registers using the microarchitecture, peripheral access (PAC), and HAL crates. Attendees will walk away understanding the fundamentals of memory-mapping registers.
A common activity in many embedded applications is to interface with the microcontroller’s peripherals. In this session, we will examine the differences between interfacing with an mcu’s registers in C and Rust. Attendees will learn about important Rust keywords, wrappers, exceptions, and more.
Rust is a complex language, one that will take time and effort to master, especially for embedded systems. In this session, we will explore some concepts in portability and concurrency, before discussing resources to help attendees master Rust.

Jacob Beningo is an embedded software consultant who currently works with clients in more than a dozen countries to dramatically transform their businesses by improving product quality, cost and time to market. He has published more than 300 articles on embedded software development techniques, has published several books, is a sought-after speaker and technical trainer and holds three degrees which include a Masters of Engineering from the University of Michigan.