¿Es una técnica práctica agregar un IC de flash / RAM dedicado para aumentar la memoria de un microcontrolador para evitar escribir en una tarjeta SD?

4

Estoy trabajando con un microcontrolador Atmega328P. Este microcontrolador generará datos y los almacenará en una tarjeta SD. Mi proyecto también será alimentado por batería. Mi investigación ha demostrado que escribir en una tarjeta SD es relativamente costoso. Especialmente debido al hecho de que estoy usando una batería de 225 mAH con un regulador de potencia limitado de 120 mA.

He leído que un método común para ahorrar energía es almacenar comandos de escritura en una sola escritura. Esto parece relativamente sencillo.

Sin embargo, ahora estoy teniendo el problema de que el Atmega328p solo tiene 2kB de RAM. Por lo tanto, realmente tengo espacio limitado en el búfer.

Entonces, mi pregunta: ¿sería una técnica viable comprar una memoria flash dedicada / RAM IC para aumentar el espacio del búfer? Tengo curiosidad por la practicidad de esto y lo difícil que sería implementar.

¿Algún pensamiento? Sé que la respuesta obvia sería comprar un microcontrolador con más RAM, pero estoy tratando de seguir con este microcontrolador para que el proyecto sea compatible con el lenguaje Arduino.

    
pregunta Izzo

1 respuesta

2

He implementado un sistema como este. Usamos FRAM no volátil como un búfer, pero SRAM también funcionaría dependiendo de sus requisitos para sobrevivir a la pérdida de energía.

Guardé los datos en el FRAM hasta que estuvo casi lleno. Luego lo escribí en la tarjeta SD. Para hacer que el sistema sea más confiable, utilicé la suma de comprobación de bloques en FRAM. También escribí todos los metadatos del sistema de archivos de la tarjeta SD en FRAM también. Cuando se requerían actualizaciones, primero se actualizaba la FRAM y luego se copiaba en la tarjeta SD, lo que hacía que las actualizaciones fueran atómicas (es decir, en ningún momento del proceso era posible perder datos o dejar el sistema de archivos en un estado dañado). Usé un controlador FAT32 modificado para esto, que desafortunadamente es un código propietario o lo compartiría.

Encontré que este es un método muy eficiente. Aunque se pierde algo de tiempo para escribir datos tres veces (una vez en el búfer de datos FRAM, luego en el búfer de bloques de la tarjeta SD de FRAM, y luego en la tarjeta SD), esto fue compensado en gran medida al ser capaz de hacer DMA los datos y hacer otras tareas. Procesando mientras tanto.

Con la RAM volátil normal, obviamente no puedes usarla para hacer escrituras atómicas. Sin embargo, el almacenamiento en búfer sigue siendo valioso. En mis pruebas, las tarjetas SD escriben significativamente más rápido si puede guardar bloques de > 4kB a la vez, idealmente 64kB o más. Esto se debe probablemente a la forma en que se administra su memoria flash interna.

    
respondido por el user

Lea otras preguntas en las etiquetas