El blog de Julián :-)!

Información para compartir :-)!

Compilar mkspiffs para Linux

leave a comment »

La placa WeMos D1 está basada en el microcontrolados ESP8266 y tiene 4 Mbytes de flash (la página del fabricante se puede consultar acá). Esta memoria no volátil se puede usar ya sea sólo para grabar nuestro programa, o bien fraccionarla como si fuera un disco y usar parte de ese espacio para guardar datos diversos. Estos datos pueden ser desde páginas web, calibración de sensores o certificados y claves de seguridad. El sistema de archivos que se construye sobre esta memoria se llama spiffs (SPI Flash File System, más información acá ).

Tanto la configuración de la memoria como la carga de datos se puede hacer desde la ide de arduino : Primero se elige el tamaño que se va a destinar para el sistema de archivos (Herramientas -> Flash Size) y luego se pueden cargar los datos (Herramientas  -> ESP8266 Sketch Data Upload). En cuanto al tamaño hay dos opciones: 3 MB para programa y 1 MB para datos, o al revés. Respecto a los datos, se cargan aquellos archivos que se hayan colocada en un subdirectorio llamado ‘data’ en el directorio del sketch actual.

Dicho esto, el caso fue que cuando quise subir mis datos obtuve un error del tipo

SPIFFS Create Failed!

Investigando un poquito, resulta que la ide en realidad usa un programa llamado mkspiffs para subir los archivos a la flash del la placa, a través de un plugin. Las instrucciones para instalar el plugin están en el vínculo anterior, pero se reducen básicamente a descargar el archivo .jar y copiarlo en la ruta que corresponde, así que lo hice, pero el error persistió, aunque me dio la pista de que el problema se hallaba en el mkspiffs, ya que no encontraba una librería. Por lo tanto, había que reinstalarlo partiendo del código fuente para que se adapte a las librerías que tenía en mi sistema.

Primero hay que clonar el repositorio en nuestro directorio ‘home’ (eso es muy importante para no tener problemas con los permisos de acceso)

git clone https://github.com/igrr/mkspiffs

Luego, entramos al directorio ‘mkspifss’ y sincronizamos para que no falte ningún archivo (antes de hacer este paso me faltaba ‘spiffss.h’ 😉 )

cd mkspiffs

git submodule update –init

Ahora ya podemos compilar

make dist

Y con eso deberíamos, después de un ratito que tarda la compilación tener el ejecutable ‘mkspiffs’ en el directorio en que compilamos. Lo que queda es copiarlo a la ruta correcta para que lo encuentre la ide de arduino,  debe ser algo como

~/arduino-1.8.4/hardware/esp8266com/esp8266/tools/mkspiffs/

Sencillamente se borra la versión vieja, se copia la nueva y ya debería funcionar correctamente.

Espero sirva a quien lo necesite. Por supuesto, cualquier comentario es bienvenido,

Written by jrpk

enero 8, 2018 a 11:54 am

Deja un comentario