InsolentS 0 19 февраля, 2015 Опубликовано 19 февраля, 2015 · Жалоба Всем привет! Балуюсь с FatFs поверх AT45. Размер носителя 1мегабайт. После форматирования с помощью f_mkfs наблюдаю ровно 3/4 свободного места на диске (т.е. 768кб). Не понимаю, как служебная область Fat12 может так много занимать, ведь диск у меня всего-то 2048 кластеров размером (кластер = 1 сектор, 1 сектор = 512байт). Это, в теории, получается 1.5байт * 2048кластеров = 3кб на собственно таблицу. Я понимаю, что там ещё есть загрузочные сектора и прочая служебная информация, но ведь не 256кб :05: Я что-то не помню, чтобы у дискеты на 1.44мб было зарезервировано столько места под FAT. Мои предположения: 1) Встроенное в FatFs форматирование чего-то не так форматирует. 2) Я не докурил документацию на Fat. Любая помощь будет принята с благодарностью :beer: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha 0 5 марта, 2015 Опубликовано 5 марта, 2015 · Жалоба Приведи полную последовательность команд (с параметрами) по разбивке на разделы и форматированию. И проверке свободного места на диске. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
InsolentS 0 9 марта, 2015 Опубликовано 9 марта, 2015 · Жалоба Ура! Живой человек проявил интерес к моему вопросу!! static FRESULT res; static uint32_t total_size, free_size; static FATFS *fs_ptr; res = f_mkfs("", 0, 1); res = f_getfree("", &free_size, &fs_ptr); total_size = (fs_ptr->n_fatent - 2) * fs_ptr->csize * 512; /* TODO: Abstract out the sector size */ free_size = free_size * fs_ptr->csize * 512; Как видите, ничего особенного. total_size и free_size в байтах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 9 марта, 2015 Опубликовано 9 марта, 2015 · Жалоба Выложили бы дамп BPB, давно бы стало ясно, куда копать. Вариантов там всего ничего. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dart191 0 13 июня, 2015 Опубликовано 13 июня, 2015 · Жалоба Ура! Живой человек проявил интерес к моему вопросу!! static FRESULT res; static uint32_t total_size, free_size; static FATFS *fs_ptr; res = f_mkfs("", 0, 1); res = f_getfree("", &free_size, &fs_ptr); total_size = (fs_ptr->n_fatent - 2) * fs_ptr->csize * 512; /* TODO: Abstract out the sector size */ free_size = free_size * fs_ptr->csize * 512; Как видите, ничего особенного. total_size и free_size в байтах. Есть такой вопрос, вы уверены в верности расчёта свободного места при использовании функций get_free, есть некоторые сомнения на счёт размера кластера которого используется при расчете. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться