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.
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).
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.
"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.
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.
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.
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.
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.
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.
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.
Download STM32CubeProg
Sito Ufficiale: https://www.st.com/en/development-tools/stm32cubeprog.html
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:
- Utilizzare l’interfaccia di debug JTAG/SWD per programmare il chip, spesso richiedendo il software STLink Utility o STVP.
- Programmare il chip tramite l’interfaccia UART, utilizzando il software STM32 Flash loader demonstrator sul PC.
- Programmare il chip tramite l’interfaccia USB, utilizzando il software USB DfuSe.




