|
Надежность FAT |
|
|
|
Dec 12 2015, 16:32
|
Участник

Группа: Участник
Сообщений: 46
Регистрация: 17-09-14
Из: Спб
Пользователь №: 82 840

|
Всегда использовал FAT от чена, еще во времена avr, да и сейчас на stm32. Ответственных задач не было, поэтому пристального внимания не уделял, да вроде все работало. Часто видел темы на форуме, мол либа кривая, не работает то или это, но как то лично с проблемами не сталкивался. Сейчас попался заказчик, который стал в позу, мол юзать либу не православно, при этом в винде карта памяти должна обнаруживаться как обычный съемный диск, без дополнительного софта, т.е. фат эмулировать нужно.
В качестве аргументов против: энергопотребление с либой выше, чем посекторное. Но следующий аргумент как то меня поверг в шок. Мол 100 лет назад он проводил тесты, которые показали, что если писать в один и тот же сектор, то на ~60 раз сектор "портится" и контроллер карты памяти начинает переносить данные, все это проявляется резким снижением скорости записи. Для меня этот пункт странный, но пока мне возразить нечем. В качестве предложения, заполнять карту равномерно, стирать только когда целиком заполнится.
Вроде бы и не проблема можно писать посекторно, но когда почитал по верхам про то как устроен FAT32, понял что это будет проблемой. Дело в том, что у меня файлы могут прилетать какие угодно, абсолютно любого размера. Корневой каталог в fat32 не фиксированный, нужно будет вычислять его, чтобы не записать в системные файлы, все фукции - создание/удаление директорий, запись/чтение и создание/удаление файлов мне нужны. Если я правильно понимаю, то по сути то что я напишу будет той же либой чена.
Собственно пока жду железо, чтобы проверить теорию плохого сектора, хотелось бы послушать мнение опытных в этом деле людей. Я заглядывал в исходники fat fs и ничего лишнего или слишком неумелого не увидел.
Вопросы: Я не предстваляю как можно будет сэкономить энергию, если буду делать тоже самое, что и библиотека, или даже не так - что можно делать иначе?. На чем основаны доводы о кривости этой библиотеки? Точнее даже ее ненадежности.
|
|
|
|
|
 |
Ответов
|
Dec 13 2015, 21:09
|
Знающий
   
Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960

|
Цитата(Darti @ Dec 12 2015, 19:32)  Сейчас попался заказчик, который стал в позу, мол юзать либу не православно, при этом в винде карта памяти должна обнаруживаться как обычный съемный диск, без дополнительного софта, т.е. фат эмулировать нужно. В качестве аргументов против: энергопотребление с либой выше, чем посекторное. Про энергопотребление бред. Цитата Но следующий аргумент как то меня поверг в шок. Мол 100 лет назад он проводил тесты, которые показали, что если писать в один и тот же сектор, то на ~60 раз сектор "портится" и контроллер карты памяти начинает переносить данные, все это проявляется резким снижением скорости записи. Для меня этот пункт странный, но пока мне возразить нечем. В качестве предложения, заполнять карту равномерно, стирать только когда целиком заполнится. Информация заказчика верная. При перезаписи в один и тот же сектор после NNN перезаписей однократно в десятки раз возрастает время записи. Предположительно в этот момент контроллер карты обнаруживает несовпадение записанной информации из-за износа флэш и выполняет автоматическую замену сектора на резервный. Если продолжать перезапись того же сектора частота явления увеличивается вплоть до нереалных тормозов (в итоге "убитая" карта виснет при попытке записи). Перед заменой замечен рост времени чтения сектора. В точности данный эффект прогнозировать невозможно так как нет информаии об алгоритме работы контроллера карты. Проверял лично специальными тестами на "убой" сектора и карты. Я проводил тесты давно тогда еще была только slc флэш. Современные карты все на mlc флэш для них NNN превратятся в NN раз.
|
|
|
|
|
Dec 14 2015, 05:43
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(_3m @ Dec 13 2015, 23:09)  Про энергопотребление бред.
Информация заказчика верная. При перезаписи в один и тот же сектор после NNN перезаписей однократно в десятки раз возрастает время записи. Предположительно в этот момент контроллер карты обнаруживает несовпадение записанной информации из-за износа флэш и выполняет автоматическую замену сектора на резервный. Если продолжать перезапись того же сектора частота явления увеличивается вплоть до нереалных тормозов (в итоге "убитая" карта виснет при попытке записи). Перед заменой замечен рост времени чтения сектора. В точности данный эффект прогнозировать невозможно так как нет информаии об алгоритме работы контроллера карты. Проверял лично специальными тестами на "убой" сектора и карты. Я проводил тесты давно тогда еще была только slc флэш. Современные карты все на mlc флэш для них NNN превратятся в NN раз. Так запоминать надо было в цифрах что такое "увеличивается вплоть до нереальных тормозов" с графиками и гистограммами, а так просто сотрясение воздуха и очередной миф. А пока рекомендация такая: поблочным чтением идентифицировать на карте размер стираемого сектора (allocation unit, AU). Определить зону с алгоритмом блочного перераспределения памяти. Следить чтобы FAT оказался точно в этой зоне. Также проконтролировать чтобы границы кластеров совпадали с границами AU. А лучше взять файловую от Micrium, там есть специальное форматирование для SD карт.
|
|
|
|
|
Dec 14 2015, 06:48
|
Знающий
   
Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960

|
Цитата(AlexandrY @ Dec 14 2015, 08:43)  Так запоминать надо было в цифрах что такое "увеличивается вплоть до нереальных тормозов" с графиками и гистограммами, а так просто сотрясение воздуха и очередной миф. Мистер AlexandrY вы мне не работодатель чтобы требовать графики и гистограммы. Не нравится информация - игнорируйте. На работе после исследований поведения карты на "убой" были цифры и графики из которых были сделаны надлежащие выводы (исследования проводились чтобы определить максимальное время записи). Нереальные тормоза это пытаемся записать - получаем зависание карты, при этом чтение работает.
|
|
|
|
|
Dec 14 2015, 09:44
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(mantech @ Dec 14 2015, 10:52)  Уж поверьте мне, работаю именно с сд-картами несколько лет, на 8 разных контроллерах и платформах, с картами до 2гб и 8-16гиг, типов 10 тестировал на чтение и запись, НО чтоб такое... Ни разу не было! Что-то у вас там не того с программой или интерфейсом МК. Эх, был у меня волшебный китайский кард-ридер, после которого карты (разных производителей, что интересно) в какой-то момент начинали себя вести именно таким образом - нормальное чтение и жуткие тормоза при записи. Что он с ними делал - ума не приложу. Нормальным износом добиться такого никогда не получалось.
|
|
|
|
Сообщений в этой теме
Darti Надежность FAT Dec 12 2015, 16:32 mantech Цитата(Darti @ Dec 12 2015, 19:32) Часто ... Dec 12 2015, 17:33 aaarrr Цитата(Darti @ Dec 12 2015, 19:32) Мол 10... Dec 12 2015, 17:36 mantech Цитата(aaarrr @ Dec 12 2015, 20:36) что е... Dec 12 2015, 18:09 Непомнящий Евгений Ну если заказчик оплатит вам написание и отладку с... Dec 13 2015, 12:29 AlexandrY Цитата(Darti @ Dec 12 2015, 18:32) Вопрос... Dec 13 2015, 13:40 controller_m30 Цитата(Darti @ Dec 12 2015, 19:32) Мол 10... Dec 13 2015, 15:12 AlexandrY Цитата(controller_m30 @ Dec 13 2015, 17:1... Dec 13 2015, 17:57  controller_m30 Цитата(AlexandrY @ Dec 13 2015, 20:57) Но... Dec 13 2015, 19:39   AlexandrY Цитата(controller_m30 @ Dec 13 2015, 21:3... Dec 13 2015, 19:53    controller_m30 Цитата(AlexandrY @ Dec 13 2015, 22:53) Зн... Dec 13 2015, 20:20 romas2010 Цитата(Darti @ Dec 12 2015, 19:32) Всегда... Dec 13 2015, 19:50   AlexandrY Цитата(_3m @ Dec 14 2015, 08:48) Нереальн... Dec 14 2015, 06:56 Genadi Zawidowski Цитатаstatic Wear Leveling.
Это можно узнать по ка... Dec 14 2015, 09:31 AlexandrY Цитата(Genadi Zawidowski @ Dec 14 2015, 11... Dec 14 2015, 10:08  Genadi Zawidowski Так скажите где описано. Dec 14 2015, 11:06   AlexandrY Цитата(Genadi Zawidowski @ Dec 14 2015, 13... Dec 14 2015, 13:44    jcxz Прочитал исходное сообщение и не понял - откуда от... Dec 15 2015, 12:05     mantech Цитата(jcxz @ Dec 15 2015, 15:05) может л... Dec 15 2015, 14:11      jcxz Цитата(mantech @ Dec 15 2015, 20:11) Ну х... Dec 15 2015, 18:01       aaarrr Цитата(jcxz @ Dec 15 2015, 21:01) Конечно... Dec 15 2015, 18:08        jcxz Цитата(aaarrr @ Dec 16 2015, 00:08) В пер... Dec 15 2015, 18:14         aaarrr Цитата(jcxz @ Dec 15 2015, 21:14) Есть та... Dec 15 2015, 18:43     aaarrr Цитата(jcxz @ Dec 15 2015, 15:05) Прочита... Dec 15 2015, 14:32
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|