Jump to content

    
Sign in to follow this  
kanzler

Вопрос по FatFs от мистера ChaN'а

Recommended Posts

Обновилась FatFS R0.07

R0.07, Apr 01, 2009

Merged Tiny-FatFs as a buffer configuration option.

Added long file name support.

Added multiple code page support.

Added re-entrancy for multitask operation.

Added auto cluster size selection to f_mkfs().

Added rewind option to f_readdir().

Changed result code of critical errors.

Renamed string functions to avoid name collision.

Share this post


Link to post
Share on other sites

Читал, но мой англицкий оставляет желать лучшего.

Так и пытаюсь произвести чтение директории с помощью f_readdir, возвращает - FR_NO_FILESYSTEM, хотя флешка перед тем была отформатированна FAT16 и записан файл.

 

В этом нет проблемы драйвер был прикручен и он работает без сбое

 

Была такая же проблема: все функции в diskio.cpp корректно работали (тестил каждую после портирования на MSP430), но после успешного монтирования (FR_OK) функцией f_mount при попытки открыть фаил f_open возвращал - FR_NO_FILESYSTEM.

Проблема была устранена путем коммента функции disk_initialize перед f_mount, которую вызывал для проверки ее же работоспособности.

Наверное дело в том, что мой проект не поддерживает снятия питания с карты, и при повторной внутренней инициализации в f_open, происходила ошибка.

 

P.S. FatFs 007, IAR 4.10, MSP430

Share this post


Link to post
Share on other sites

У меня вопрос новичка к вам. Если с помощью FATFs записывать файлы на флешку а потом подключить к компьютеру. То как она определиться по виндой? Как FAT16?

 

Заранее спасибо за ответ.

Share this post


Link to post
Share on other sites

Я имею ввиду, у меня есть голая флешка, отформатированная. Я на ней создаю файловую систему под средством FATFs, записываю несколько файликов и так далее... Потом подключаю её к компу, она определиться в винде или нет? И если да то как?

Share this post


Link to post
Share on other sites
Я имею ввиду, у меня есть голая флешка, отформатированная. Я на ней создаю файловую систему под средством FATFs, записываю несколько файликов и так далее... Потом подключаю её к компу, она определиться в винде или нет? И если да то как?

Флешки "голыми" не выпускаются. От изготовителя они приходят уже отформатированными (как правило в FAT16), Форматирование необходимо только в случае "слета" файловой системы (да и то, если на карточке есть нужная информация, то ее нужно перед фоматированием извлечь, а это, как правило, делается с помощью ПК, там же обычно она и форматируется) или в каких либо особых случаях.

Если все же нужно форматирование, то, вообще говоря, файловая система выбирается исходя из обьема носителя. Но в случае с обычными современными карточками памяти выбор невелик - ФАТ12 никак не подойдет, а ФАТ32 пока нет смысла(хотя возможность есть).

Share this post


Link to post
Share on other sites
Если все же нужно форматирование, то, вообще говоря, файловая система выбирается исходя из обьема носителя. Но в случае с обычными современными карточками памяти выбор невелик - ФАТ12 никак не подойдет, а ФАТ32 пока нет смысла(хотя возможность есть).

 

на карточку 8Gb и больше FAT16 будет затруднительно прикрутить... не разбивая на разделы

так что FAT32 вполне востребована.

 

/Gr

Share this post


Link to post
Share on other sites

Бывают и другие причины выбирать FAT32 вместо FAT16. Например из за ограничения на количество файлов в корневом каалоге FAT16. А с появлением поддержки LFN в FatFS это становится актуальным - при длинных именах емкость корневого каталога может оказаться файлов на 30-40. И этого может не хватить.

Share this post


Link to post
Share on other sites
Если ее не форматировать средствами fatfs, то какая была до записи файлов, такая и останется.

Извиняюсь за очень легкий вопрос, но никак не могу разобратся. А как форматировать накопитель средствами fatfs?

Share this post


Link to post
Share on other sites

Не смог пока разобраться с такой проблемой.

Есть реализация данной библиотеки на SDC, в контроллере зашита программка как в демке от автора FatFs для общения с контроллером через терминалку.

Всё работает отлично, кроме русских букв в именах файлов.

 

Проблема состоит из двух частей:

1) Если создать файл с русскими буквами в имени средствами Windows, то при чтении директории через терминалку, буквы отображаются "закорючками".

2) Если то же самое сделать средствами контроллера из терминалки и прочитать директорию на компе под Windows, то эти имена вообще не воспринимаются системой (потом с этими файлами ничего не сделать - ругается на недопустимые символы).

 

Длинные имена отображаются как положено и с русскими буквами

 

Кодовая страница в настройках FatFs установлена 1251 (пробовал и 866 - при создании файла прога виснет).

Смотрел на реализацию функции get_fileinfo(), там при выдаче имени файла перекодировок не происходит.

В функции create_name() используется табличка соответствующая.

 

если по проблеме 2 еще можно грешить на то, что японец не верно построил перекодировку, то по 1-й вообще неясно...

 

Кто, что скажет?

Edited by Арк К

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.

Sign in to follow this