Manual

do

Maker

.

com

Sistema de arquivos SPIFFS no ESP32

Sistema de arquivos SPIFFS no ESP32

O sistema de arquivos SPIFFS no ESP32 foi descontinuado, dando lugar ao LittleFS. De qualquer modo, as chamadas são exatamente as mesmas, bastando substituir o prefixo dos métodos.

Apesar de ser substituído, o processo é basicamente o mesmo, mas se quiser ler a atualização desse artigo, veja "Sistema de arquivos no ESP8266".

SPIFFS no ESP32

O título sugere o SPIFFS no ESP32, mas esse suporte também existe no ESP8266. Já escrevi alguns artigos a respeito, como esse, sobre como reparar o SPIFFS, esse com bastante informação sobre como salvar arquivos no ESP8266, esse com MicroPython e webRPL. Se der uma boa olhada, tem outros, clique no menu ESP8266 aí em cima.

mkspiffs e esptool.py

Existem pelo menos 2 maneiras de fazer isso. Me guiando pela documentação do ESP-IDF, a sugestão é utilizar o programa mkspiffs, que deve ser baixado do github. Para compilar no Wndows, use o MinGW. Como só uso Linux e desenvolvo, já tenho o gcc instalado em meu computador. Se for o seu caso, ótimo.

Siga os passos:

git clone https://github.com/igrr/mkspiffs.git
cd mkspiffs
git submodule update --init
make dist

Isso deve gerar o binário no diretório corrente.

E para fazer o flashing, podemos utilizar o esptool.py.

sudo apt-get install esptool

Agora vem bem a calhar citar o artigo anterior sobre tabela de partições no ESP32. Vamos criar uma partição de dados de 1MB, depois gravá-la no endereço de dados, conforme recomendado na documentação do ESP-IDF. Deve haver alguma razão para isso, mas no documento de tabela de partições está descrito que a partição deve ser gravada em 0x10000 (factory app offset) e o exemplo com o mkspiffs em outra parte da documentação está exemplificando a gravação em 0x110000.

Criamos o sistema de arquivos:

mkdir file && cd file
../mkspiffs -c . -b 4096 -p 256 -s 0x100000 spiffs.bin

Se você tentar gravar em um diretório contendo outros arquivos, vai dar muito errado. Agora vamos aos detalhes

O parâmetro "-c ." indica o diretório onde o arquivo deve ser gerado.

O parâmetro "-b 4096" é o block size, sendo 4096 o padrão para o SPI Flash.

O parâmetro "-p 256" é o page size, também padrão para o SPI Flash.

O parâmetro "-s 0x100000" é o offset da partição, conforme explicado no artigo anterior.

O tamanho do arquivo gerado é automaticamente 1M.

Para gravar a imagem no ESP32, passamos o offset. Mas atenção: Se estiver utilizando a IDE do Arduino, ambas as tabelas de partição (minimal.csv e default.csv) já tem uma partição SPIFFS. Não faça flashing sem saber em que endereço gravar; conheça previamente a tabela de partições que seu ESP32 está usando. Essa linha abaixo é apenas um exemplo:

python esptool.py --chip esp32 --port [port] --baud [baud] write_flash -z 0x110000 spiffs.bin

No suporte do Arduino a tabela de partições do ESP32 está em ~/Arduino/hardware/espressif/esp32/tools/partitions noLinux:

partition_table-csv-arduino_ide.webp

Enfim, se estiver utilizando o ESP-IDF, a coisa deve funcionar desse jeito; você pode montar sua tabela de partições e então indicá-la através do comando make menuconfig dentro do diretório do projeto que deseja compilar (que  abrirá um menu onde você poderá referenciar seu arquivo .csv).

Então vá até a opção Partition Table e pressione Enter.

Quando pressionar Enter, deverá ver um submenu.

O primeiro ítem desse submenu te dá as opções de Single Factory (sem OTA), Factory app (com as duas definições de OTA explicados no artigo anterior) e Custom partition table CSV, onde você pode passar uma tabela de partições criada por você. Abri um exemplo do diretório storage, e por padrão ele já usa uma tabela de partições customizada. Por fim, o último ítem desse menu serve para indicar o offset da partição Factory; os detalhes você encontra no artigo anterior também.

No próximo artigo começamos a manipular o sistema de arquivos e em breve começaremos a programar fora da IDE do Arduino. Por enquanto preciso por exemplos práticos de tudo que citei nos últimos artigos relacionados ao ESP32. Alguns já estão devidamente exemplificados, outros ainda pendentes, mas não considere-os como finalizado, sempre concluo com exemplos práticos e em algumas vezes, como video. E continua a chamada para a diversão; pegue seu ESP32 na CurtoCircuito, clicando aí no banner do carrossel; e vamos brincar!

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.