Archivi tag: firmware

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

Enigma 2 – Come leggere il contenuto di una immagine

Nell’articolo

Compilazione Immagine Enigma2 OpenATV

abbiamo visto come compilare l’immagine Enigma 2.

Nel presente si mostra come visionare il contenuto dei file di una immagine Enigma2.

Come esempio useremo sempre l’immagine per lo Zgemma H2H.

In un ambiente Linux, Debian 8 nel nostro caso, scaricare l’immagine in una cartella, ad esempio enigma2

immagineenigma2

Scompattarla con il comando

Nella cartella scompattata abbiamo vari file

rootfsQuello di nostro interesse è rootfs.bin.

Il comando

ci dà indicazioni sulla natura del file. Nel caso di rootfs.bin

ubici indica che si tratta di una immagine con ubi filesystem.

A questo punto installare come prima operazione le utility per memory technology device

Eseguire

Il contenuto del file è ora visibile sotto /mnt/ubifs

ubimountPer smontare il filesystem

Infine per eseguire il detach di UBI dal dispositivo mtd

 Di seguito dei link per reperire ulteriori informazioni su mtd ed ubi

UBIFS

Linux MTD UBIFS

Compilazione addon Libreelec8 per Orange PI PC

Nell’articolo sulla compilazione di Libreelec  8 per Orange PI PC

Libreelec8 su Orange PI PC

avevamo creato l’ambiente  e compilato l’immagine Libreelec 8 per la nostra scheda di sviluppo. Integriamo quanto detto nel precedente articolo mostrando come compilare gli addons per Libreelec 8.

Procediamo ora a compilare degli addon. I packages che si possono compilare sono presenti nelle cartelle kodi-binary-addons

libreelec8 addonse nella cartella packages/addons

addons packagesCompiliamo per esempio il modulo pvr.iptvsimple con il  seguente comando da shell dalla cartella /home/sviluppo/orangepi/libreelec/libreelec-8.0

 addon command

Compiliamo l’addon proftpd, tra quelli presenti in packages/addons, con il comando

Gli addon risultanti sono presenti nelle relative cartelle in

addon compilatiDi seguito i link per scaricare alcuni addons compilati

PVR addon

Service Addons

Libreelec8 su OrangePI PC

In questo articolo si descrivono i passi che ho eseguito per preparare una prima versione di Libreelec 8 su Orange PI PC e altre schede con soc H3.

Partendo dall’ambiente di sviluppo Debian, con i relativi pacchetti installati,  già utilizzato per la compilazione di Openelec 7

 Compilazione immagine Openelec per Orange PI PC

si procede alla generazione della immagine per Libreelec 8.

E’ stato utilizzato come base il lavoro fatto per Openelec 7 e Libreelec 7 presenti sui due repository github

Github H3 Openelec 7

Github H3 Libreelec 7

Collegandosi sulla shell come sviluppo operiamo in modo analogo a quanto fatto per Openelec. Creaiamo una cartella libreelec sotto orangepi e spostiamoci in essa

Cloniamo il github di Libreelec con il comando

Le patch sono state create per una versione specifica del commit, per cui allineiamo il nostro clone github a quella versione

Scarichiamo dal link le patch ed il progetto per H3

H3 Libreelec 8

e scompattarlo in /home/sviluppo/orangepi/libreelec

Eseguire le seguenti operazioni

1)Copiare in /home/sviluppo/orangepi/libreelec/libreelec-8.0/projects la cartella

H3

2) Copiare in /home/sviluppo/orangepi/libreelec/libreelec-8.0/packages/multimedia le cartelle

cedarx
libmpeg2

3) Copiare in /home/sviluppo/orangepi/libreelec/libreelec-8.0/packages/tools la cartella

sunxi-tools

4) Copiare in /home/sviluppo/orangepi/libreelec/libreelec-8.0/packages/sysutils  la cartella

  sunxi-sys-utils

5) Copiare in /home/sviluppo/orangepi/libreelec/libreelec-8.0/packages/graphics  la cartella

sunxi-mali

6) Copiare in /home/sviluppo/orangepi/libreelec/libreelec-8.0/packages/linux-drivers  la cartella

mt7601u

7)  Le patch sono presenti in /home/sviluppo/orangepi/libreelec/H3LE8/patches

linux.patch

image.patch

mkimage.patch

kodi.patch

libcec.patch

u-boot.patch

u-boot-release.patch

u-boot-update.patch

Patchare il codice posizionandosi in /home/sviluppo/orangepi/libreelec ed eseguendo i comandi

Procedere alla compilazione della immagine per OrangePI PC dalla cartella /home/sviluppo/orangepi/libreelec/libreelec-8.0 con il comando

L’immagine viene generata nella cartella /home/sviluppo/orangepi/libreelec/libreelec-8.0/target

 Dal link

Openelec 7 H3 FAQ

sono elencati le schede che si possono compilare modificando il parametro SYSTEM nel comando di compilazione

SYSTEM=opi2
SYSTEM=opione
SYSTEM=opipc
SYSTEM=opiplus
SYSTEM=opilite
SYSTEM=opipcplus
SYSTEM=opiplus2e
SYSTEM=bpim2p
SYSTEM=bx2

Tale immagine è un primo tentativo di porting di H3 su Libreelec 8. L’immagine è stata installata su Orange PI PC e il sistema ha funzionato bene, ma sono possibili comunque bug e malfunzionamenti.

Qui è presente l’immagine Libreelec 8 compilata per Orange PI PC

Immagine Libreelec 8 Orange PI PC

Tale immagine è stata testata su Orange Pi PC.

Di seguito altre immagini non testate sui vari dispositivi

Immagine Libreelec 8 Orange Pi2

Immagine Libreelec 8 Orange Pi Lite

Immagine Libreelec 8 Orange Pi One

Immagine Libreelec 8 Orange Pi PC Plus

Immagine Libreelec 8 Orange Pi Plus

Immagine Libreelec 8 Orange Pi Plus 2e

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.

 Nel seguente articolo si mostra come compilare gli addon

Compilazione addon Libreelec8 per Orange PI PC