Table of Contents
- A diferença entre Flash bruta, SPI Flash e SD Card
- LittleFS vs SPIFFS: comparação técnica para microcontroladores
- Arquitetura proposta: STM32N6, SD Card, FATFS e FreeRTOS
- Gravando logs no SD Card com uma tarefa dedicada
- Exemplo conceitual usando LittleFS em uma Flash externa no STM32N6
- Exemplo conceitual usando SPIFFS em Flash externa
- Comparativo prático: FATFS, LittleFS e SPIFFS no STM32N6
- Boas práticas de projeto ao gravar arquivos em SD Card e Flash
- Escolher o sistema de arquivos é escolher a arquitetura de persistência
Em sistemas embarcados, nem todo dado pode ficar apenas em variáveis, memória RAM ou registradores. Um microcontrolador frequentemente precisa guardar configurações, logs, arquivos de calibração, certificados, imagens, modelos de IA embarcada, tabelas de parâmetros, amostras de sensores e dados coletados em campo. Quando esses dados precisam sobreviver a um reset ou à falta de energia, entramos no domínio do armazenamento não volátil.
É nesse ponto que surge a necessidade de um sistema de arquivos. Um sistema de arquivos é uma camada de software responsável por organizar dados persistentes em estruturas compreensíveis: arquivos, diretórios, nomes, metadados, posições de leitura e escrita, controle de espaço livre e, em alguns casos, mecanismos de recuperação contra falhas. Sem essa camada, o firmware teria que gravar diretamente blocos crus de memória, controlando manualmente endereços, apagamentos, alinhamento, desgaste e integridade.
No mundo dos microcontroladores, porém, o problema é mais delicado do que em um computador comum. O firmware trabalha com pouca memória RAM, tempo de execução limitado, risco de queda súbita de energia, ciclos de escrita finitos e diferentes tipos de mídia. Uma memória NOR Flash externa via SPI tem comportamento muito diferente de um cartão SD. A Flash exige apagamento por blocos, escrita com restrições físicas e controle de desgaste. Já o cartão SD possui um controlador interno que oculta boa parte da complexidade da NAND Flash usada dentro do cartão.
Por isso, comparar LittleFS e SPIFFS diretamente em um projeto com SD Card exige cuidado. O LittleFS foi projetado como um sistema de arquivos pequeno, resistente a falhas de energia, com desgaste distribuído e uso limitado de RAM/ROM para dispositivos de Flash embarcada. A própria documentação do projeto destaca recursos como dynamic wear leveling e uso de memória limitado. (GitHub) O SPIFFS, por sua vez, também foi criado para dispositivos SPI NOR Flash, com foco em alvos embarcados pequenos, pouca RAM e desgaste de blocos de Flash. (GitHub)
Isso significa que, em um projeto com STM32N6 + SD Card + FreeRTOS, o sistema de arquivos mais natural normalmente seria FATFS ou FreeRTOS+FAT, porque cartões SD são tradicionalmente formatados em FAT/FAT32/exFAT e precisam ser lidos por computadores, celulares, câmeras, gravadores e ferramentas comuns. Já LittleFS e SPIFFS fazem mais sentido quando o armazenamento é uma Flash externa ou interna acessada diretamente pelo microcontrolador, não um SD Card convencional.
O STM32N6 é uma família moderna da STMicroelectronics baseada em Arm Cortex-M55 a 800 MHz, voltada a aplicações embarcadas de alto desempenho, inclusive com recursos adequados para aplicações complexas de borda. (STMicroelectronics) Em um sistema desse tipo, usar SD Card é bastante coerente para registrar grandes volumes de dados, armazenar arquivos de configuração, gravar logs de inferência, coletar amostras de sensores ou guardar modelos e metadados de aplicação. O FreeRTOS entra apenas como camada de execução concorrente: uma tarefa pode coletar dados, outra pode gravar no cartão, outra pode transmitir pela rede, mas o sistema de arquivos precisa ser protegido contra acesso simultâneo indevido.
Portanto, neste artigo, vamos tratar o tema de forma prática: primeiro entenderemos as diferenças entre LittleFS, SPIFFS e sistemas FAT para SD Card; depois veremos quando usar cada um; em seguida construiremos exemplos em C para STM32N6 com SD Card e FreeRTOS; e, por fim, mostraremos como adaptar a ideia para LittleFS e SPIFFS, mesmo explicando por que eles não são a escolha mais natural para um cartão SD comum.
Nesta primeira parte, a ideia central é simples: sistema de arquivos em microcontrolador não é apenas “salvar um arquivo”; é escolher uma estratégia de persistência compatível com a mídia física, com a robustez desejada e com os limites do firmware.