Guida all'installazione della toolchain per ESP8266 Ubuntu

Risorse:

Link per il download.

Questa guida è basata su una Ubuntu 16.10, se hai Fedora, vai all'apposita guida per le RPM LINK.

Installazione dei pachetti di sistema

Cominciamo installando i pacchetti necessari, sono riportati nella guida su github.com

sudo apt-get install aptitude git build-essential bash-completion make unrar-free autoconf automake libtool gcc g++ gperf flex vim bison texinfo gawk ncurses-dev libexpat-dev python-dev python python-serial sed git unzip bash help2man wget bzip2 libtool-bin

Download e compila della toolchain

Non va eseguito con utente root lo script lo impedisce

# Vado in /tmp a fare tutte le operazioni di download
cd /tmp

# Uso --recursive perchè voglio clonare anche i subrepository.
git clone --recursive https://github.com/pfalcon/esp-open-sdk.git

# Sposto la cartella appena scaricata in /opt
sudo mv -v /tmp/esp-open-sdk /opt/
sudo chown -R user:user /opt/esp-open-sdk

# Mi sposto nella cartella del SDK
cd /opt/esp-open-sdk/

# Puo impiegare fino a 20 minuti.
make toolchain esptool libhal STANDALONE=n

# poi ancora make
make
# Cerchiamo nel output del comando la riga
export PATH=/opt/esp-open-sdk/xtensa-lx106-elf/bin:$PATH

# OUTPUT DI ESEMPIO
user@ubuntu:$ >make
Makefile:180: warning: overriding recipe for target 'ESP8266_NONOS_SDK_V1.5.4_16_05_20/.dir'
Makefile:169: warning: ignoring old recipe for target 'ESP8266_NONOS_SDK_V1.5.4_16_05_20/.dir'
cp esptool/esptool.py /opt/esp-open-sdk/xtensa-lx106-elf/bin/
ln -snf ESP8266_NONOS_SDK_V1.5.4_16_05_20 sdk
Installing vendor SDK headers into toolchain sysroot
Installing vendor SDK libs into toolchain sysroot
Installing vendor SDK linker scripts into toolchain sysroot
make -C esp-open-lwip -f Makefile.open install \
    CC=/opt/esp-open-sdk/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc \
    AR=/opt/esp-open-sdk/xtensa-lx106-elf/bin/xtensa-lx106-elf-ar \
    PREFIX=/opt/esp-open-sdk/xtensa-lx106-elf
make[1]: Entering directory '/opt/esp-open-sdk/esp-open-lwip'
cp liblwip_open.a /opt/esp-open-sdk/xtensa-lx106-elf/xtensa-lx106-elf/sysroot/usr/lib/
make[1]: Leaving directory '/opt/esp-open-sdk/esp-open-lwip'
cp -a esp-open-lwip/include/arch esp-open-lwip/include/lwip esp-open-lwip/include/netif \
    esp-open-lwip/include/lwipopts.h \
    /opt/esp-open-sdk/xtensa-lx106-elf/xtensa-lx106-elf/sysroot/usr/include/

Xtensa toolchain is built, to use it:

|export PATH=/opt/esp-open-sdk/xtensa-lx106-elf/bin:$PATH| QUESTA LINEA
^________________________________________________________^
Espressif ESP8266 SDK is installed, its libraries and headers are merged with the toolchain
# FINE



# Ora, ti starai chiedendo:A cosa serve questa operazione?
# Risposta:Impostare un ulteriore percorso dentro la variabile d'ambiente PATH.
# Path contiene una serie di percorsi di cartelle, nelle quali la shell cerca i comandi che digitiamo.

cd $HOME
# con un editor di testo vim/nano aggiungiamo sul fondo del .bashrc la riga appena copiata.
# Un trucco, puoi usare CTRL+SHIFT+C per copiare dal terminale.
vim .bashrc

# .bashrc
[...]
export PATH=/opt/esp-open-sdk/xtensa-lx106-elf/bin:$PATH

#Salviamo con VIM [ZZ] con nano CTRL+O

# Aggiorniamo quindi le variabili d'ambiente per la shell corrente, ricaricando le impostazioni.
# Tutte le shell che apriremo da qui in poi saranno già configurate.
source .bashrc

Installiamo esptool

Esptool è un piccolo programmino scritto in python per flashre l'ESP8266 LINK

cd /tmp
wget https://github.com/themadinventor/esptool
sudo mv -v esptool /usr/local/bin/esptool

Installiamo FreeRTOS per ESP8266

Possiamo iniziare a scaricare i sorgenti di FreeRTOS, e installarli in /opt/

cd /tmp
git clone --recursive https://github.com/Superhouse/esp-open-rtos.git
sudo mv -v /tmp/esp-open-rtos /opt/
sudo chown -Rv user:user esp-open-rtos/

Configuriamo il nostro WI-FI

Iniziamo a lavorare sui sorgenti.

Iin questo caso uno dei file, e impostiamo il SSID e Password del wifi, che intendiamo utilizzare sul ESP8266.

[apro con vim il file:/opt/esp-open-rtos/include/ssid_config.h.]

/*
 * Cambio 
 * #error .....
 * in
 * //#error .....
 */

//#error .....
// Qui vanno il tuo SSID, e la tua Password del Wifi.
#define WIFI_SSID "mywifissid"
#define WIFI_PASS "my secret password"

 

Verifica del funzionamento.

Una volta fatto, la nostra toolchain è completa.

Come possiamo verificare che tutto funzioni correttamente?

Compiliamo e lanciamo uno dei programmi di test, forniti con FreeRTOS.

cd /opt/esp-open-rtos/examples/http_get
reset && make

# Output di esempio:
CC /opt/esp-open-rtos/examples/http_get/http_get.c
[...]
AR build/program.
CC /opt/esp-open-rtos/FreeRTOS/Source/queue.c
[...]
AR build/freertos.a
CC /opt/esp-open-rtos/lwip/sys_arch.c
CC /opt/esp-open-rtos/lwip/lwip/src/netif/ethernetif.c
AR build/lwip.a
[...]
CC /opt/esp-open-rtos/core/esp_interrupts.c
CC /opt/esp-open-rtos/core/debug_dumps.c
AS /opt/esp-open-rtos/core/exception_vectors.S
AS /opt/esp-open-rtos/core/spiflash-cache-enable.S
C++ /opt/esp-open-rtos/core/cplusplus_operators.cpp

[...]

esptool.py v1.2-dev

Come utilizzare debuggare, e flashare il chip

Possiamo flashare il nostro ESP8266 usando make flash.

Per flashare e collegarci immediatamente alla seriale di debug utilizzando make test

make flash # Flasha semplicemente il Chip
make test # Flasha il chip, e inizia il debug