Mare Nostrum

Working with Rust Embedded on WSL

Working with Rust Embedded on WSL

In this post, it’ll be tried to explain how to get a working example by using only the tools that provided by Rust community. So let’s start!


The Tools that Used within this Post

  • Rust Toolchain1
  • usbpid-win2
  • probe-rs3
  • VSCode4
  • WSL5
  • rust-analyzer plugin for VSCode6
  • probe-rs plugin for VSCode7
  • WSL plugin for VSCode8
  • GitHUB repository9
  • STM32F429ZI Discovery Board10

Setup

  • Install WSL11 and an Ubuntu 22.04.2 LTS12 instance from Windows Store
  • Download and install usbpid-win from the Github repository2
  • Run the WSL instance on a windows commandline as follow
PS C:\Users\ierturk> wsl ~
  • Install probe-rs within WSL instance as decribed in here3
  • Plugin the Discovery board into a USB port on your Windows PC
    On a windows command line when you issued follwing commad, a list will be displayed
PS C:\Users\ierturk> usbipd wsl list
BUSID  VID:PID    DEVICE                                                        STATE
3-1    0483:374b  ST-Link Debug, USB Mass Storage Device, STMicroelectronic...  Not attached
3-2    046d:c52b  Logitech USB Input Device, USB Input Device                   Not attached
4-1    05ac:8509  FaceTime HD Camera (Built-in), FaceTime HD camera             Not attached
6-2    05ac:8242  Apple IR Receiver                                             Not attached
6-3    05ac:0253  Apple Keyboard, Apple Multi-Touch, USB Input Device           Not attached
7-3    05ac:821d  Apple Broadcom Built-in Bluetooth                             Not attached
  • Bind the USB device on an elevated command line as follow
PS C:\Users\root> usbipd bind --busid 3-1
  • Now you can attach the USB device as standard user as follow
PS C:\Users\ierturk> usbipd wsl attach --busid 3-1
  • Install VSCode and the plugins mentioned here 6 7 8

Running and Debugging

  • Open VSCode
  • Install WSL plugin8 in VSCode
  • Connect to WSL instance from within VSCode using WSL plugin8
  • Install rust-analyzer6 and probe-rs7 plugins in VSCode in WSL instance
  • Open terminal in VSCode
  • Create a work directory and clone the repository9 as follow
ierturk@DESKTOP-JC8L4M1:~$ mkdir Work
ierturk@DESKTOP-JC8L4M1:~$ cd Work
ierturk@DESKTOP-JC8L4M1:~$ sudo apt-get install git
ierturk@DESKTOP-JC8L4M1:~$ git clone https://github.com/ierturk/rust-embedded-wsl-probe-rs.git
  • Open folder rust-embedded-wsl-probe-rs
  • Now just open debug tab and hit the button
  • Place breakpoints where you want
  • Hit the play button

Then it should be displayed following screen VSCode DEbug Screen


Conclusion

LCD Demo It just woks as you can see. Yo can work on this and modify some parts according to your requirements.

Hope you enjoyed with the tutorial, found useful. Thank you for reading.

5

WSL