Página 1 de 1

Compilar firmware para el modulo ESP8266

Publicado: 11 Abr 2015 23:28
por kurtsik
Comprobado que funciona correctamente en una Ubuntu 14.04


- Descargar el SDK y construir el toolchain:


https://github.com/pfalcon/esp-open-sdk

Instalar los siguientes paquetes:

Código: Seleccionar todo

$ sudo apt-get install make unrar autoconf automake libtool gcc g++ gperf flex bison texinfo gawk ncurses-dev libexpat-dev python sed
Descargar el SDK del repositorio:

Código: Seleccionar todo

$ git clone https://github.com/pfalcon/esp-open-sdk
$ cd esp-open-sdk
$ make STANDALONE=y
Tarda un rato bastante largo en descargar y compilar todo lo necesario.

Para actualizar del repositorio con futuros cambios:

Código: Seleccionar todo

$ make clean
$ git pull
$ git submodule update



- Obtener el firmware:


https://github.com/nodemcu/nodemcu-firmware

Para empezar es necesario añadir el directorios donde residen las herramientas de compilacion a la variable PATH:

Código: Seleccionar todo

export PATH=$PATH:<RUTA_ADECUADA>/esp-open-sdk/xtensa-lx106-elf/bin/
Despues ya podemos iniciar la compilacion accediendo al directorio donde hemos descargado el firmware y ejecutando:

Código: Seleccionar todo

$ make



- Flashear el firmware en el modulo:


Necesitaremos varias cosas para realizar el flasheo: el script esptool.py (se descarga con el propio firmware) y un FTDI que funcione a 3.3V (http://www.dx.com)

A la hora de realizar las conexiones hay que tener en cuenta que es necesario poner el modulo en modo upload, para ello conectaremos el pin GPIO0 a tierra tal y como se aprecia en la siguiente imagen:
esp8266-reflash-firmware.png
(359.34 KiB) Descargado 745 veces

Nos aseguraremos de estar en el directorio donde hemos descomprimido el firmware y ejecutaremos los siguientes comandos:

Código: Seleccionar todo

esptool.py elf2image app/.output/eagle/debug/image/eagle.app.v6.out
En este momento conectaremos el modulo al puerto serie. Yo he tenido comportamientos bastante extraños si lo alimentaba por medio del FTDI, asi que al final he optado por alimentarlo con una fuente externa (solo hay que tener la precaucion de conectar la masa del FTDI con el masa de la fuente).
El orden para conectarlo es: primero el FTDI al puerto serie y despues encender la fuente de alimentacion.
Una vez conectado debemos ejecutar el siguiente comando:

Código: Seleccionar todo

esptool.py write_flash 0x00000 app/.output/eagle/debug/image/eagle.app.v6.out-0x00000.bin 0x10000 app/.output/eagle/debug/image/eagle.app.v6.out-0x10000.bin
Se nos mostrara por pantalla el avance del proceso y cuando el script ha terminado.

Para comprobar que todo es correcto apagaremos la fuente de alimentacion y nos conectaremos con el terminal serie para poder observar el arranque. Retiramos el pin a masa que pone el modulo en modo download (GPIO0) y encedemos la fuente de alimentacion. Si todo ha ido bien veremos en la pantalla unas lineas similares a estas:

Código: Seleccionar todo

NodeMCU 0.9.5 build 20150318  powered by Lua 5.1.4                           
lua: cannot open init.lua



- Cargar un script de LUA:

Podemos utilizar la herramienta luatool: https://github.com/4refr0nt/luatool, un script en Python.
No aseguraremos de tener instalado pyserial:

Código: Seleccionar todo

$ sudo apt-get install python-serial
El uso es muy sencillo y proporciona mucha informacion del proceso.
Para realizar una prueba podemos editar el fichero init.lua que proporcionan en el propio comprimido del script y adecuarlo con los datos de nuestra conexion Wifi:

Código: Seleccionar todo

-- wifi config start
wifi.sta.config("SSID","MI_CONTRASEÑA")
-- wifi config end
Despues ejecutamos el script de la siguiente maneras:

Código: Seleccionar todo

./luatool.py --port /dev/ttyUSB0 --src init.lua --dest init.lua --verbose
./luatool.py --port /dev/ttyUSB0 --src main.lua --dest main.lua --verbose
Para comprobar que todo esta correcto ejecutamos un terminal serie e introducimos los siguientes comandos:

Primero reiniciamos el ESP8266.

Código: Seleccionar todo

node.restart()
Y verificamos que nos conectamos a la red Wifi que hemos configurado:

Código: Seleccionar todo

dofile("main.lua")



- Restaurar el firmware original:

Si por alguna razon queremos restaurar el firmware original el procedimiento es bastante sencillo.
El firmware lo podemos descargar de esta web, se trata de un comprimido conteniendo un unico archivo .bin:

http://www.electrodragon.com/w/ESP8266_Firmware

Despues conectamos el GPIO0 del modulo a GND para ponerlo en modo descarga y conectamos la alimentacion.

Por ultimo accedemos al directorio del SDK donde tengamos el script sptool.py, copiamos el .bin que hemos descargado antes, y lo ejecutamos de la siguiente manera:

Código: Seleccionar todo

$ ./esptool.py write_flash 0x000000 v0.9.2.2ATFirmware.bin
El archivo v0.9.2.2ATFirmware.bin es el firmware que descargamos antes, es posible que el nombre sea diferente.

Re: Compilar firmware para el modulo ESP8266

Publicado: 12 Abr 2015 00:16
por Disenator
Pedazo currada, muchas gracias a ver si consnigo un programador TTL y lo pruebo que ya tengo ganas