Cómo actualizar el firmware del ESP8266 manualmente

Publicado el 25 agosto 2017 por Gaspar Fernández Moreno @gaspar_fm


Tanto si lo que queremos es tener la última versión del software, rescatar un chip que creíamos perdido o programar nuestro chip con una versión propia. Nos viene muy bien hacer la reprogramación de nuestro ESP8266 y en este post veremos los pasos básicos para hacerlo.

Son mediados de agosto de 2017, el post no será muy largo 🙂

Conexión con adaptador USB

Tenemos que tener en cuenta los pins de nuestro ESP8266 y tener localizados GPIO0 y GPIO2 que son los pins que usaremos para entrar en modo programación. en este caso GPIO0 lo pondremos a nivel bajo (0V) y GPIO2 a nivel alto (3.3V). Esto lo vemos aquí.
Representaré en el diagrama la conexión con un adaptador USB-UART. Si queréis ver cómo se conectaría un Arduino, podéis verlo en el anterior post.

Como vemos, el único que dejamos sin conectar es el RESET.

Tenemos que tener en cuenta que el modo programación sólo funciona si arrancamos el chip con esta configuración. Es más, una vez arrancado el programa, GPIO0 y GPIO2 pueden tener los valores que quieran.

Herramienta para programar

Vamos a hacer la programación con la herramienta esptool, hecha en Python. Que podemos descargarla desde GitHub,o instalarla directamente con:

Descargando el firmware

Podemos descargar el firmware precompilado desde el GitHub de espressif. Ahí veremos varios archivos:

  • boot_vxxx.bin : Arranque
  • at/512+512/user1.1024.new.2.bin : Software
  • at/512+512/user1.1024.new.2.bin : Software
  • esp_init_data_default : Inicialización de datos por defecto
  • blank.bin : Todo lleno de unos, para tener el chip limpio de valores salvados y demás.

Subiendo el firmware

Para ello tenemos que tener en cuenta el dispositivo que tenemos. Por ejemplo el ESP8266-01 es de 8Mbit, o 1Mb. Aunque el ESP-12E, por ejemplo tiene 4Mb. Incluso con un poco de maña se puede sustituir el chip de memoria por uno más grande. Por lo que debemos mirar las direcciones de memoria que escribiremos.
El arranque (boot) siempre irá en la 0x00000 (lo primero que nos encontramos), y el software irá a partir del 0x01000. Lo importante es la configuración y los datos de usuario que suele ir al final de la memoria, como vemos aquí.

Para proceder, estos fueron los comandos que yo ejecuté en mi caso.
boot_v1.7.bin:

user1.1024.new.2.bin:

esp_init_data_default.bin:

Lo malo, es que cada vez que subo un archivo tengo que cortar la corriente y volver a alimentar el dispositivo para volver a entrar en modo programación.

Una vez completado el proceso, podemos pedir información a nuestro ESP8266 conectando con el puerto serie (115600 baudios por defecto) y pidiendo:

SDK version:2.1.0(116b762)

compile time:May 5 2017 16:37:48

Y, como vemos, ya tengo una versión mucho más nueva en el chip.

También podría interesarte...