ESP32

Sistema de arquivos SPIFFS no ESP32

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:

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

SPIFFS no ESP32
SPIFFS no ESP32

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

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:

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:

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

SPIFFS no ESP32
SPIFFS no ESP32

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):

SPIFFS no ESP32
SPIFFS no ESP32

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

SPIFFS no ESP32
SPIFFS no ESP32

 

Quando pressionar Enter, deverá ver um submenu assim:

SPIFFS no ESP32
SPIFFS no ESP32

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 e vamos brincar!

Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte – https://www.facebook.com/groups/dobitaobyte/

Próximo post a caminho!