В настоящее время я пытаюсь закодировать систему FAT в C на карте Xillinx Kintex 7. Он оснащен MicroBlaze, и мне уже удалось создать большинство необходимых функций.
Проблема, с которой я столкнулся, связана с общей емкостью папки. Я читал в Интернете, что в FAT32 папка должна содержать более 65 000 файлов, но с установленной системой я ограничено 509 файлами в папке. Я думаю, это из-за моего понимания того, как работает FAT32, но вот что я сделал до сих пор:
- Я создал функцию форматирования, которая записывает правильные данные в MBR (сектор 0) и идентификатор тома (сектор 2048 на моем диске).
- Я создал функцию, которая записывает содержимое корневого каталога (первый кластер, который начинается в секторе 124 148)
- Я создал функцию, которая записывает новую папку, содержащую N файлов размера X. Имя папки записывается в корневом каталоге (сектор 124148), а имена файлов записываются в следующем кластере (сектор 124212, так как я установите размер кластера на 64 сектора). Наконец, содержимое файлов (простой счетчик) записывается в следующий кластер, который начинается с сектора 124276.
Здесь дело в том, что папка имеет размер 1 кластер, что означает, что она имеет емкость 64 сектора = 32 КБ, и я могу создать только 512 (минус 2) файлов в каталоге! Тогда мой вопрос: можно ли изменить размер папки в количестве кластера? В настоящее время я использую только 1 кластер, и я не понимаю, как его изменить. Это связано с FAT диска?
Заранее спасибо за помощь!
ПРИМЕЧАНИЕ. Мой диск распознается Windows, когда я подключаю его, я могу получить доступ и прочитать каждый файл (кроме тех, которые превышают ограничение 510), и я могу создавать новые файлы через проводник Windows. Очевидно, это происходит из-за того, как я понимаю создание файлов и создание папок!