Ho una scheda di rilevamento STM32 e vorrei essere in grado di programmarla su Linux.
Qual è il modo più semplice per farlo?
Ho una scheda di rilevamento STM32 e vorrei essere in grado di programmarla su Linux.
Qual è il modo più semplice per farlo?
Risposte:
Un modo semplice per programmare ed eseguire il debug della scheda Discovery STM32 (o qualsiasi STM32 utilizzando un programmatore ST-Link) è utilizzare il progetto 'stlink' https://github.com/texane/stlink (tuttavia anche OpenOCD sembra popolare)
Le schede ST Nucleo appaiono anche come dispositivi flash USB, quindi non è nemmeno necessario stlink
: basta copiare il file su di esse.
Ci sono alcune buone pagine su come sviluppare per la scoperta STM32 su Linux, come http://gpio.kaltpost.de/?page_id=131 e http://torrentula.to.funpic.de/2012/03/22/ setting-up-the-stm32f4-arm-development-toolchain / e http://jethomson.wordpress.com/2011/11/17/getting-started-with-the-stm32f4discovery-in-linux/
Tuttavia ho trovato l'ultimo link il più utile. Mostra come costruire i progetti STM32 di ST così com'è - L'unica modifica è aggiungere il suo Makefile, che sembra una soluzione perfetta.
Nelle versioni recenti di Ubuntu, è possibile installare un pacchetto che contiene un compilatore ARM:
sudo apt-get install gcc-arm-none-eabi
Si noti che i processori sono tutti leggermente diversi. STM32F0..4 avranno tutti bisogno di flag di compilazione diversi e lo script del linker sarà leggermente diverso per ciascuno (anche se in realtà solo a causa delle dimensioni della RAM e Flash modificate).
Modifica: se vuoi iniziare molto velocemente puoi anche consultare http://www.espruino.com . È un interprete JavaScript che gira su STM32 stesso, quindi una volta installato 'stlink' in modo da poter eseguire il flashing sulla scheda, puoi semplicemente scaricare un'immagine da quel sito, flash su, quindi connettersi con un'applicazione terminale e iniziare a programmare.
Se ti piacciono di più gli editor di testo e i Makefile invece di utilizzare una GUI, puoi fare:
Porta il tuo progetto alla lavagna. Utilizzare entrambi
Codice in un editor di testo e utilizzo degli strumenti da riga di comando. Questo tutorial fornirà molti suggerimenti.
Godere
Eclipse , GCC e OpenOCD è una toolchain. È raccomandato da EMCU-IT e ci sono ulteriori informazioni qui . Quelle pagine consigliano anche di utilizzare un RTOS come FreeRTOS.org , ma dipende da te.
E per aiuto con la compilazione degli esempi STM32 in Linux vai qui . Quel link punta a un makefile per gli esempi che possono essere invocati
git clone git://github.com/snowcap-electronics/stm32-examples.git
cd stm32-examples
wget http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32_f105-07_f2xx_usb-host-device_lib.zip
unzip stm32_f105-07_f2xx_usb-host-device_lib.zip
Sono inoltre documentate alcune correzioni minori del codice, ma la maggior parte del progetto dovrebbe funzionare
make CROSS_COMPILE=/path/to/arm-2011.03/bin/arm-none-eabi-
Ho avuto successo con https://github.com/JorgeAparicio/bareCortexM (vedi anche i post sul blog collegati). Sono convinto che posso semplicemente passare attraverso il codice o sfogliare la memoria del dispositivo invece di inserire istruzioni di debug nel mio codice o indovinare cosa sta succedendo all'interno del chip.
Il progetto bareCortexM è un modello Eclipse per lo sviluppo con la serie Cortex M, in particolare STM32, in C ++ senza sistema operativo. È configurato per utilizzare openocd, gcc e ha script per eseguire il flashing e il debug su diverse destinazioni, tra cui alcune delle schede di rilevamento. Seguendo le istruzioni e installando i plugin Eclipse consigliati sono stato in grado di utilizzare il mio STM32VLDISCOVERY su Ubuntu.
Come raccomandato, ho combinato il modello eclipse con la libreria di modelli c ++ libstm32pp dello stesso autore per l'hardware STM32. libstm32pp fornisce una sostituzione sorprendentemente completo per CMSIS ei piloti STM32 spesso criticato con un modello di programmazione che consente di dire le cose come PB10::setMode(gpio::cr::GP_OPEN_DRAIN_2MHZ)
e PINB::setLow()
o PINB::setHigh()
tutto in linea per lo più a causa compilato i modelli C ++. L'installazione è molto bella.
Forse sarebbe utile per qualcuno: il mio breve articolo (sul russo) e un semplice progetto . Tutto in Linux e senza cose inutili come l'eclissi.
Le biblioteche sono state prese dal sito Web di ST, makefile - da uno dei molti esempi di GPL in Internet.
Ecco un progetto modello piccolo ma innovativo per l'avvio rapido utilizzando la scheda Discovery STM32F0 sotto Linux o qualsiasi altro sistema operativo:
https://github.com/dobromyslov/stm32f0-chibios-template
Si noti che il progetto utilizza ChibiOS, un sistema operativo in tempo reale gratuito e open source, quindi non è esattamente un'implementazione di osso nudo da zero.
Uso vim e arm-none-eabi-gcc insieme a tutti i soliti strumenti di sviluppo di Linux. Linux è secondo me un ambiente di sviluppo superiore per il lavoro embedded di gran lunga. Per il debug utilizzo stlink e arm-none-eabi-gdb.
Prendi in considerazione la piattaforma . Se ti senti a tuo agio con la riga di comando, scoprirai che platformio semplifica notevolmente il processo di sviluppo. pio init
può essere utilizzato per impostare un progetto. pio run
sfrutta la toolchain per la compilazione. pio run --target upload
invia il codice al dispositivo. Platformio si occupa di scaricare i componenti della toolchain, le librerie, ecc. Secondo necessità.