Archivi tag: compilazione

Esempio lua per modulo nodemcu enduser_setup (parte2)

Dopo aver compilato e collegato il nodemcu ad uno switch il pin D5, come mostrato nel precedente articolo

Esempio Lua con modulo enduser_setup(parte1)

passiamo a caricare il codice che fa uso del modulo enduser_setup.

 Apriamo ESPlorer e carichiamo il seguente codice

  • webserver.lua

  • riasserawifi.lua

  • init.lua

 Nel seguente file zip sono presenti i file elencati sopra

 Codice esempio

Qui vi è la documentazione sul modulo enduser_setup

Documentazione modulo enduser_setup

 L’esempio è composto da tre  file:

  1. init.lua:  Si esegue all’avvio dell’esp8266.
  2. riazzerawifi.lua: Avvia il portale per definire il proprio Access Point.
  3. webserver.lua: Avvia il semplice webserver sul nodemcu.

Come si può notare dal codice presente in init.lua, nel caso in cui il pin D5 sia nello stato ALTO, si avvia il portale usando il modulo enduser_setup. Nel caso in cui il pin D5 è nello stato BASSO la scheda acquisisce l’IP da un Access Point definito in precedenza e si avvia il webserver di test.

Per salvare la configurazione dell’Access Point cui collegarsi posizioniamo lo switch in modo tale da avere l’ingresso HIGH sul pin D5 e riavviamo la scheda.

Da un pc possiamo osservare la presenza di un altro Access Point, definito nel file riazzerawifi.lua

composto dalla stringa Mynode+chipid del modulo

nodemcu portal wifiProvvediamo a collegarci a tale Access Point e mediante browser accediamo al portale, definito in genere all’indirizzo 192.168.4.1

Login portal wifi nodemcuSelezioniamo o immettiamo l’SSID di un Access Point con relativa password. Al termine della connessione riposizioniamo lo switch sulla posizione BASSO per il pin D5 e riavviamo il nodemcu dev kit.

Ora il sistema si collega automaticamente all’SSID definito mediante il portale ed avvia l’esempio del webserver.

Si rimanda alla documentazione Lua nodemcu per ulteriori approfondimenti e moduli utilizzabili

Documentazione LUA Nodemcu

Esempio lua per modulo nodemcu enduser_setup (parte1)

Nel precedente artciolo abbiamo mostrato un esempio di codice LUA per ESP8266 su nodemcu

Esempio codice Lua per ESP8266

Facciamo ora vedere un esempio in cui si utilizza il modulo enduser_setup.

Come prima operazione compiliamo il firmware nodemcu inserendo anche il modulo enduser_setup. Si rieseguono i passi fatti nell’articolo della compilazione

Compilare Nodemcu su linux

modificando il file app/include/user_modules.h  scommentando la direttiva

Dopo la compilazione del firmware e caricamento sul dispositivo, utilizziamo uno switch connesso al nodemcu dev kit come indicato di seguito

reset access point nodemcu

Il pin D5 può essere connesso ad un tensione bassa o alta. In base all’ingresso si modifica il comportamento del sistema.

Nota: Il Pin D5 nell’esempio specifico è stato usato in modalità di Input; nel caso si vogliano usare come Output, occorre inserire una resistenza per limitare la corrente di uscita, come specificato al link

Allocazione PIN GPIO

Nel prossimo articolo caricheremo del codice LUA di esempio e si utlizzerà il  modulo enduser_setup per gestire le connessioni wifi

  Esempio lua per modulo nodemcu enduser_setup (parte2)

Compilare nodemcu su linux

Trattiamo ora i passi da seguire per creare la propria immagine Nodemcu con cross compilazione su Linux.

Partiamo sempre dalla immagine Debian descritta in articolo precedente

Ambiente Debian

 Seguendo quanto indicato al link

Cross compilazione

 come prima operazione prepariamo l’ambiente di cross compilazione.

Colleghiamoci su Debian con la nostra utenza (sviluppo nel nostro caso) e creiamo una cartella esp8266 da riga comando

 Installiamo i prerequisiti

 Procediamo a scaricare il repository esp-open-sdk

 per procedere alla sua compilazione

Al termine della compilazione abbiamo la seguente indicazione

Occorre inserire nel PATH quanto segue

Possiamo clonare a queto punto il github del firmware Nodemcu. Sempre dalla precedente finestra di riga comandi eseguire

Una volta posizionati nella cartella esp8266 eseguire

 Al termine posizionarsi in nodemcu-firmware

Prima di procedere alla creazione del nostro primo firmware apportiamo delle modifche sulla configurazione presente in app/include/user_config.h

  • Abilitiamo la direttiva per il nostro devkit 0.9 (devkit in nostro possesso)

#define DEVKIT_VERSION_0_9 1     // define this only if you use NodeMCU devkit v0.9

  • Modifichiamo la velocità di comunicazione sulla USB (velocità di comunicazione del nostro devkit)

//#define BIT_RATE_DEFAULT BIT_RATE_115200
#define BIT_RATE_DEFAULT BIT_RATE_9600

  • Modifichiamo la dimensione della flash a 4M (dimensione a nostra disposizione)

#define FLASH_4M
// #define FLASH_8M
// #define FLASH_16M
//#define FLASH_AUTOSIZE

Salviamo il file e procediamo alla creazione del firmware con il comando

Al termine sotto la cartella bin

troveremo due file: 0x00000.bin e 0x100000.bin. Creiamo un solo file nodemcu_float.bin con il comando

Aggiungiamo l’utente sviluppo al gruppo abilitato a scrivere sulla usb

Debian vede senza necessità di drivers  aggiuntivi la porta USB. In presenza di macchina virtuale abilitare la periferica.

Accedere all’sdk scaricato e compilato prima; nella cartella bin copiare i file

  • blank.bin
  • esp_init_data_default.bin

nella cartella bin dove sono stati generati i file del firmware nodemcu

binDefaultA questo punto siamo pronti a caricare il firmware sul dispositivo mediante lo strumento esptool. Nel prossimo articolo descriveremo come caricare il firmware sul dispositivo

Caricare il firmware con esptool

Compilazione modulo openwrt

Nell’articolo precedente

Compilazione Immagine OpenWrt

si è descritto come compilare il firmware OpenWrt per il router TP-Link TL-MR3420 V1. Di seguito si mostra come compilare un modulo, vsftpd, ed installarlo sul sistema da shell.

Eseguire il comando make menuconfig

ed accedere alla sezione relativa al modulo vsftpd sotto  Network->File Transfer ed abilitarlo come moduloOpenWrtModulovsftpdSalvare la configurazione in .config ed eseguire i comandi

Al termine del processo il pacchetto del modulo è presente nella directory packages sotto la  cartella bin della piattaforma utilizzataOpenWrtModulovsftpdCompilatoCopiare il file sul router come root mediante scp (su windows si può utilizzare WinScp) nella cartella /tmp. Non eseguire l’aggiornamento dei repository dei pacchetti dalla interfaccia web (se eseguito far ripartire il dispositivo) ed accedere al router mediante ssh, sempre come root, per procedere alla installazione del pacchetto

OpenWrt mette a disposizione tanti moduli che permettono di potenziare notevolmente le funzionalità del dispositivo; alcuni moduli sono abbastanza esosi come risorse , per cui è possibile installarli su router con hardware più potente.

Compilazione immagine openwrt

Dopo aver descritto brevemente il firmware OpenWrt nel precedente articolo

OpenWrt

si passa alla compilazione del firmware OpenWrt per il proprio dispositivo.

L’esempio sarà basato sul router TP-Link TL-MR3420 versione 1. Tale modello è presente fra la lista dei modelli supportati da OpenWrt; di seguito il link alla documentazione del modello in oggetto

TP-Link TL-MR3420

Dalla documentazione si nota che il SOC è un Atheros AR7241. Questa informazione sarà utilizzata in fase di configurazione della compilazione del firmware. Come operazione preliminare scaricare anche il firmware originale del router presente al link precedente

Firmware Originale

Nella pagina TP-Link TL-MR3420 sono presenti inoltre i link al firmware opewrt in due varianti:

  • Firmware per intallazione: openwrt-15.05.1-ar71xx-generic-tl-mr3420-v1-squashfs-factory.bin.
  • Firmware per aggiornamento: openwrt-15.05.1-ar71xx-generic-tl-mr3420-v1-squashfs-sysupgrade.bin

Partendo dal firmware originale si usa il firmware per installazione, mentre per aggiornare da openwrt si usa il secondo tipo.

Dal link di OpenWrt sulla compilazione dell’immagine

Sviluppo OpenWrt

si eseguono le seguenti operazioni su Debian preparato in precedenza

Preparazione ambiente Debian

Aperta una shell su Debian come utente normale (non root) si installano i prerequisiti

Creare una cartella OpenWrt e clonare il repository. Nel nostro caso scegliamo il branch stabile 15.05

Al termine del processo git eseguire

Siamo pronti a questo punto ad eseguire la compilazione della immagine per il TP-Link TL-MR3420 V1.

Si lancia il comando

scegliendo come Target System AR7xxx/AR9xxx come indicato di seguitoOpenWrtmenuconfigCon i seguenti pulsanti si modificano le opzioni:

  • y: si  compila.
  • m: si compila come modulo.
  • n: non viene considerato.

Fare riferimento al link

Compilazione OpenWrt

per tutte le opzioni.

Premendo Invio alla schermata successiva si sceglie la piattaforma correttaOpenWrtmenuconfigAtherosSi devono installare anche i pacchetti minimi per l’amministrazione del sistema, ossia LuCI baseOpenWrtmenuconfigLuciAlla schermata successiva si sceglie CollectionOpenWrtmenuconfigLuciCollectionse quindi l’opzione luci che installa automaticamente i prerequisiti tra i quali anche un server httpOpenWrtmenuconfigLuciCollectionsBaseSi installano anche i moduli crittografici del kernel accedendo ai moduli del kernelOpenWrtmenuconfigKernelModulesSi sceglie poi l’opzione delle api crittograficheOpenWrtmenuconfigKernelModulesCryptoApied infine si scelgono i seguenti moduli compilati con l’immagineOpenWrtmenuconfigKernelModulesCryptoApioptionsConviene salvare la configurazione in un file in modo da riutilizzarla in seguito. Salvare infine la configurazione nel file .config.

Uscire dal menuconfig ed eseguire il comando

in modo da controllare tutti i prerequisiti necessari alla compilazione.

Per avviare la compilazione eseguire il comando

Il comando precedente esegue la compilazione in verbose mode.

Al termine della compilazione si hanno i file dei firmware nella cartella bin piattaforma scelta. Nel nostro caso le immagini sono evidenziate nella figura seguenteOpenWrtFirmwareSi può procedere alla installazione del firmware.

ATTENZIONE: Prima di procedere alla installazione del firmware verificate la procedura di recupero del vostro router in caso di qualche problema, quale avvio in recovery mode, flash via tftp, jtag,  ecc. 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 disposivo.

Si faccia riferimento al sito di OperWrt per tutte le opzioni ed impostazioni utilizzabili per la compilazione e lo sviluppo dei moduli. Nel prossimo articolo

Compilazione modulo OpenWrt

si descrive come compilare ed installare da linea comando il server ftp vsftpd.

Creazione immagine Armbian per Orange PI PC

Passiamo ora alla creazione della immagine Armbian per Orange PI PC. Dal github dello sviluppatore

Armbian Github

sono elencati i passi da seguire.

Dal sito Armbian

Compilazione immagine Armbian

l’ambiente di compilazione testato è Ubuntu. Nel nostro test utilizzando una distribuzione Ubuntu 16.04.1 LTS x86-64

Ubuntu

lo script compile.sh installa automaticamente i pacchetti necessari alla compilazione dell’immagine. Sul sito sono presenti inoltre le varie opzioni di compilazione.

Volendo utilizzare la distribuzione Debian 8.5 come host per eseguire la procedura, si sono seguiti i seguenti passi riportati di seguito. Nel caso si riportino errori si utilizzi la distribuzione Ubuntu suggerita sul sito Armbian.

Come operazione preliminare installiamo il crosscompilatore per Debian

https://wiki.debian.org/CrossToolchains

Creare il file crosstools.list in /etc/apt/sources.list.d

ed inseriamo la voce

Salviamo il file ed aggiungiamo la chiave del repository

Installiamo i seguenti pacchetti e l’architettura armhf

Siamo pronti ad installare l’ambiente per la compilazione sia su Ubuntu che Debian. Creaimo una cartella armbian sotto orangepi nella cartella dell’utente con cui ci si collega, che nel nostro caso è sviluppo

 Ci si posiziona in questa cartella e si eseguono i comandi

 Per procedere alla compilazione eseguire

Inserire la password di root per poter proseguire. Quando richiesto selezionare come indicato nelle immagini seguenti.

  • Immagine completa

fullosimage

  • Scheda OrangePI PC

orangepipc

  • Scegliamo il kernel di default

defaultkernel

  • Immagine Debian stabile

debianstable

  • Immagine con Desktop Envinronment

debiande

Sotto la cartella output/images viene generata l’immagine da caricare sulla scheda micro sd come descritto in articolo precedente

immagine

Creazione pacchetto enigma2

Dopo aver compilato l’immagine enigma2

Immagine Enigma 2

mostriamo come creare un package.

Nella cartella recipes-local

creaimo una cartella per il nostro package, ad esempio testpackage, e una sottocartella files

Creare del codice nella cartella files, ad esempio testpackage.c

Creiamo il file Readme.txt nella cartella files  e LICENSE nella cartella testpackage.  Nel file Readme.txt vi sono le informazioni sulla applicazione. Per la licenza, che al momento si può lasciare anche vuoto, occorre create l’hash da inserire nel file bitbake.

Creare il file md5 per la licenza

Creaimo il file bitbake testpackage_0.1.bb sotto la cartella testpackage per la cross compilazione

Compiliamo il pacchetto ad esempio per zgemma accedendo all’ambiente dedicato a tale sistema con

Il file viene generato nella seguente cartella

Copiare il pacchetto testpackage_0.1-r0_mips32el.ipk sullo ZGemma H3 nella cartella /tmp ed eseguire

Per forzare l’installazione senza tenere conto dei prerequisiti

L’eseguibile è presente nella cartella /usr/bin; la sua esecuzione ci dà l’output che ci si aspettava

Compilazione Immagine Enigma2 OpenATV

In questo articolo descriviamo come preparare una immagine Enigma2 basata sulla distribuzione OpenATV

Openatv

 Dopo aver installato l’ambiente di compilazione, come descritto nel blog

Preparazione ambiente Debian

si può procedere come segue.

Collegarsi sull’ambiente Debian con l’utenza da utilizzare per la compilazione; nel nostro caso l’utenza è sviluppo. Nella home directory dell’utente creare la cartella enigma2

 Installare i seguenti pacchetti

Riconfigurare la shell come segue

Scegliere No come opzione.

Creare la cartella openatv sotto enigma2

Creare una cartella sources sotto openatv; tale cartella conterrà i sorgenti dei vari tipi di dispositivi che si vogliono compilare

Clonare in locale il repository git della oe-alliance

Al termine del download entrare nella cartella build-envinronment ed eseguire make

Editare ora il file site.conf e modificare il parametro della cartella di download dei sorgenti  da

a

Dalla cartella build-environment eseguire la compilazione della immagine; ad esempio per il decoder Airdigital Zgemma H2H

Per il decode Xtrend et10000

Al termine della compilazione l’immagine è presente nella cartella sotto deploy a seconda del dispositivo di cui si è compilata l’immagine: nel caso dello Zgemma H2H

immaginezgemma

L’immagine da installare sul dispositivo è lo zip che viene generato dal processo di compilazione, da scompattare in questo caso su una penna USB e caricare sullo Zgemma H2H.

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.

Compilazione immagine Openelec per Orange PI PC

Descriviamo ora come procedere alla compilazione dell’immagine Openelec per la scheda Orange PI PC.

Dal forum di Orange PI PC, nella sezione relativa ad Openelec gli sviluppatori hanno inserito i passi da eseguire per la compilazione dell’immagine

FAQ Openelec Orange PI PC

In blog precedenti si è descritto come installare debian e come trasformare il file script.bin per l’uscita compatibile alla risoluzione accettata dal nostro TV

Preparazione Debian

Modifica risoluzione uscita

Il processo dura parecchio tempo; è consigliabile l’utilizzo di processori multicore per velocizzare la compilazione.

Creiamo una cartella openelec sotto orangepi e spostiamoci in essa

Installare i seguenti pacchetti

Scarichiamo i sorgenti da github con il comando

Al completamento della operazione accedere nella cartella OPENELEC-OPIPC

Eseguire il comando

Il processo controlla i prerequisiti e richiede l’installazione di pacchetti aggiuntivi

Si da l’OK e le relative password; dopo l’installazione dei prerequisti procede alla compilazione del sistema.

Nella cartella target sono dispobili i file per l’installazione:

  1. Il file con estensione .img.gz è da scompattare e trasferire su una scheda sd come visto nei blog precedenti.target
  2. Il file con estensione .tar è da copiare nella cartella updates per consentire l’aggiornamento automatico del sistema da una versione precedente facendo ripartire l’Orange PI PCupdate

Preparazione ambiente Debian per sviluppo sistemi embedded

In questo articolo si descrive l’installazione di Debian 8.5 che sarà utilizzata per compilare l’immagine Openelec per Orange Pi PC, creazione immagine Enigma2 ed altre operazioni su dispositivi embedded.

Scaricare l’iso AMD64 di Debian 8.5

Immagini Debian per X86_64

 Procedere alla installazione. Si può usare anche una virtual machine, come ad esempio VirtualBox. Usare almeno 4 gb di Ram e 50 Gb di hard disk

VirtualBox

Con VirtualBox si può creare un disco virtuale che alloca lo spazio dinamicamente quando è richiesto. Ad installazione del sistema operativo collegarsi con l’utenza creata durante l’installazione di Debian; nel nostro caso l’utenza è sviluppo. Ci si può collegare direttamente dall’interfaccia grafica o su ssh conoscendo l’indirizzo IP del sistema Debian installato.

Aggiungere al gruppo sudo l’utente usato durante la configurazione; in una shell eseguire il comando

Nel nostro caso abbiamo il seguente risultato

L’utente sviluppo non appartiene al gruppo sudo. Diventare superuser con il comando

Inserire la password di root alla richiesta nella shell. Come root eseguire

Nel nostro caso

Far ripartire il sistema con il comando

Al riavvio collegarsi con l’utenza da utilizzare nello sviluppo, nel nostro caso sviluppo. Si aggiunge nei sorgenti dei pacchetti, se non presenti, i repository dei pacchetti aggiuntivi e di aggiornamento.

Posizionarsi in /etc/apt

Fare un backup di sources.list

Editare il file, ad esempio con vi

Commentare le righe posizionandosi all’inizio della riga e con il tasto i si passa in modalità di modifica avendo la possibilità di inserire #. Con il tasto Esc si passa alla modalità lettura e ci si può spostare con le frecce direzionali. Nel caso si commetta un errore e si voglia tornare alla situazione  precedente premere Esc+u.

Commentare le righe

Inserire le seguenti righe

Per inserire le righe si può premere in modalità di lettura il tasto o che aggiunge una riga in modalità di scrittura; si può procedere ad un copia ed incolla o ad inserire manualmente le righe.

Per salvare il tutto premere Esc+:wq; si salva il file e si esce dallo stesso.

Si può anche usare un editor di testo direttamente dall’interfaccia grafica di Debian per eseguire le medesime operazioni. Per esempio per usare pluma aprire una shell unix ed eseguire

Da pluma aprire il file  /etc/apt/sources.list, apportare le modifiche descritte sopra e salvare il file.

Aggiornare il riferimento dei repository ed i pacchetti con i comandi

Installare i pacchetti di sviluppo

Installare il server ftpd per eventuali trasferimenti remoti

Scommentare nel file /etc/vsftpd.conf il parametro

Aprire il file con

Cercare la stringa dall’editor vi in lettura con

Eliminare il carattere # posizionandosi su di esso e premendo x

Salvare il tutto con ESC+:wq

Far ripartire il server ftp con il comando

Ora abbiamo l’ambiente per compilare, modificare, sviluppare i nostri sistem embedded.