Jump to content

    
QuickWitted

Cвоя FAT для связки MK <=> FLASH

Recommended Posts

Ну как же не может?

Берём файл размером меньше и равный размеру кластера и забиваем им всю память под разными именами.

В итоге FAT будет забита записями 0x0FFFFFFF - последний кластер.

А в Root Directory не будет ни одной файловой структуры с именем файла 0x00...

Share this post


Link to post
Share on other sites

 

20 minutes ago, forummailandlogin said:

А в Root Directory не будет ни одной файловой структуры с именем файла 0x00...

Да, если root dir заполнен аккурат по границе кластера, '0' действительно не будет. Но будет конец цепочки кластеров в любом случае.

Share this post


Link to post
Share on other sites
1 minute ago, forummailandlogin said:

Ни какой цепочки не будет т.к. у нас файл размеров в один кластер, а не два или более.

Причем тут размеры файлов? Root dir в FAT32 представляет собой такой же файл из цепочки кластеров. Если в ней 100500 файлов, то цепочка будет, никуда не денется.

Share this post


Link to post
Share on other sites

Я не знаю. Я понимаю так.

Цепочка кластеров это след по которому можно отследить последовательность расположения данных одного файла. Звено, за звеном. Но применительна она не к Root Directory, а к FAT.

Share this post


Link to post
Share on other sites

Цепочка кластеров может принадлежать файлу, директории или корневой директории в случае FAT32. Признаком конца директории является нулевая запись или конец кластерной цепочки.

Share this post


Link to post
Share on other sites

Могу простейший вариант предложить: в первом мегабайте флешки разместить таблицу индексов, а файлы писать последовательно, как в tar. Если файл удаляется, остается дырка, но и черт с ней (пока забьем 16ГБ под завязку, скорей, флешка сдохнет; в крайнем случае можно потом вытащить флешку и на компьютере сделать "дефрагментацию").

Если мне понадобится работать с флешками, я себе именно такую псевдофайловую систему и сделаю. А на компьютере написать для нее простенький модуль ядра, чтобы монтировать можно было и работать с файлами, не считывая полностью содержимое всей флешки.

Share this post


Link to post
Share on other sites

На само деле всё просто. Действительно в FAT32 Root Directory является таким же файлом, а значит информация о нём находится в FAT.

Минимальный размер Root Directory как у всех - 1 кластер. как только количество каталожных записей превысит границу кластера, то в FAT на его месте появится номер кластера где искать продолжение.

Таким образом и узнаём размер Root Directory что бы не вылетить за его пределы при поиске по нему.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.