Build an Embedded Application with Rust and Debug with Arm Development Studio

Install Arm Development Studio

To install Arm Development Studio, follow the instructions from the Arm Development Studio Install Guide .

Arm Development Studio provides Fixed Virtual Platform (FVP) models that execute example code. You can also debug the code with the Arm Debugger.

Note that Arm Development Studio is license-managed.

Install the Rust compiler

To install the Rust compiler rustc and cross-compilation support for the Arm architecture of choice, follow the instructions from the Rust for Embedded Applications Install Guide .

This example uses Armv7-M, and includes support for Cortex-M3.


            rustup target add thumbv7m-none-eabi

Create example project

Before you can begin, you need to create a rust project known as a crate.

An example template that you can use to generate a crate is available in The Embedded Rust Book .


            cargo generate --git

You are prompted to provide a Project Name, and a directory with the project name is created:


        Project Name: rust-example


Navigate into the directory:


            cd rust-example

It is possible to create a simple single-file Rust application, within the examples folder of the crate.

Use your preferred text editor to create a file named in the examples directory.

Paste the code below into the file and save it:



use panic_halt as _;
use cortex_m_rt::entry;
use cortex_m_semihosting::{debug, hprintln};

fn main() -> ! {

   let mut sum = 0;

   for n in 1..101 {
      sum += n;
      hprintln!("Total sum to {} is {}", n, sum).unwrap();

      let calc = (n*(n+1))/2;
      hprintln!("Calculated sum is {}\n", calc).unwrap();

   // Semihosting exit
   // Function never returns

The crate includes a default memory.x file that matches the memory map of the FVP, so no additional changes are needed.

Build the example

Use cargo to build the example application:

Build application

The application name is the same as the source file, ignoring the .rs file type.


            cargo build --example armds

The project automatically includes the appropriate libraries.

The output is similar to:


   Compiling cortex-m v0.6.7
   Compiling cortex-m-semihosting v0.3.7
   Compiling rust-example v0.1.0 (/home/ubuntu/rust-example)
   Compiling panic-halt v0.2.0
   Compiling cortex-m-rt-macros v0.6.15
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 9.86s


The executable is located in the target/thumbv7m-none-eabi/debug/examples folder.