Понимание FAT16
Я занимаюсь разработкой запоминающего USB-устройства флэш-памяти с FAT16
файловая система. Это работает должным образом, однако мне трудно понять, что происходит в сегментах FAT.
Когда я начинаю, у меня есть один файл длиной 56 байт в корневом каталоге, его длина 32 бита, а данные хранятся во втором кластере (0 и 1 нельзя использовать в FAT).
если я смотрю на дамп памяти сегмента FAT, я вижу:
f8 ff ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00... zeros until the end
Как я понимаю, последний 0xFFFF означает, что этот кластер является последним кластером в цепочке для этого файла.
Все идет нормально.
Но... когда я расширяю размер фактического файла до 4032 байт, сегмент FAT превращается в
f8 ff ff 00 f0 ff 05 60 00 07 f0 ff 00 00 00 00 00... zeros until the end
Кто-нибудь может объяснить, что здесь происходит?
Я вижу несколько вещей, которые не могу объяснить:
1. почему 4 системных зарезервированных байта меняются?
2. Я не вижу 0xFFFF, что означает, что цепочке кластеров нет конца?
Если это кому-нибудь поможет, размер блока составляет 512 байт, файловая система отформатирована по 2 сегмента на кластер.
1 ответ
Это была FAT12, а не FAT16, с которой я работал.
FAT12-16 отличается количеством кластеров, а не строкой, записанной в загрузочном секторе.