Nel precedente articolo, vi ho mostrato come installare il framework di sviluppo ufficiale (Espressif IoT Development Framework) e come utilizzarlo per compilare il primo esempio, Hello world.
Sebbene sia possibile sviluppare i propri programmi con un semplice editor di testo (su Windows consiglio sempre il programma opensource Notepad++), è sicuramente più semplice dotarsi di un IDE (Integrated Development Environment), ovvero un applicativo grafico che consente la scrittura del codice (spesso con funzioni di autocompletamento e evidenziazione di parole chiave ed errori), la sua compilazione e anche l’upload sulla scheda di sviluppo. Tra gli IDE disponibili, uno dei più famosi e utilizzati è senza dubbio Eclipse.
Installazione
L’installazione di Eclipse è molto semplice: colleghiamoci al sito ufficiale e scarichiamo la versione Eclipse IDE for C/C++ Developers per il nostro sistema operativo (come per l’articolo precedente, ho scelto di lavorare su Windows):
Eclipse viene distribuito come archivio ZIP. Una volta terminato il download, estraiamo l’archivio in una cartella del nostro disco fisso. Per semplicità ho scelto di utilizzare la stessa cartella (home dell’utente) dove ho installato anche esp-idf:
Lanciamo Eclipse con un doppio click su eclipse.exe. Al primo avvio ci verrà chiesto di specificare il percorso del nostro workspace (= la cartella dove sarano salvati i progetti). Ho scelto di creare il workspace all’interno della cartella principale dell’IDE:
Configurazione progetto
Per poter sviluppare un progetto basato su esp-idf con Eclipse, è necessario effettuare alcune configurazioni. Per prima cosa dobbiamo importare il progetto all’interno dell’IDE. Per questo tutorial utilizziamo l’esempio 01_hello_world, in un prossimo tutorial vi mostrerò come preparare un progetto vuoto.
Selezioniamo File – Import, quindi utilizziamo il wizard Existing Code as Makefile project:
Diamo un nome al progetto, selezioniamo la cartella di origine e accertiamoci che la toolchain da utilizzare sia Cross GCC:
Una volta terminata l’importazione, apriamo le Proprietà del progetto:
Per prima cosa spostiamoci in C/C++ Build – Environment. Aggiungiamo (pulsante Add…) due variabili:
- nome V, valore 1
- nome IDF_PATH, valore il percorso dove è installato esp-idf (NB: devo usare / invece che \)
Su Windows, inoltre, cambiamo la variabile PATH con il seguente valore (se msys32 è installato nel percorso standard):
C:\msys32\usr\bin;C:\msys32\mingw32\bin;C:\msys32\opt\xtensa-esp32-elf\bin
Sempre se siamo sotto Windows, spostiamoci su C/C++ Build, togliamo il flag a Use default… e inseriamo il seguente build command:
bash ${IDF_PATH}/tools/windows/eclipse_make.sh
Spostiamoci infine su C/C++ General – Preprocessor Include Paths e apriamo il tab Providers.
Selezioniamo CDT Cross GCC Built-in Compiler Settings e inseriamo al posto di ${COMMAND} il comando xtensa-esp32-elf-gcc:
Selezioniamo infine CDT GCC Build Output Parser e aggiungiamo xtensa-esp32-elf- a inizio comando:
Siamo ora pronti per compilare il progetto:
Dopo la compilazione è possibile che Eclipse evidenzi diversi warnings di tipo “unresolved inclusion”:
Il problema si verifica solo sotto Windows ed è un bug noto che non pregiudica la compilazione. Può essere risolto aggiungendo manualmente le diverse cartelle include presenti in esp-idf/components nelle proprietà del progetto (C/C++ General – Paths and Symbols – GNU C):
Flash
Possiamo configurare Eclipse anche per eseguire automaticamente il comando make flash per caricare il programma sviluppato sulla scheda.
Selezioniamo, dal pannello laterale destro, il tab Build Targets:
Clicchiamo con il tasto destro sulla cartella del progetto, quindi selezioniamo New.
Inseriamo flash come target name, quindi confermiamo con Ok:
Se ora facciamo click con il tasto destro sul nuovo comando creato, possiamo lanciare il processo di flash selezionando Build Target:
Il tab Console nella parte bassa dell’IDE ci consente di vedere l’esito del processo di flash:
Hi, Luca!
Thanks for good tutorials!
I have learned many things about ESP32 from them.
How do you debug ESP32 in Eclipse IDE or CLI?
Ciao Luca.
Premetto che non sono molto ferrato su eclipse…
Ho risolto i problemi degli include ma quando compilo (icona a forma di martello) continua a darmi questa segnalazione:
15:31:34 **** Build of configuration Default for project hello_world ****
bash C:/Dev-Tools/msys32/home/laudicin/esp/esp-idf/tools/windows/eclipse_make.sh flash
eclipse_make.sh has been replaced with eclipse_make.py. Check the Windows Eclipse docs for the new command.
This shell script will continue to work until the next major release.
Traceback (most recent call last):
File “C:/Dev-Tools/msys32/home/laudicin/esp/esp-idf/tools/windows/eclipse_make.py”, line 36, in
main()
File “C:/Dev-Tools/msys32/home/laudicin/esp/esp-idf/tools/windows/eclipse_make.py”, line 28, in main
print(“Running make in ‘%s'” % check_path(os.getcwd()))
File “C:/Dev-Tools/msys32/home/laudicin/esp/esp-idf/tools/windows/eclipse_make.py”, line 23, in check_path
winpath = winpath.replace(“\\”, “/”) # make consistent with forward-slashes used elsewhere
TypeError: a bytes-like object is required, not ‘str’
e penso che la compilazione non sia andata a buon fine.
Puoi darmi una mano a capire?
Un saluto
Ciao Luca
ho appena vistato il tuo sito e complimenti per l’ottimo lavoro svolto. Da poco ho iniziato a provare ESP8266 01con comandi AT. Vorrei programmarlo con eclipse è un programma che non conosco. Volevo chiederti la configurazione che fai vedere te per ESP32 posso usarla anche per ESP8266 ? ho provato a cercare in rete ma è tutto un copia incolla e riesco solo a compilare con eclipse ma non a programmare il modulo.
Grazie per la tua attenzione
Sergio
ciao Sergio, purtroppo non ho mai provato con il chip esp8266. Hai già provato a seguire la guida ufficiale?
Ciao grazie per la dritta. Alla fine ci sono riuscito anche grazie all’aiuto di un mio amico. Adesso incomincio i primi test. Certo che non è facile trovare guide solo per eclipse tutti quanti si buttano sull’ide di arduino. Grazie ancora per la tua disponibilità
Sergio
Hi Luca. Every time i create a new project,the settings disappear. Do i have to make those settings every new project?
hi, you can create an empty project and reuse it as a “template”
Se il PC è in dominio il percorso dove c’è esp-idf è:
C:\Users\NomeUtente.VostroDominio\AppData\Roaming\SPB_16.6
Ciao
Hi Luca, my doubt is, what’s the exact difference between notepad and Eclipse?..
Can I develop programs with Notepad++?,
I’ve been working with the tutorial steps for using eclipse with the esp32, but I always get heaps and heaps.. and at least a couple of red lines in the code sometimes.. e.g
“portTICK_PERIOD_MS”, (in the hello world example)…
but I just got surprised because I could flash the Hello world example, even with the red lines, this confuses to me… will I be able of developing a trusted program using eclipse even with the red lines?….
how will I know is the program is well made?
Hi! Of course you can develop your programs with the editor you prefer (Notepad++…). With Eclipse you can run the compile process within the editor, check the syntax etc. It may happen that you get red lines (= Eclipse can’t recognize that method) but you’re still able to compile and run the program, this is because of Eclipse and the compiler are different. Your problem can be related to some symbols not addded to the Editor. If you’re under Windows, try also the official guide.
Salve
ho installato eclipse oxygen per C/C++ developers, assieme a MinGW, Gcc, Java jdk, quello che vorrei chiederle è se una volta effettuato il run As c/c++ application si può visualizzare l’output non solo sulla console in basso, ma anche su una console Windows tipo system32, come per esempio in Visual Studio, ed se sì, come posso fare a installare questa opzione in Eclipse..
grazie per la sua attenzione e
se non la disturbo attendo un suo cortese riscontro..
buona giornatae buon lavoro
Daniele
Salve Daniele, purtroppo non credo che Eclipse offra questa possibilità… attualmente sto utilizzando Platform.io che mi sembra ancora + intuitivo e completo… faccia una prova anche con questo IDE!