Archivi categoria: Compilazione

ESP32 – IDF Sdk con IDE Eclipse

Dopo aver configurato l’ambiente di sviluppo IDF nell’articolo precedente

ESP32 – IDF Sdk

vediamo ora come utilizzare Eclipe come IDE per lo sviluppo del codice. Le istruzioni sono disponibili al link

Configurazione Eclipse

Scaricare Eclipse per C/C++ per Linux

Download Eclipse

Scompattare il file e spostarlo su /opt/

Eseguire ecplise

Impostare il workspace per eclipse

eclipse-workspaceUna volta aperto l’IDE selezionare File–>Import–>C/C++- -> Existing Code as Makefile Project

eclipse-importPremere Next; alla schermata successiva selezionare la cartella contenente il Makefile di un progetto di esempio ne campo “Existing Code Location” e scegliere come “Toolchain for indexer settings” CrossGcc come ad esempio indicato di seguito

eclipse-import2Una volta caricato il progetto con il tasto destro sul nome del progetto si sceglie l’opzione properties

eclipse-project-propertiesSotto C/C++ Build–>Envinronment aggiungere la variabile

eclipse-batchAggiungere sempre nella medesima sezione la variabile IDF_PATH che punta all’SDK IDF scaricato

eclipse-idf-pathEditare la variabile PATH ed aggiungere il path ai bin del cross compilatore /home/sviluppo/Esp32/espressif/esp/xtensa-esp32-elf/bin

eclipse-pathAccedere sempre in “C/C++ General”–> “Preprocessor Include Paths”; scelgliere il tab Providers e cliccare su “CDT Cross GCC Built-in Compiler Settings”

eclipse-cross-cdtSostituire ${COMMAND}

eclipse-cross-cdt1con xtensa-esp32-elf-gcc

eclipse-cross-cdt2Accedere ora nei providers e scegliere “CDT GCC Build Output Parser”

eclipse-cross-cdt3ed inserire all’inizio del Compiler command pattern xtensa-esp32-elf-

eclipse-cross-cdt4Salvare le configurazioni.

Le impostazioni del progetto vanno fatte sempre da make menuconfig nella shell unix. Accedere nella shell ed impostare come GPIO del led da spegnere ed accendere il valore 2; questo perché nel nostro caso la scheda è una doit il cui design è illustrato nel presente documento

SchematicsforESP32

Accedere a Example configuration

blink-configurationed impostare il valore del gpio a 2

blink-gpioSalvare la configurazione. Riandare su Eclipse e procedere alla pulizia con

eclipse-clean-blinke successiva compilazione con Project–> Build

eclipse-build-blinkPer eseguire il flash del firmware da eclipse, selezionare il progetto e con il tasto destro scegliere Build Targets -> Create…

eclipse-create-targetInserire nel campo target il valore flash, lasciando di default tutto il resto

eclipse-create-target-flashA questo punto si procede al caricamento dell’immagine cliccando due volte sulla nuova voce flash all’interno dei target del progetto

eclipse-run-flash Le impostazioni per eseguire il flash devono essere impostate con make menuconfig, come visto nell’articolo precedente

ESP32 – Idf Sdk

 

ESP32 – IDF Sdk

In questo articolo si descrive come impostare l’ambiente di sviluppo per ESP32 della Espressif.

Dal link alle risorse per il soc

https://www.espressif.com/en/products/hardware/esp32/resources

si accede alla guida per la compilazione del firmware sulle piattaforme Windows, OSX e Linux

http://esp-idf.readthedocs.io/en/latest/get-started/index.html

Le operazioni elencate di seguito sono eseguite sempre su Linux Debian 9, configurato come già descritto in precedenza

MicroPython – Python su dispositivi embedded

Si utilizza l’IDF del github.  Su Debian 9 con l’utenza utilizzata per collegarsi sul sistema si crea sotto la Home dell’utente la cartella Esp32 ed all’interno la cartella espressif

Installare i prerequisiti

Scaricare il cross compilatore

Creare la cartella esp e dall’interno scompattare il toolchain

Aggiungere al PATH la cartella bin del cross compilatore

Aggiungere al gruppo dialout, l’utenza utilizzata per le operazioni

Clonare il repository IDF dal $HOME/Esp32/espressif

Aggiungere la variabile di ambiente IDF_PATH

Creare la cartella dei progetti sotto $HOME/Esp32/espressif e copiare un esempio dalla cartella dell’IDF

Eseguire la configurazione

Accedere a Serial flasher config–> ed impostare i parametri della connessione; nel nostro caso lasciamo il default

idf-serial_flasher

Salvare la configurazione e compilare il firmware

Per caricare il firmware sulla scheda eseguire

Per caricare solo la applicazione eseguire

mentre per compilare solo la applicazione eseguire

Per eseguire il monitor del programma eseguire

hello_world

Gli altri esempi disponibili con sdk

https://github.com/espressif/esp-idf/tree/f586f5e/examples

Al seguente link invece sono presenti i riferimenti delle API dell’IDF

http://esp-idf.readthedocs.io/en/latest/api-reference/index.html

Si può anche generare la documentazione dai sorgenti del github. Posizionarsi in ~/Esp32/espressif/esp-idf/docs/en

Installare i prerequisiti

Generare i documenti in formato html

make-htmlLa documentazione è generata in _build/html.

Nel prossimo articolo imposteremo come IDE per la compilazione dei programmi Eclipe

ESP32 – IDF SDK con IDE Eclipse

ESP32 – Compilazione firmware nodemcu

Dopo aver visto nell’articolo precedente la compilazione del firmware MicroPython per ESP32

ESP32 – Compilazione MicroPython per ESP32

In questo articolo viene mostrato come generare l’immagine Nodemcu  per la scheda ESP32.

Il firmware non è ancora completo come quello esistente per ESP8266.

Le istruzioni sono reperibili sul github al link

https://github.com/nodemcu/nodemcu-firmware/tree/dev-esp32

La documentazione sulla compilazione sono elencate al link

https://nodemcu.readthedocs.io/en/dev-esp32/en/build/

Il sistema operativo è Debian 9 già incontrato in precedenza per le utility esptool ed Adafruit-ampy

MicroPython – Python su dispositivi embedded

 Collegarsi con l’utenza scelta su Debian 9, sviluppo nel nostro caso; sotto la home creare la cartella Esp32  e successivamente la cartella nodemcu

Clonare il repository

Per aggiornare il repository già clonato seguire quanto descritto al link sulla compilazione

Accedere alla cartella nodemcu-firmware-esp32 ed eseguire la configurazione

nodemcu-settingsAbilitare il bluetooth e dei moduli accedendo in

Component config–>Bluetooth ed abilitarlo

nodemcu-bluetoothComponent config–>Nodemcu modules ed abiltare i moduli che potrebbero servire

nodemcu-modulesNella configurazione per il flash  lasciamo i valori di default per la nostra scheda esp32,  Serial flasher config->

nodemcu-flashSalvare la configurazione ed uscire. Per compilare l’immagine eseguire

Alla fine della compilazione viene mostrato il comando da eseguire per flashare il dispositivo; la stessa operazione viene facilitata eseguendo semplicemente

 Per informazioni sulle partizioni delle varie versioni di ESP32 fare riferimento alla documentazione

http://api-guides/partition-tables.html

Nel prossimo articolo si mostra come compilare una applicazione utilizzando sdk di Espressif

ESP32 – IDF Sdk

ESP32 – Compilazione MicroPython per ESP32

Iniziamo una serie di articoli che trattano la scheda Espressif ESP32

Modulo WiFi-Bluetooth ESP32

Dopo aver analizzato negli articoli precedenti MicroPython per ESP8266, in questo incominciamo a trattare MicroPython su ESP32.

Di seguito viene mostrato come generare l’immagine MicroPython partendo dal codice sorgente per la scheda ESP32.

Il sistema operativo è Debian 9, già incontrato in precedenza per le utility esptool ed Adafruit-ampy

MicroPython – Python su dispositivi embedded

 Collegarsi con l’utenza scelta su Debian 9, sviluppo nel nostro caso; sotto la home creare la cartella Micropython e successivamente la cartella esp32

 Il github di MicroPython è presente al link

Github Micropython

Le istruzioni per l’ ESP32 sono presenti al link

MicroPython esp32

Clonare il repository

Accedere in micropython/ports/esp32

Eseguire

Il comando rilascia l’hash del github dell’ espidf supportato.

Al momento della nostra compilazione il risultato è il seguente

Ritornare nella cartella /home/sviluppo/Micropython/esp32 e clonare ESPIDF

Eseguire il checkout con l’hash ricavato sopra

Eseguire

Installare il cross compilatore come indicato al link

Cross compilatore

Seguendo le indicazioni del link sopra riportato, si procede quindi ad installare i prerequisiti

Scaricare il cross compilatore

Creare la cartella esp sotto /home/sviluppo/Micropython/esp32

Scompattare il cross compilatore in esp

Esportare nel PATH la cartella dei binari del cross compilatore

Accedere in

Creare il file makefile con all’interno

Accedere alla cartella micropython presente in /home/sviluppo/Micropython/esp32

Eseguire

per aggiungere le dipendenze esterne.

Si compila il cross compilatore MicroPython

Si compila infine l’immagine per l’esp32 con il comando

Il firmware è generato nella cartella ports/esp32/build con il nome firmware.bin.

Procedere al caricamento del firmware con i comandi

Nel nostro caso il deploy ha avuto esito positivo con il comando

E’ possible caricare l’immagine firmware.bin con i  comandi

dove in /dev/ttyXXX va inserito il riferimento alla porta seriale cui è connesso l’ESP32.

Nel prossimo articolo compileremo il firmware nodemcu per ESP32

ESP32 – Compilazione firmware nodemcu

MicroPython – Compilazione MicroPython per ESP8266 con moduli aggiuntivi

Dopo aver visto nel precedente articolo la compilazione del firmware MicroPython per ESP8266

MicroPython – Compilazione MicroPython per ESP8266

mostriamo ora come compilare un modulo all’interno del firmware; tale modalità ottimizza l’esecuzione del modulo e minimizza la dimensione dello stesso sul dispositivo: il modulo è congelato nel firmware.

Con il firmware compilato in modalità standard si hanno a disposizione i seguenti moduli, elencati nella consolle REPL con il comando

standardmodulesProviamo ora a compilare il firmware con i moduli mqtt già all’interno. Per tal obiettivo si copiano i sorgenti dei moduli nella cartella umqtt sotto modules

umqttfolderSi provvede a ricompilare il firmware, come visto nell’articolo pubblicato sull’argomento. Da micropython/ports/esp8266 si eseguono i comandi

Come si può notare dal log di compilazione anche questi sorgenti vengono posti nello stato frozen

frozenmodulesSi carica di nuovo il firmware. In questo caso nella lista dei moduli presenti nel firmware otteniamo

firmwarewithmodulesE’ possbile anche creare il firmware con i moduli non compilati ed ottimizzati copiando i sorgenti nella cartella scripts sotto esp8266; nel caso specifico i sorgenti vanno posti sotto la cartella scripts

I moduli sono sempre visibili nel firmware, ma non ottimizzati, per cui se serve qualche modulo lo si copia sul dispositivo durante la lavorazione e nell’ultima fase del progetto si compila il firmware con i moduli congelati.

 

 

 

 

 

 

MicroPython – Compilazione MicroPython per ESP8266

Dopo aver utilizzato in alcuni esempi il firmware MicroPython sulla scheda ESP8266

MicroPython – Esempi nodi con DHT11, Relé ed MQTT

in questo articolo viene mostrato come generare il firmware MicroPython per la scheda ESP8266.

Il sistema operativo è Debian 9 già incontrato in precedenza per le utility esptool

MicroPython – Python su dispositivi embedded

Collegarsi con l’utenza scelta su Debian 9, sviluppo nel nostro caso; sotto la home creare la cartella Micropython e successivamente la cartella esp8266

 Il codice sorgente di MicroPython è presente al link

Github Micropython

Le istruzioni per compilare il firmware per l’ESP8266 sono presenti al link

MicroPython ESP8266

Clonare il repository

Scaricare il cross compilatore, come indicato qui

Cross compilatore

Come indicato al link sopra, scarichiamo i sorgenti del cross compilatore  sempre dalla cartella esp8266

Installare i prerequisiti per la compilazione

Procedere alla compilazione del cross compilatore

Dopo la compilazione esportare nel PATH la cartella dei binari del cross compilatore

Accedere alla cartella micropython presente in ~/Micropython/esp8266

Eseguire

per aggiungere le dipendenze esterne.

Si compila il cross compilatore MicroPython

Si compila infine l’immagine per l’ESP8266 con il comando

Il firmware è generato nella cartella ports/esp8266/build con il nome firmware_combined.bin.

Procedere al caricamento del firmware sulla scheda con il comando

dove in /dev/ttyXXX va inserito il riferimento alla porta seriale cui è connesso l’ESP8266.

Nel nostro caso il deploy ha avuto esito positivo con il comando

E’ possible caricare l’immagine firmware_combined.bin con il comando

Nel prossimo articolo si analizza come compilare all’interno del firmware dei moduli aggiuntivi MicroPython

MicroPython – Compilazione MicroPython per ESP8266 con moduli aggiuntivi

Installazione OctoPrint su Orange PI PC – Installazione pacchetto python

In questo articolo si descrive come abilitare la scheda Orange PI PC a  server di rete per stampanti 3d.

Un sofware che fornisce tale funzionalità è OctoPrint

OctoPrint

Dal sito OctoPrint è possibile scaricare una immagine per Raspberry PI con il sistema già pronto; nel caso dell’Orange PI PC occorre procedere alla installazione del sistema OctoPrint su una immagine Linux.

E’ possibile anche usare una immagine Linux per Orange PI PC e seguire i passi relativi alla installazione di OctoPrint, ma è necessario verificare i prerequisiti del pacchetto python di OctoPrint.

Noi invece per questo articolo abbiamo compilato una immagine Debian mediante gli scripts Armbian.

Come prima operazione occorre preparare la scheda sd con una immagine Armbian. Nel caso specifico è stata creata una immagine Debian Jessie utilizzando lo script di Armbian, come indicato al link

Compilazione Armbian

e descritto in un precedente articolo

Creazione immagine Armbian per Orange PI PC

Abbiamo seguito i seguenti passi per la compilazione dell’ immagine Armbian su Ubuntu Xenial 16.04 ; da shell linux

Nelle  opzioni di compilazione scegliere quanto segue

armbianopipcfosNon si cambia la configurazione di default del kernel

armbianopipckernelScegliere come scheda Orange PI PC

armbianopipcboardScegliere il mainline kernel

armbianopipcmlkernelScegliere Jessie come distribuzione

armbianopipcjessieAbbiamo scelto come opzione il Desktop Envinronment

armbianopipcjessiedeDopo  tale opzione lo script procede alla compilazione. L’immagine da noi generata è Armbian_5.34_Orangepipc_Debian_jessie_next_4.13.12_desktop.img. Tale immagine può essere scaricata al link

Immagine Armbian per Orange PI PC

Si avvia Armbian e si crea l’utenza per l’utenza; in questo caso è stato scelta come utenza octoprint/password.

Se necessario riconfigurare la tastiera con il comando

e procedere all’aggiornamento del sistema

Se il sistema deve essere configurato tramite connessione wireless occorre che la connessione sia attiva all’avvio; per tale scopo nel nostro caso abbiamo utilizzato il demone wicd

Wicd Debian

 Si rimuove il network-manager presente

che rimuove i pacchetti network-manager e network-manager-gnome.

Si controlla che l’interfaccia wireless non sia presente in /etc/network/interfaces

Si procede alla installazione di wicd

Si controlla che l’utenza octoprint sia presente nel gruppo netdev

Nel nostro caso è già presente, dando come risultato

netdev-group

Nel caso non fosse presente aggiungerlo con il comando

Far partire wicd

Collegarsi sul desktop grafico di Armbian e configurare la connessione wireless con il comando

wicd-clientConfigurare e salvare la connessione di rete dall’interfaccia grafica.

Se si desidera il remote desktop si eseguono le operazioni già elencante all’articolo

Abilitazione Desktop Remoto su Armbian in Orange PI PC

Si può a questo punto procedere alla installazione di OctoPrint. Si seguono le indicazioni presenti al link

Installazione OctoPrint su Linux

Si installano i prerequisiti

Creare sotto /opt la cartella octoprint ed assegnare l’ownership ad octoprint

Posizionarsi in /opt/octoprint e scaricare il sofware

Eseguire quindi

Creare la cartella .octoprint

Assegnare i permessi all’utenza octoprint per gestire la porta della stampante 3d

Si testa la corretta installazione eseguendo il comando

Il server OctoPrint è raggiungibile sulla porta 5000 all’indirizzo ip del Orange PI PC

http://indirizzoip:5000

octoprinttestInstallare a questo punto la Cura Engine; posizionarsi nella home dell’utente octoprint e scaricare il pacchetto dei sorgenti

Scompattare il pacchetto

Entrare nella cartella scompattata

Eseguire la compilazione con il comando

Il software compilato è presente sotto la cartella build

curaengineCreare la cartella /opt/octoprint/cura e copiare il file CuraEngine in questa cartella

L’eseguibile è ora presente nella cartella /opt/octoprint/cura e sarà utilizzato in seguito da OctoPrint.

Nel prossimo articolo si descrive come configurare l’avvio automatico di OctoPrint

Avvio Automatico OctoPrint

Compilazione Immagine LEDE per Linkit 7688 Duo

Dopo aver generato l’immagine OpenWrt utilizzando l’SDK Mediatek

Compilazione Immagine OpenWrt per Linkit 7688 e 7688 Duo

in questo articolo si descrive come generare una immagine LEDE per il Linkit 7688 Duo.

Le indicazioni su come compilare LEDE sono disponibili al link

Compilazione LEDE

Procedere alla clonazione del github in una shell, sempre dalla cartella Linkit

eseguire

Creare uan cartella src sotto Linkit ed espandere il file compresso

Feed per Linkit

Tale feed è stato creato a partire da quello Mediatek , eliminando la parte gestita con i drivers  proprietari.

Copiare il file nella cartella src e scompattarlo

Accedere nella cartella Lede e copiare il file feeds.conf.default in feeds.conf

Eseguire

Aggiorniamo le informazioni dei feed per tutti i package

Installiamo i package

Configuriamo il kernel eseguendo

con le seguenti impostazioni

  • Target System: Mediatek Ralink MIPS
  • Subtarget: MT7688 based boards
  • Target Profile: Mediatek  LinkIt Smart 7688

menuconfigledeEntriamo in Base system ed abilitiamo mtk-linkit

mtk-linkitbasesystemSalviamo ed usciamo,

Eseguire la compilazione con il comando

dove con x si indica il numero di core da utilizzare.

Al termine della compilazione l’immagine è presente nella cartella bin/targets/ramips/mt7688/lede-ramips-mt7688-LinkIt7688-squashfs-sysupgrade.bin.

L’immagine compilata è disponibile qui

Immagine Lede per Linkit 7688 Duo

ATTENZIONE: L’installazione dell’immagine generata sul dispositivo è a vostro rischio e pericolo. Non ci assumiamo alcuna responsabilità nel caso tale installazione generi malfunzionamento o blocco del dispositivo.

Se si aggiorna la scheda usando una chiavetta usb bisogna rinominare il file lede-ramips-mt7688-LinkIt7688-squashfs-sysupgrade.bin in lks7688.img.

Tale firmware può presentare dei malfunzionamenti in quanto non testato approfonditamente e basato su driver in fase di sviluppo.

Nei prossimi articoli si descrive come installare le immagini sulla scheda e configurarle

Installazione e configurazione immagine OpenWrt su Linkit 7688 e 7688 Duo

Compilazione Immagine OpenWrt per Linkit 7688 e 7688 Duo

Dopo aver descritto nel precedente articolo le caratteristiche generali delle due schede

Schede di sviluppo Linkit 7688 e 7688 Duo

si passa alla compilazione della immagine OpenWrt dai sorgenti. Si segue quanto descritto al link

Compilazione immagine dai sorgenti

 Procediamo quindi a creare una cartella Linkit sotto /home/sviluppo nella nostra immagine Debian, già utilizzata per la compilazione di OpenWrt in altro articolo

Compilazione immagine OpenWrt

Passiamo alla installazione dei prerequisiti

Cloniamo il repository con il comando

Entriamo nella cartella openwrt e copiamo il file feeds.conf.default in feeds.conf

 Aggiungere  il feed Mediatek per la scheda

Aggiorniamo le informazioni dei feed per tutti i package

Installiamo i package

Configuriamo il kernel eseguendo

con le seguenti impostazioni

  • Target System: Ralink RT288x/RT3xxx
  • Subtarget: MT7688 based boards
  • Target Profile: LinkIt7688

menuconfigSalviamo ed usciamo,

Eseguire la compilazione con il comando

Ad un certo punto la compilazione genera un errore sulle librerie della scheda wireless. Mediatek non ha rilasciato i sorgenti della scheda wireless, ma un sdk con i binari che hanno versione differente rispetto al kernel che si sta usando; l’errore riportato è

Un modo per risolvere il problema è il seguente.

Accedere alla cartella /home/sviluppo/Linkit/openwrt/feeds/linkit/mtk-sdk-wifi/wifi_binary/ e copiare i seguenti file

Rilanciare la compilazione. Al termine della compilazione il file viene generato nella cartella bin/ramips

immaginelinkitIl file compilato è scaricabile da qui

Immagine OpenWrt Linkit 7688 e 7688 Duo

ATTENZIONE: L’installazione dell’immagine generata sul dispositivo è a vostro rischio e pericolo. Non ci assumiamo alcuna responsabilità nel caso tale installazione generi malfunzionamento o blocco del dispositivo

Se si aggiorna la scheda usando una chiavetta usb bisogna rinominare il file openwrt-ramips-mt7688-LinkIt7688-squashfs-sysupgrade.bin in lks7688.img.

Il kernel dell’immagine è alla versione 3.18_45; se si volesse utilizzare un kernel recente occorre usare i driver opensource disponibili per la scheda; nel caso della scheda Linkit 7688 Duo, in nostro possesso, è possibile ricompilare il tutto utilizzando i driver Realtek rt76 per la scheda di rete wireless ed aggiungere i componenti aggiuntivi per l’ mcu Atmel utilizzando la distribuzione fork di OpenWrt Lede

Progetto LEDE

Nel prossimo articolo si compila una immagine LEDE per la scheda Linkit 7688 Duo. Per la scheda Linkit 7688 al momento non sono ancora compatibili le librerie mraa, che gestiscono l’interfacciamento con le periferiche,  con l’ultima versione di LEDE e le funzionalità dell’immagine sono limitate. Possono essere presenti anche dei bug  dei driver opensource della scheda wireless, che si spera siano risolti nell’affinamento di tali driver.

Compilazione Immagine LEDE per Linkit 7688 Duo