Вот такая вещь есть... писал сам... давно... вроде даже работало.
Писалось под MSP430
код 4324 байт
глобальных переменных 48 байт
скока стека жрет - хз
для работы требует только один буффер 512 байт
(для входных данных, выходны данных, и внутренних рассчетов)
Чтоб заработало надо определить несколько define
и реализовать функции доступа непосредственно к носителю данных
возвращающих true если норма и false если что то не так
uchar MMCInit(void);
uchar MMCReadSector(uchar *buf,ulong sector);
uchar MMCWriteSector(uchar *buf,ulong sector);
(кто не в курсе секторы по 512 байт

Тестировалось с картой MMC вроде 16 МБ (FAT12)
Если у кого заработает отпишите...