Jump to content

    

Минимальный размер раздела FAT

В сети уйма статей с описанием максимально-допустимого размера раздела в файловых системах FAT16 и FAT32, а вот про минимальный размер ни слова. Начал разбираться с драйвером FAT от ELM Chan'a. В функции создания раздела f_mkfs()

    // b_vol - Базовый LBA раздела
    // sz_vol - Общее число секторов в составе раздела

    /* Create a single-partition in this function */
    if (disk_ioctl(pdrv, GET_SECTOR_COUNT, &sz_vol) != RES_OK) LEAVE_MKFS(FR_DISK_ERR);
    b_vol = (opt & FM_SFD) ? 0 : 63;        /* Volume start sector */
    if (sz_vol < b_vol) LEAVE_MKFS(FR_MKFS_ABORTED);
    sz_vol -= b_vol;                        /* Volume size */

    if (sz_vol < 128) LEAVE_MKFS(FR_MKFS_ABORTED);    /* Check if volume size is >=128s */

Т.е. начальный сектор раздела начинается с #63 (либо #0 в случае использования SFD-тома). Но дальнейшая проверка (не менее 128 секторов) не даёт создать том. Выходит, что при минимальном размере сектора 512 байт минимальный размер диска должен быть 512*128=64 кБайт.

Для чего мне это надо? Требуется создать FAT-раздел внутри встроенной в МК Flash (свободно 20 кБайт, т.е. 40 LBA).

Библиотека всё-таки рассчитана на носители большого размера (SD-карты) и число 128 секторов могло появиться для ускорения/оптимизации работы алгоритма. Поэтому, если это субъективная реализация автора библиотеки, то попробую исправить руками хардкод. Если требования стандарта - откажусь от реализации FAT.

Полного и понятного описания структуры FAT (для нубов с картинками) пока не нашёл. Первый личный опыт работы с файловой системой )

PS На отладочной плате stmF0-Discovery установлен stm32F103C8 с 64 кБайтами Flash и при этом как-то FAT на нём реализован: при подключении по USB определяется как съёмный диск.

 

Share this post


Link to post
Share on other sites

fat.pdf старая статья из журнала. Может пригодится.

Есть ещё старая статья об FAT32 на английском от микрософт. Гуглится легко.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this