Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

120
Views
Cambiando solo un byte en el sector de la tarjeta SD

Estoy implementando FAT16 en tarjeta SD con Atmega328.

A menudo necesito cambiar solo uno o dos bytes en el sector (región 512B).

Sé cómo funciona Flash y que necesita sobrescribir todo el sector a la vez, pero me preguntaba si tal vez había algún comando especial que hiciera que la tarjeta lo manejara.

El punto es que el atmega tiene solo 2k de RAM, y asignar 512 solo para un búfer de tarjeta SD de lectura, modificación y escritura es muy desfavorable. ¿No hay otra manera?

(PD. AFAIK, el atmega no puede tener ram externa de forma nativa)

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

El módulo del sistema de archivos ELM Petit FAT afirma:

Puede incorporarse a los diminutos microcontroladores con memoria limitada incluso si el tamaño de la RAM es menor que el tamaño del sector.

De hecho:

  • Consumo de RAM muy pequeño (área de trabajo de 44 bytes + cierta pila).

Es de código abierto; por lo que puede echar un vistazo a cómo lo hace (o simplemente usarlo tal como está).

La función de escritura tiene algunas restricciones significativas, como que si bien puede modificar un archivo, no puede crear ni cambiar el tamaño de uno, lo que probablemente sea el compromiso necesario para evitar los búferes de sector.

Existe una versión completa de ELM FatFS , pero requiere mucho más código y espacio de RAM . La página también tiene enlaces a la especificación FAT32 y algunas notas técnicas sobre cómo funcionan las tarjetas SD que pueden ser útiles.

EDITAR:

De hecho, esto no es particularmente útil. La afirmación de Petit FAT se refiere únicamente a la capa del sistema de archivos en sí, no incluye ningún controlador de dispositivo específico de hardware, y para SD/MMC no hay escapatoria del ciclo de lectura-modificación-escritura de 512 bytes.

Aunque es posible que el AVR no sea compatible con la memoria externa asignada a la memoria, se podría usar un dispositivo de memoria en serie externo, como Cypress FRAM o nvSRAM , para almacenar los datos del sector; aunque no es volátil, puede eliminar por completo la necesidad de SD, a menos que se requieran específicamente medios extraíbles de gran tamaño.

over 4 years ago · Santiago Trujillo Report

0

No puede cambiar solo unos pocos bytes en un sector sin leer/escribir los 512 bytes completos. Entonces, realmente necesita la RAM para el búfer.

Sin embargo, hay formas de preasignar el espacio de archivos o actualizar el FAT solo cada algunas escrituras. Eso incluso conservará los ciclos de escritura, pero podría provocar la pérdida de datos si se apaga antes de que se actualice la FAT (sin embargo, es posible que no dañe el sistema de archivos si se implementa correctamente).

Como afirma que estos son ArduinoNano baratos (clones, supuestamente), podría usar dos de ellos interconectados con UART/SPI/i2C; lo que esté disponible, incluso 8 bit bit-bang funcionaría.

Uno hace lo que quieras hacer y el otro es solo para el procesamiento de tarjetas SD/FAT.

Me recuerda al Comodore 64 y su unidad de disquete 1541 que también incluía una pequeña CPU (bueno, "MCU", pero no un solo chip).

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!