Escolher o sistema de arquivos é escolher a arquitetura de persistência
Ao trabalhar com sistemas de arquivos em microcontroladores, a decisão mais importante não é simplesmente escolher “o melhor” sistema de arquivos, mas entender qual problema de armazenamento precisa ser resolvido. Um cartão SD, uma Flash SPI externa e a Flash interna do microcontrolador podem parecer formas semelhantes de memória não volátil, mas exigem estratégias bastante diferentes no firmware.
No caso do STM32N6 com SD Card e FreeRTOS, a escolha mais prática e natural é usar FATFS ou uma alternativa equivalente voltada a mídia de bloco. O SD Card já possui um controlador interno que gerencia a Flash física, e o firmware enxerga o cartão como uma sequência de setores. Além disso, FATFS permite que os arquivos sejam lidos facilmente em um computador, o que é uma grande vantagem para logs, arquivos CSV, dados de sensores, diagnósticos e coleta de informações em campo.
Já o LittleFS e o SPIFFS pertencem a outro contexto. Eles são mais adequados para memórias Flash controladas diretamente pelo microcontrolador, como Flash SPI, QSPI ou OctoSPI. Nessa situação, o firmware precisa lidar com blocos apagáveis, ciclos de escrita limitados, desgaste e risco de queda de energia durante uma operação. Para projetos novos, o LittleFS tende a ser a escolha mais robusta, especialmente por oferecer melhor consistência, suporte a diretórios reais e uma arquitetura mais moderna. O SPIFFS ainda pode ser útil em projetos legados, mas dificilmente seria minha primeira escolha em um novo produto.
A arquitetura mais madura não tenta forçar um único sistema de arquivos para todas as mídias. Em um projeto profissional, faz muito sentido usar SD Card com FATFS para arquivos grandes e exportáveis, enquanto uma Flash externa com LittleFS pode armazenar configurações internas, certificados, estado persistente e metadados do produto. Dessa forma, cada tecnologia é usada onde ela realmente faz sentido.
Também vimos que o uso de FreeRTOS exige disciplina. O sistema de arquivos deve ser tratado como um recurso compartilhado, relativamente lento e sensível a falhas. Por isso, uma tarefa dedicada de armazenamento, filas de mensagens, mutexes e sincronização periódica são decisões simples que tornam o firmware mais seguro e previsível. Não é necessário transformar o artigo em um tutorial profundo de FreeRTOS, mas é indispensável reconhecer que concorrência mal controlada pode corromper arquivos ou gerar falhas difíceis de depurar.
A principal lição é esta: persistência em sistemas embarcados não é apenas gravar dados; é projetar uma estratégia de armazenamento coerente com a mídia física, com a confiabilidade esperada e com a vida útil do produto. No STM32N6, temos poder computacional suficiente para construir uma camada de armazenamento bem organizada. O que define a qualidade do projeto não é apenas o microcontrolador escolhido, mas a clareza arquitetural com que tratamos arquivos, logs, configurações e dados persistentes.