Come posso sviluppare per la scoperta STM32 su Linux? [chiuso]


26

Ho una scheda di rilevamento STM32 e vorrei essere in grado di programmarla su Linux.

Qual è il modo più semplice per farlo?


Ho installato Codesourcery su LinuxhUbuntu e un po 'impilato: PATH è ok ma il programma non appare su Dasboard o Software Center. Forse è Ubuntu che cambierei in qualche modo ma non so come. Se hai un'idea, per favore scrivi. Grazie. Tom
Tom Rert

1
@TomRitzmann PeterJ ha ragione, per favore non usare le risposte per porre domande. Inoltre, i problemi software sono fuori tema qui, SuperUser è il posto giusto.
clabacchio

Risposte:


12

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.


Ecco un elenco di schede di rilevamento STM32x supportate da OpenOCD: github.com/openrisc/openOCD/tree/master/tcl/board (cerca "discovery" utilizzando il browser)
rbaleksandar

8

Se ti piacciono di più gli editor di testo e i Makefile invece di utilizzare una GUI, puoi fare:

  • Installa una toolchain che fornisce arm-none-eabi-gcc. Su Archlinux, avresti bisogno di community / arm-none-eabi-binutils, arm-none-eabi-gcc e arm-none-eabi-newlib (e arm-none-eabi-gdb se vuoi eseguire il debug) tutto dalla community repo, o https://launchpad.net/gcc-arm-embedded (che può essere trovato in AUR di Archlinux come gcc-arm-none-eabi-bin).
  • Decidi se e quale libreria desideri utilizzare per accedere all'hardware. Dalla cima della mia testa, ci sono tre opzioni comuni:
    1. Nessuna. Scrivi tutto da zero. Non raccomandabile per i principianti.
    2. STM32Cube : AC lib fornita dalla stessa ST.
    3. Libopencm3 : una libreria open source che supporta numerosi core cortx -m di diversi fornitori.
    4. STM32PLUS : una libreria C ++. Tuttavia, non posso dire molto di più perché non l'ho provato.
  • Crea o copia il tuo primo progetto.
    1. Senza lib, scrivi il tuo makefile, script di linker, codice di avvio e avvia un semplice makefile. In bocca al lupo ;)
    2. Con STM32Cube: scarica e installa STM32CubeMX . Una volta decompresso il file * .exe è in realtà solo un file java ed è possibile eseguirlo utilizzando "java -jar nomefile.exe". L'installazione richiede sudo. Al termine, creare un progetto e generare il codice per "Truestudio". Questo dovrebbe darti un punto di partenza con uno script linker, un codice di avvio, alcune banali funzioni principali (e un makefile se ricordo bene). In realtà, anche se non si utilizza la libreria STM32Cube, STM32CubeMX è ottimo per calcolare i valori per l'albero di clock e convalidare se è possibile configurare il chip come si pensa.
    3. Con libopencm3: ottieni gli esempi di libopencm3 , trova un esempio corrispondente alla tua scheda e usalo come punto di partenza. Gli esempi dovrebbero essere pronti per l'esecuzione. Basta digitare "make". Quindi utilizzare questo esempio come punto di partenza per il proprio sviluppo.
    4. Con STM32Plus: non lo so. Scusate.
  • Porta il tuo progetto alla lavagna. Utilizzare entrambi

    1. Il bootloader seriale: stm32flash funziona alla grande.
    2. La porta di debug: puoi usare openocd per parlare con l'adattatore di debug fornito sulla scheda. Openocd è eccezionale, ma la documentazione non è sempre la migliore. In caso di dubbio, unisciti al canale irc di openocd. Le persone sono davvero simpatiche.
  • Codice in un editor di testo e utilizzo degli strumenti da riga di comando. Questo tutorial fornirà molti suggerimenti.

Godere


5

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-

1
Grazie! Non avevo mai visto quei link prima. Sono sorpreso che da qualche parte non ci sia una guida più definitiva, dato che schede di scoperta diverse hanno flag di costruzione leggermente diverse.
Gordon Williams,

Sì, ST ha creato una scheda molto economica e le ha regalate, migliaia di esse, e lo stesso STM32 è un chip fantastico, fino a F4, ma programmarle è un enorme dolore nel culo. I loro driver sono incredibilmente scarsamente documentati e non hanno un buon nome, e trovare un IDE e una catena di strumenti che giocano bene insieme gratuitamente non è troppo facile.
hak8 o

1

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.


Non consiglio più il bareCortexM non mantenuto; controlla stm32plus su andybrown.me.uk/wk
joeforker

Il problema con tali driver di dispositivo è che sono inefficienti. Per i driver di dispositivo ad alta velocità adeguati che non sprecano cicli di CPU, è necessario un rtos sottostante in modo da poter eseguire una pianificazione corretta.
Martin,

0

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.



0

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.


0

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 initpuò essere utilizzato per impostare un progetto. pio runsfrutta la toolchain per la compilazione. pio run --target uploadinvia il codice al dispositivo. Platformio si occupa di scaricare i componenti della toolchain, le librerie, ecc. Secondo necessità.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.