Я пытаюсь записать драйвер файловой системы FAT32 на RPI 3B.Я могу читать сектора FAT и сектора корневых каталогов с помощью драйвера emmc.
У меня есть сомнения относительно того, как следовать связанному списку записей FAT, когда указатель следующей записи (следующий номер кластера) не помещается в текущий сектор FAT?Должен ли я читать сектор FAT каждый раз, когда добираюсь до нового номера кластера?
Мое текущее понимание заключается в следующем: Получить первый номер кластера (cluster_number) каталога / файла. Считать сектор FAT, который содержит запись first_cluster_number.Скажем, я читаю сектор FAT как
uint8_t fat_sector[512] = { 0 };
uint32_t this_fat_sector_num, this_fat_entry_offset;
this_fat_sector_num = unusedSectors + reservedSectorCount + ((cluster_number * 4)/ bytesPerSector);
this_fat_entry_offset = (cluster_number * 4)/ bytesPerSector;
read_fat_sector(this_fat_sector_num, & fat_sector[0]);
// Calculate next cluster in chain
uint32_t next_cluster_number = ((uint32_t * fat_sector[this_fat_entry_offset])) & 0x0fffffff;
// Calculate next cluster in chain 1 more time, is below code correct ?
uint32_t next_next_cluster_number = ((uint32_t * fat_sector[next_cluster_number])) & 0x0fffffff;
Что происходит, когда следующий номер кластера отсутствует в уже прочитанном буфере fat_sector (512 байт)?Если номер кластера = индекс следующей записи в fat_sector, нужно ли умножить его на 4, учитывая, что жирные 32 записи занимают 4 байта.Если кто-то может дать некоторую ясность, это будет полезно.Заранее спасибо.