Autor Tema: Determinación entre FAT(16) o FAT32  (Leído 1256 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Determinación entre FAT(16) o FAT32
« en: 04 de Septiembre de 2010, 03:28:35 »
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.


"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.


 

anything