Installazione di Embassy (RUST) in Windows

In questo articolo riportiamo le istruzioni per installare Embassy (RUST) in Windows e configurare un esempio di lampeggio LED per la scheda Nucleo F401RE

Embassy è un framework asincrono per la programmazione embedded in Rust, progettato per offrire un modo efficiente e sicuro di scrivere codice non bloccante su microcontrollori e dispositivi embedded. Embassy sfrutta le caratteristiche di Rust come la gestione della memoria sicura e il controllo della concorrenza per semplificare lo sviluppo di firmware su sistemi con risorse limitate.

Caratteristiche principali di Embassy

  1. Asincronia e concorrenza: Embassy utilizza il modello di programmazione asincrona per gestire eventi e attività, permettendo di scrivere codice che può svolgere più attività senza bloccare il microcontrollore. Invece di utilizzare thread pesanti, Embassy usa task leggeri basati su async/await, che sono più efficienti per i microcontrollori.
  2. No_std: Embassy è progettato per funzionare senza la libreria standard (std), essendo quindi compatibile con ambienti embedded che spesso non hanno accesso al sistema operativo e richiedono un uso minimo di risorse.
  3. Device driver e periferiche: Embassy fornisce driver integrati per varie periferiche e protocolli (come UART, SPI, I2C), semplificando l’interazione con l’hardware. Questi driver sono progettati per funzionare in modalità asincrona e consentono di eseguire operazioni in background senza bloccare il codice principale.
  4. Scheduler leggero: Embassy include un piccolo scheduler non preemptive per gestire i task asincroni in maniera efficiente, con un basso consumo di risorse. Questo scheduler è particolarmente utile per microcontrollori con memoria e potenza di calcolo limitate.
  5. Supporto per diverse piattaforme embedded: Embassy è compatibile con vari microcontrollori, inclusi i chip STM32, Nordic e altri, e viene costantemente aggiornato per supportare più piattaforme.
  6. Progettato per la sicurezza: Rust garantisce un’alta sicurezza nella gestione della memoria e nella concorrenza, riducendo drasticamente i rischi di errori di segmentazione, condizioni di gara e buffer overflow, molto comuni nella programmazione embedded tradizionale.


Guida all’installazione di Rust – Embassy su Windows e configurazione dell’esempio Blink LED su Nucleo F401RE

1. Scarica e installa Rust (include Cargo)

Cargo è lo strumento di gestione dei pacchetti e build di Rust. Installando Rust, otterrai automaticamente Cargo.

  • Vai al sito ufficiale di Rust.
  • Clicca su Install Rust e scarica il file di installazione.
  • Esegui il file .exe scaricato.
  • Scegli “Proceed with standard installation” e segui le istruzioni, che di solito ti guideranno nell’installazione dell’ultima versione stabile di Rust e configureranno Cargo automaticamente.

2. Installa Visual Studio C++ Build Tools

Rust richiede alcuni strumenti di compilazione forniti da Visual Studio C++ Build Tools. Per installarli:

  • Vai alla pagina di download dei Visual Studio C++ Build Tools e scarica l’installer.
  • Esegui l’installer e segui le istruzioni per completare l’installazione.

3. Configura l’ambiente

Dopo l’installazione, verifica che Rust e Cargo siano configurati correttamente:

  • Apri il Prompt dei comandi o PowerShell e digita:
    rustc --version and cargo --version
        • Se ottieni versioni valide di Rust e Cargo, l’installazione è stata completata correttamente.

        4. Aggiungi il percorso di Cargo al PATH

        Durante l’installazione, il percorso di Cargo dovrebbe essere aggiunto automaticamente alla variabile d’ambiente PATH. Se non è stato fatto, puoi aggiungerlo manualmente:

        • Cerca “Variabili d’ambiente” in Windows e apri il pannello.
        • Modifica la variabile PATH aggiungendo il percorso: C:\Users\YourUsername\.cargo\bin. Sostituisci YourUsername con il tuo nome utente effettivo.

        5. Verifica l’installazione

        Apri nuovamente il Prompt dei comandi e riprova i comandi:

           cargo --version

        per assicurarti che tutto sia configurato correttamente.

        6. Installa probe-rs

        Per programmare la scheda Nucleo F401RE utilizzando l’ST Link, installa probe-rs:

        • Apri PowerShell come Amministratore e inserisci il comando:
          irm https://github.com/probe-rs/probe-rs/releases/latest/download/probe-rs-tools-installer.ps1 | iex

        7. Configura il workspace Embassy

        1. Crea una cartella per il workspace, ad esempio C:\ws_embassy.
        2. Apri una shell dei comandi ed entra nella cartella appena creata:
           cd C:\ws_embassy
        1. Clona il repository di Embassy:
           git clone https://github.com/embassy-rs/embassy.git
        1. Entra nella cartella embassy:
           cd embassy

        8. Configura l’esempio Blink LED per la Nucleo F401RE

        Per utilizzare la scheda Nucleo F401RE, è necessario modificare alcuni file di configurazione:

        1. Modifica il file Cargo.toml:
        • Vai in C:\ws_embassy\embassy\examples\stm32f4 e apri il file Cargo.toml.
        • Modifica il parametro embassy-stm32 per includere la feature stm32f401re, ad esempio:
          toml

        [dependencies.embassy-stm32]

        version = “0.1” features = [“stm32f401re”]

        1. Modifica il file config.toml:
        • Vai in C:\WS_embassy\embassy\examples\stm32f4\.cargo e apri il file config.toml.
        • Modifica il parametro runner in modo che corrisponda al chip della tua scheda:
          toml runner = "probe-rs run --chip STM32F401RETx"
        1. Modifica il file blinky.rs:
        • Vai in C:\WS_embassy\embassy\examples\stm32f4\src\bin e apri blinky.rs con un editor di testo come Notepad.
        • Modifica il pin del LED in modo che corrisponda a PA5, che è collegato al LED sulla scheda:
          rust let mut led = Output::new(p.PA5, Level::High, Speed::Low);

        9. Esegui l’esempio Blink LED

        Per eseguire l’esempio di lampeggio del LED, apri una shell dei comandi, vai nella cartella dell’esempio stm32f4 e lancia uno dei seguenti comandi:

           cargo run --release --bin blinky

        oppure

           probe-rs run --chip STM32F401RETx target\thumbv7em-none-eabi\release\blinky