Buenos días.
Hace un tiempo ya me enredé con FAT en los uC. Primero con FAT32 y luego expandiendo la librería creada por
andyolivares para darle soporte para FAT16.
Ahora probando el hardware real, me surgieron algunos problemas. Más que nada para determinar el tipo de sistema de archivos de una memoria SD.
No logro seguir estrictamnete lo que Microsoft exige en su White Paper:
Microsoft Extensible Firmware Initiative FAT32 File System Specification FAT: General Overview of On-Disk Format bajo el título: FAT Type Determination
Aparece la fórmula para determinar la cantidad de sectores del directorio principal:
RootDirSectors = ((BPB_RootEntCnt * 32) + (BPB_BytsPerSec – 1)) / BPB_BytsPerSec;
y acá aparece el problema.
Siendo que todas los valores son enteros, desarrollando la ecuación tenemos:
RootDirSectors = (BPB_RootEntCnt * 32) / BPB_BytsPerSec + (BPB_BytsPerSec – 1) / BPB_BytsPerSec;
Y el problema se hace evidente en el segundo término: (BPB_BytsPerSec – 1) / BPB_BytsPerSec < 1 siempre, siendo que BPB_BytesPerSec es siempre positivo.
Esto hace que el segundo término de siempre 0, lo que me hace pensar que debe haber un error, sino no tiene sentido que hayan puesto el término (BPB_BytsPerSec – 1).
Me falla la matemática? Alguien sabe cuál es la fórmula correcta para calcular la cantidad de Sectores del Directorio Raíz?
Gracias.