Tutorial STM32CubeProgrammer

Indice

STM32CubeProgrammer Tutorial

Introduzione a STM32CubeProgrammer

STM32CubeProgrammer è un tool di programmazione STM32 molto potente lanciato da STMicroelectronics. Integra altamente le funzioni dei seguenti tool:

  • STVP o STLinkUtility (tool di programmazione JTAG/SWD)
  • STMFlashLoaderDemo (tool di programmazione UART)
  • DfuSeDemo (tool di burning USB)
  • ST-LinkUpgrade (tool di aggiornamento del firmware del programmatore Stlink)

Interfaccia utente di STM32CubeProgrammer

STM32CubeProgrammer fornisce sia interfacce utente grafiche che a riga di comando. Inoltre, fornisce anche un’API C++, e gli utenti possono integrare le funzioni di STM32CubeProgrammer nelle applicazioni PC che sviluppano.

Overview of STM32CubeProgrammer
Overview of STM32CubeProgrammer

Come mostrato nella figura sopra, nell’area di configurazione sulla destra, gli utenti possono scegliere di connettersi al microcontrollore STM32 tramite l’interfaccia di debug STLink, o interfacce di comunicazione come USB e UART. Dopo aver effettuato la connessione al microcontrollore STM32, è possibile visualizzare il modello MCU corrente, la versione e la dimensione della Flash nell’area “Informazioni sul dispositivo”. Se è collegata una scheda di sviluppo ST ufficiale, verrà visualizzato anche il nome della scheda di sviluppo.

Funzioni di STM32CubeProgrammer

STM32CubeProgrammer supporta la cancellazione e la lettura/scrittura della memoria on-chip degli MCU STM32 tramite l’interfaccia di debug SWD/JTAG di STLink o tramite interfacce di comunicazione come UART, USB, I2C, SPI e CAN, utilizzando il bootloader di sistema programmato in fabbrica memorizzato all’interno del chip.

Ecco le funzioni chiave di STM32CubeProgrammer:

Cancellazione e programmazione

STM32CubeProgrammer supporta la cancellazione basata su settori e la cancellazione completa del chip della memoria Flash. Può importare vari formati di file per la programmazione, inclusi binario (.bin), elf (.elf, .axf, .out), hex (.hex) e Motorola S-record (.srec).

Erasing and Programming of STM32CubeProgrammer
Erasing and Programming of STM32CubeProgrammer

Operazione di cancellazione

Dopo aver stabilito una connessione con l’MCU di destinazione tramite STLink, è possibile cancellare i settori Flash nella pagina “Cancellazione e programmazione” per settore o eseguire una cancellazione completa del chip selezionando il pulsante “Cancella chip completo”.

Operazione di programmazione

Nella pagina “Cancellazione e programmazione”, è possibile fare clic sul pulsante “Sfoglia” per importare un file eseguibile e quindi fare clic su “Avvia programmazione” per avviare il processo di programmazione.

In alternativa, nella pagina “Edizione memoria e file”, è possibile aprire il file eseguibile che si desidera programmare e quindi fare clic su “Download” per avviare la programmazione.

Nella pagina “Edizione memoria e file” sotto “Memoria dispositivo”, è anche possibile leggere i valori della memoria MCU in un intervallo di indirizzi specificato e salvare il contenuto letto come file binario (.bin), hex (.hex) o S-record (.srec) utilizzando il menu “Salva con nome”.

Oltre a programmare l’intero file eseguibile, è possibile modificare direttamente il valore in un indirizzo specifico nella pagina “Edizione memoria e file” sotto “Memoria dispositivo”. Dopo aver premuto “Invio”, STM32CubeProg leggerà, modificherà, cancellerà e riscriverà automaticamente. Questo metodo può essere utilizzato per la programmazione di byte programmabili una sola volta (OTP).

Lettura/Scrittura byte di opzione

Nella pagina OB (Byte di opzione), è possibile visualizzare le impostazioni correnti dei byte di opzione per l’MCU connesso. È anche possibile modificare i valori dei byte di opzione qui. Per spiegazioni dettagliate dei byte di opzione, fare riferimento al manuale di riferimento per l’MCU specifico.

Option bytes Reading and Writing of STM32CubeProgrammer
Option bytes Reading and Writing of STM32CubeProgrammer

"Programmazione due in uno"

Utilizzando la modalità di programmazione “Due-in-Uno” nella pagina “Cancella e Programma”, è possibile programmare sia la memoria FLASH che i byte di opzione in un’unica operazione. La configurazione dei byte di opzione viene eseguita utilizzando la “riga di comando STM32CubeProgrammer” con il comando “-ob”. Ad esempio, per impostare la protezione in lettura a livello 1 dopo aver programmato la FLASH, seguire questi passaggi:

  • Impostare il percorso del file eseguibile da scaricare.
  • Selezionare “Cancella chip completo” e “Scarica file” in “Modalità automatica”.
  • Nella casella di input “Comandi byte di opzione”, inserire “-ob rdp=0xBB”.
  • Fare clic su “Avvia modalità automatica” e STM32CubeProgrammer eseguirà le operazioni specificate in sequenza, visualizzando l’avanzamento nella finestra di registro.
2 in 1 Programming-Automatic Mode of STM32CubeProgrammer
2 in 1 Programming-Automatic Mode of STM32CubeProgrammer

Per i dettagli sul formato del comando “-ob”, fare riferimento alla sezione 3.2.15 di UM2237 (Manuale utente dello strumento software STM32CubeProgrammer). Le definizioni del campo OptByte all’interno del comando “-ob” non sono spiegate in UM2237, ma è possibile trovarle ispezionando la scheda “Byte di opzione” nell’interfaccia grafica STM32CubeProgrammer, poiché le definizioni nel comando “-ob” corrispondono a quelle qui. In alternativa, è possibile utilizzare il comando “-ob displ” per visualizzare la configurazione corrente di tutti i byte di opzione, consentendo di comprendere le definizioni di ciascun campo OptByte.

Lettura/Scrittura di memoria esterna

Se si desidera leggere/scrivere nella memoria esterna collegata a STM32 tramite interfacce come SPI, FMC, QSPI, è necessario un loader esterno. CubeProgrammer fornisce loader esterni predefiniti corrispondenti alla memoria esterna integrata nelle schede di sviluppo STM32. Se si utilizza un modello di memoria diverso, è possibile creare i propri file loader esterni (*.stldr). Fare riferimento alla sezione 2.3.3 di UM2237 per istruzioni dettagliate.

External Memory Programming of STM32CubeProgrammer
External Memory Programming of STM32CubeProgrammer

Prima di eseguire operazioni sulla memoria esterna, è necessario selezionare il loader esterno corrispondente nella pagina “Loader esterno”. Questo loader esterno verrà utilizzato nelle successive operazioni di cancellazione e programmazione sulla memoria esterna nelle pagine “Cancella e Programma” e “Modifica memoria e file”.

Bootloader

I microcontrollori STM32 sono forniti di serie con una memoria di sistema interna che contiene un bootloader, che consente gli aggiornamenti della memoria Flash on-chip tramite interfacce come USART, USB, I2C, SPI e CAN. L’interfaccia bootloader supportata varia a seconda del modello di microcontrollore STM32 ed è possibile trovare informazioni specifiche nella nota applicativa AN2606. STLink v2 e STLink v3 forniscono interfacce bridge dai protocolli di comunicazione USART, USB, I2C, SPI e CAN a USB, consentendo ai microcontrollori STM32 di connettersi a un PC.

Bootloader of STM32CubeProgrammer
Bootloader of STM32CubeProgrammer

STM32CubeProgrammer fornisce un’interfaccia PC per eseguire la cancellazione e la programmazione della memoria Flash on-chip tramite il bootloader. STLink v2 supporta solo le interfacce di comunicazione USART e USB, mentre STLink v3 aggiunge il supporto per le interfacce di comunicazione I2C, SPI e CAN. In precedenza, ST offriva due strumenti software PC separati: “STM32 Flash loader demonstrator” e “Dfuse Demo”, ciascuno dei quali supportava la funzionalità bootloader USART e USB DFU. Ora, è possibile utilizzare STM32CubeProgrammer, un unico strumento software, per supportare tutte queste interfacce di comunicazione.

Finestra di input delle informazioni SWO

Durante lo sviluppo, è spesso necessario emettere informazioni di debug. Un metodo comune è reindirizzare l’output printf a una porta seriale, che consuma una porta seriale. Un altro metodo è reindirizzare l’output printf al pin SWO (Serial Wire Output) tramite l’interfaccia di debug SWD, consentendo di inviare le informazioni di debug tramite SWO. La finestra SWV (Serial Wire Viewer) di STM32CubeProgrammer può visualizzare le informazioni di debug inviate tramite SWO e salvare tutte le informazioni ricevute in un file “.log” specificato.

Serial Wire Viewer of STM32CubeProgrammer
Serial Wire Viewer of STM32CubeProgrammer

Interfaccia a riga di comando

STM32CubeProgrammer fornisce un’interfaccia a riga di comando che consente di eseguire la maggior parte delle sue funzioni eseguendo comandi. Il file eseguibile “STM32_Programmer_CLI.exe” si trova nella cartella “bin” della directory di installazione di STM32CubeProgrammer. L’esecuzione di “STM32_Programmer_CLI.exe” visualizzerà un elenco dei comandi supportati e dei relativi parametri.

Command Writing of STM32CubeProgrammer
Command Writing of STM32CubeProgrammer

L’interfaccia a riga di comando fornisce anche alcune funzionalità non disponibili nell’interfaccia grafica, come la creazione di pacchetti attendibili, la programmazione sicura, il calcolo dei valori CRC e altro ancora. Per istruzioni dettagliate, fare riferimento a UM2237. L’esempio nella figura dimostra la connessione al chip di destinazione tramite l’interfaccia SWD e l’impostazione del livello di protezione in lettura 1 utilizzando le istruzioni della riga di comando. Il comando completo è “STM32_Programmer_CLI.exe -c port=SWD -ob rdp=0xBB.”

Aggiornamento Firmware STLink

Dopo aver collegato il debugger STLink al computer, aprire STM32CubeProgrammer e aggiornare la connessione STLink per visualizzare la versione corrente del firmware STLink. Fare clic sul pulsante “Aggiornamento Firmware” e aprire lo strumento STLinkUpgrade per aggiornare la versione del firmware STLink.

Firmware Upgrade of ST-LINK of STM32CubePorgrammer
Firmware Upgrade of ST-LINK of STM32CubePorgrammer

Come Usare STM32CubeProgrammer?

STM32CubeProg è uno strumento di programmazione completo che include operazioni tipiche come lettura, scrittura (download/programmazione), cancellazione e programmazione di byte di opzione.

Ambiente di Installazione

STM32CubeProg supporta i sistemi operativi Windows, Linux e macOS. Poiché è basato su JAVA, è necessario installare Java Runtime Environment (JRE) sul computer. Il processo di installazione è mostrato nell’immagine sottostante (versione 2.5.0b):

Connessione Chip e STM32CubeProg

Quando si utilizza STM32CubeProgrammer per connettersi alla scheda di destinazione tramite STLINK, potrebbero verificarsi casi in cui la connessione non riesce. Ciò potrebbe essere dovuto a una versione del firmware bassa all’interno dello STLINK. Per risolvere questo problema, fare clic sul pulsante “Aggiornamento Firmware” per eseguire un aggiornamento del firmware. Durante il processo di aggiornamento, potrebbe essere necessario collegare e scollegare più volte. Dopo aver completato l’aggiornamento, scollegare e ricollegare una volta affinché STM32CubeProgrammer riconosca lo STLINK.

Programmazione e Debug del Chip

Dopo aver completato il debug del programma, è necessario programmare il chip con il codice. In genere, si hanno tre opzioni:

  1. Utilizzare l’interfaccia di debug JTAG/SWD per programmare il chip, spesso richiedendo il software STLink Utility o STVP.
  2. Programmare il chip tramite l’interfaccia UART, utilizzando il software STM32 Flash loader demonstrator sul PC.
  3. Programmare il chip tramite l’interfaccia USB, utilizzando il software USB DfuSe.

Programmazione con ST-LINK

Programming with ST-LINK _ STM32CubeProgrammer
Programming with ST-LINK _ STM32CubeProgrammer

Programmazione con UART

Programming with UART_ STM32CubeProgrammer
Programming with UART_ STM32CubeProgrammer

Programmazione con USB

Programming with USB_ STM32CubeProgrammer
Programming with USB_ STM32CubeProgrammer

Quando si programma tramite la modalità USB DFU, assicurarsi di disinstallare eventuali strumenti di programmazione STM32 DFU installati in precedenza. Quindi, eseguire il file STM32Bootloader.bat nella directory di installazione.

Iscriviti

Unisciti alla nostra lista di iscritti per ricevere aggiornamenti mensili sul blog, notizie tecnologiche, casi di studio. Non invieremo mai spam e potrai annullare l’iscrizione in qualsiasi momento.

Informazioni sull'autore

Picture of Aidan Taylor
Aidan Taylor

I am Aidan Taylor and I have over 10 years of experience in the field of PCB Reverse Engineering, PCB design and IC Unlock.

Hai bisogno di aiuto?

Torna in alto

Instant Quote