Archivi categoria: Software

Caricare il firmware Nodemcu con esptool

Nell’articolo sulla compilazione del firmware Nodemcu

Compilazione firmware Nodemcu

avevamo creato nella cartella bin i file 0x0000.bin e 0x100000.bin e copiato i file dall’SDK Espressif blank.bin e esp_init_data_default.bin.

Dalla documentazione dello strumento esptool

esptool

il comando generico da usare è il seguente

Dal momento che siamo in presenza di una scheda con 4M di flash e con una velocità di comunicazione della USB di 9600 bps dovremo usare i seguenti parametri

  • mode=dio
  • size=32m

 Sempre dalla documentazione esptool, non avendo creato il firmware con docker, siamo in presenza dei due file, che avevamo già provveduto a combinare nel file nodemcu_float.bin.

 Nel caso della scheda a nostra disposizione è stato necessario anche usare i file

  • esp_init_data_default.bin: parametri di default del firmware.
  • blank.bin:  reset dei dati sulla scheda.

secondo la mappatura indicata al link

Guida ESP8266

Nel nostro caso gli indirizzi usati (4M di flash) sono

  • 0x3FC000 per esp_init_data_default.bin.
  • 0x3FE000 per blank.bin

Ci si posiziona in una command shell script  nella cartella nodemcu-firmware e si  impostano i path corretti

I comandi da eseguire sono quindi i seguenti, considerando /dev/ttyUSB0 la porta USB del dev kit

  • Reset della scheda

  • Caricamento del firmware

Nel prossimo articolo caricheremo del nostro codice LUA scipt sul dispositivo.

Esempio codice Lua

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

Caricare codice LUA su ESP8266

Dopo aver installato il firmware appropriato

Caricare il firmware

si può caricare il proprio codice LUA script sul nostro device. Per eseguire tale operazione esistono diversi strumenti

Caricare codice Lua

In questo articolo installeremo ESPlorer

ESPlorer

E’ una applocazione java e disponibile per i sistemi operativi Windows, Linux ed Osx. Come prerequisito richiede la presenza di Java SE ver. 7 o superiore.

Si scarica il tool dal link sotto elencato in una cartella

Scarica ESPlorer

e si lancia mediante il comando

o tramite script dos o unix (ESPlorer.bat o ESPlorer.sh).

A questo punto si collega il Nodemcu devkit al pc e si impostano i parametri di comunicazione e la velocità della porta COM.

Si presenta, per esempio in Windows, la seguente schermata

ESPlorer

Si può premere Open che permette l’accesso sul dispositivo.

ESPlorerConnesso

Si può a questo punto procedere alla creazione del proprio codice in LUA script e caricarlo sull’ESP8266 utilizzando; il codice si può generare integrandolo con i  vari moduli messi a disposizione dal firmware secondo la documentazione

Nodemcu API

Nel prossimo articolo descriveremo come compilare una versione del firmware personalizzata in Linux

Compilazione Nodemcu

Caricare il firmware con Nodemcu Flasher

Dopo aver esaminato nell’articolo precedente le diverse modalità di caricamento del firmware

Caricare il firmware Nodemcu

vediamo qui in dettaglio come operare su Windows.

 Partendo dal github del firmware nodemcu

Nodemcu github

si perviene alla applicazione per Windows

 Nodemcu flasher

 Si scarica la versione compatibile con il nostro sistema operativo (32 o 64 bit).

Come operazione preliminare si installano i driver, se non già presenti in windows, del chip USB-Seriale, come specificato nell’articolo precendente. Nel nostro caso avendo a disposizione un development kit Nodemcu 0.9 si installano i drivers CH340G

CH340G Drivers

 Si scarica il software Nodemcu flasher in una cartella; si collega il Nodemcu devkit al pc mediante una connessione USB-Micro USb ed il device dovrebbe essere riconosciuto dal pc nella lista delle porte COM

PortaCom

Nel nostro caso è disponibile sulla porta COM5.

I passaggi da seguire sono i seguenti:

  • Lanciamo il Nodemcu Flasher e scegliamo la porta COM5

NodemcuProg

  • In Config selezioniamo INTERNAL://NODEMCU con indirizzo 0x00000.

NodemcuProgConfig

  •  In Advanced abbiamo i seguenti parametri
    • Baudate: 9600 secondo quanto indicato sulla nostra scheda.
    • Flash size: 4MByte. Flash del nostro devkit.
    • Flash Speed: 40MHz il default.
    • SPI Mode: DIO il default per flash da 4Mb.

NodemcuProgAdvanced

  • Possiamo ora procedere al caricamento premento il tasto FLASH

NodemcuProgFlash

  • Viene mostrata la barra di scorrimento della operazione e le informazioni hardware del dispositivo che si sta caricando

NodemcuProgProgress

Al termine si può chiudere la finestra e verificare che tutto funzioni correttamente con un programma per caricare il proprio codice LUA script, che vedremo nel prossimo articolo

Caricare codice LUA

Caricare il firmware nodemcu

Nell’articolo precedente abbiamo trattato il mdoulo wifi ESP8266 integrato nella scheda di sviluppo Nodemcu

Modulo WiFi ESP8266

Qui analizziamo come caricare il firmware sulla propria scheda.

Prima operazione da eseguire è valutare il modello di scheda di sviluppo nodemcu a disposizione. Nel nostro caso eseguiremo le varie operazioni con una scheda di sviluppo Nodemcu V0.9. Il chipset usb-seriale in questo caso è il CH340G

I drivers per questo chipset possono essere scaricati direttamente dallo github di nodemcu

USB-Seriale Drivers

Per caricare il firmware si possono usare i metodi descritti nel sito di Nodemcu

Flash del Firmware

In sostanza vi sono due metodi principali

  • Flash tramite il tool windows Nodemcu Flasher

Nodemcu Flasher

  • Flash tramite una utility in Python da usare in Linux, OSX o Windows

esptool

Il tool Nodemcu flasher permette di caricare un firmware di default sulla scheda in modo abbasta intuitivo e  velocemente.

Come si evince dalla documentazione sopra allegata con il devkit non è necessario eseguire alcuna operazione sul pin GPI0 dell’ESP; le operazioni di flash ed esecuzione si avviano automaticamente.

Nel prossimo articolo caricheremo il firmware usando il Nodemcu flasher

Caricare il firmware con Nodemcu Flasher

Firmware Nodemcu

Come discusso nel precedente articolo

Modulo WiFi ESP8266

lavoreremo con il soc ESP8266 utilizzando il firmware Nodemcu

Firmware Nodemcu

Nodemcu, alla data alla revisione 1.5.4.1, è basato sulla revisione LUA 5.1.4. Utilizza come base l’SDK NONOS di Expressif

SDK NONOS Expressif

 e come filesystem utilizza spiffs

spiffs filesystem

Il firmware può essere ottenuto, come specificato al link

Compilazione firmware Nodemcu

in vari modi

  • Tramite un servizio cloud, specificando anche i moduli aggiuntivi se necessari

Compilazione firmware tramite cloud

  • Tramite un sistema Docker

Compilazione tramite Docker

  •  Tramite un cross compilazione su Linux

Descriveremo come installare il sistema di cross compilazione su Linux.

 Vi è anche la possibilità di installare un firmware di default tramite il tool Nodemcu  Flasher.

Nel prossimo articolo tratteremo come caricare il firmware

Caricare il firmware Nodemcu

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.

Immagini OpenWrt

In questo articolo parliamo brevemente di OpenWRT

OpenWrt

Come descritto sul sito inserito sopra è una distribuzione linux per dispositivi wireless embedded. E’ disponibile per vari router come elencato nella pagina seguente

Lista dispositivi supportati

Il firmware, basato su codice Open Source, è modulare con la possibiltà di inserire vari moduli.

Al seguente link è elencata la documentazione inerente i moduli e la funzionalità di installazione con il comando opkg

Moduli

Dopo l’installazione del firmware è possibile collegarsi in ssh sul router e controllare ad esempio la lista dei pacchetti installati o disponibili.

In particolare il comando

mostra i moduli disponibili per il dispositivo.

Il comando è attivo se viene inserita la lista dei siti per il download nel file opkg.conf

Moduli disponibili OpenWrt

ma questa operazione può essere eseguita anche dalla interfaccia web.

Ci si collega sul routerOpenWrtLoginSi accede alla sezione SoftwareOpenWrtSoftwarepngSi aggiorna la lista dei repositoryOpenWrtSoftwareUpdateListViene caricata la listaOpenWrtSoftwareListSi cerca tra i software disponibili, ad esempio vsftpdOpenWrtSoftwarevsftpdE si procede alla installazioneOpenWrtSoftwareInstallvsftpdA questo punto è tra i pacchetti installatiOpenWrtSoftwarevsftpdInstallatoNei prossimi articoli si descrive come compilare l’immagine per il proprio router insieme ad un package aggiuntivo

Compilazione Immagine OpenWrt

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