реклама на сайте
подробности

 
 
> Надежность FAT
Darti
сообщение Dec 12 2015, 16:32
Сообщение #1


Участник
*

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



Всегда использовал FAT от чена, еще во времена avr, да и сейчас на stm32. Ответственных задач не было, поэтому пристального внимания не уделял, да вроде все работало. Часто видел темы на форуме, мол либа кривая, не работает то или это, но как то лично с проблемами не сталкивался. Сейчас попался заказчик, который стал в позу, мол юзать либу не православно, при этом в винде карта памяти должна обнаруживаться как обычный съемный диск, без дополнительного софта, т.е. фат эмулировать нужно.

В качестве аргументов против: энергопотребление с либой выше, чем посекторное. Но следующий аргумент как то меня поверг в шок. Мол 100 лет назад он проводил тесты, которые показали, что если писать в один и тот же сектор, то на ~60 раз сектор "портится" и контроллер карты памяти начинает переносить данные, все это проявляется резким снижением скорости записи. Для меня этот пункт странный, но пока мне возразить нечем. В качестве предложения, заполнять карту равномерно, стирать только когда целиком заполнится.

Вроде бы и не проблема можно писать посекторно, но когда почитал по верхам про то как устроен FAT32, понял что это будет проблемой. Дело в том, что у меня файлы могут прилетать какие угодно, абсолютно любого размера. Корневой каталог в fat32 не фиксированный, нужно будет вычислять его, чтобы не записать в системные файлы, все фукции - создание/удаление директорий, запись/чтение и создание/удаление файлов мне нужны. Если я правильно понимаю, то по сути то что я напишу будет той же либой чена.

Собственно пока жду железо, чтобы проверить теорию плохого сектора, хотелось бы послушать мнение опытных в этом деле людей. Я заглядывал в исходники fat fs и ничего лишнего или слишком неумелого не увидел.

Вопросы: Я не предстваляю как можно будет сэкономить энергию, если буду делать тоже самое, что и библиотека, или даже не так - что можно делать иначе?. На чем основаны доводы о кривости этой библиотеки? Точнее даже ее ненадежности.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
controller_m30
сообщение Dec 13 2015, 15:12
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 24-02-09
Пользователь №: 45 309



Цитата(Darti @ Dec 12 2015, 19:32) *
Мол 100 лет назад он проводил тесты, которые показали, что если писать в один и тот же сектор, то на ~60 раз сектор "портится" и контроллер карты памяти начинает переносить данные, все это проявляется резким снижением скорости записи. Для меня этот пункт странный, но пока мне возразить нечем. В качестве предложения, заполнять карту равномерно, стирать только когда целиком заполнится.

Могу привести пример Windiws XP, как она работает с картами и обычными флешками на уровне физических секторов.

Если к компу на котором стоит XP подключить флешку или картридер с SD картой, и больше ничего не предпринимать - ни открывать файлы, ни удалять их, ни даже не шевелить мышкой - что будет происходить с картой:
1. Винда как положено считает MBR, BS, FAT1, FAT2, и корневой каталог.
2. С целью кэширования считывается тело первого файла, заголовок которого есть в корневом каталоге.
3. Сектор корневого каталога, в котором находится заголовок только что кэшированного файла - переписывается, с изменённым в заголовке полем "дата последнего открытия" (файл на самом деле никто не открывал).
4. Вычитывается тело следующего файла, и снова переписывается сектор корневого каталога, чтобы поменять в очередном заголовке поле "дата последнего открытия". И так делается для всех содержащихся там файлов.

Если в корневом каталоге 100 файлов, то винда 100 раз перепишет сектора корневого каталога только при первом подключении флешки (или SD карты через картридер) к компу. Если флешку выдернуть и через секунду подключить снова, то и винда снова прокэширует все 100 файлов, и снова 100 раз перепишет инфу в секторах корневого каталога.

В один 512 байтный сектор помещается 16 заголовков по 32 байта каждый. Уже 4 подключений картридера или флешки к компу достаточно, чтоб выбрать ресурс в 60 перезаписей сектора (если таковой имеется).
Так что, даже если информация насчёт переноса секторов действительная, то на неё не стоит обращать внимание, т.к. в таком случае все флешки и все SD карты после 4 подключений к Windows ХР - уже давным-давно работают в режиме повышенного потребления, и с перенесёнными секторами корневого каталога laughing.gif

Сообщение отредактировал controller_m30 - Dec 13 2015, 15:27
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Dec 13 2015, 17:57
Сообщение #3


Ally
******

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



Цитата(controller_m30 @ Dec 13 2015, 17:12) *
все флешки и все SD карты после 4 подключений к Windows ХР - уже давным-давно работают в режиме повышенного потребления, и с перенесёнными секторами корневого каталога laughing.gif


Да у вас просто вирус поселился в Windows XP. biggrin.gif
И давайте уже хотя бы про Windows 7, а то XP теперь днем с огнем не найти.

Но в любом случае ваша байка бредовая.
И легко проверяется.
Поставьте Bus Hound и легко увидите что на самом деле читается и пишется в Mass Storage при фтыкании флешки.
Go to the top of the page
 
+Quote Post
controller_m30
сообщение Dec 13 2015, 19:39
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 24-02-09
Пользователь №: 45 309



Цитата(AlexandrY @ Dec 13 2015, 20:57) *
Но в любом случае ваша байка бредовая.
И легко проверяется.
Поставьте Bus Hound и легко увидите что на самом деле читается и пишется в Mass Storage при фтыкании флешки.

Именно Bus Hound-ом это и обнаружено.
Делал USB-регистратор температуры на контроллере, который программно имитирует Mass Storage отформатированную под FAT16, и выдающий данные в виде стандартных файлов *.TXT, *.BIN.
Свойства всех файлов выставлены как read_only, но т.к. само устройство в SCSI-дескрипторах указано с возможностью записи, то винда в заголовках файлов меняет дату последнего открытия на текущую. Обращаю внимание: не дату создания файла, и не дату модификации, а дату последнего открытия файла.

Прогу для контроллера писал на асме, никакими библиотеками не пользовался, и нюансы обмена данными с компом изучал детально - насколько возможно.
Bus Hound-ом просматривал обмен компа с стандартными флешками (3 штуки разных фирм), и с картридерами SD карт (тоже 3 разных видов). И на том компе где велась разработка, и на компах целевого предприятия (мало ли чего) - этот нюанс с кэшированием и изменением поля "дата последнего открытия" был одинаковым laughing.gif
Цитата(AlexandrY @ Dec 13 2015, 20:57) *
Да у вас просто вирус поселился в Windows XP. biggrin.gif
И давайте уже хотя бы про Windows 7, а то XP теперь днем с огнем не найти.

Проверено и на 7-ке, и на XP. На нескольких разных компьютерах с разной производительностью и комплектацией. Но разрабатывалось под XP, т.к. на целевом предприятии использовали её.
Это не вирус, а процесс кэширования содержимого флешки для быстрого доступа. И меняется только одно поле "дата последнего открытия". Больше ничего.

Может файлы вычитывали антивирусники, и потому винда меняла их заголовки - ведь файлы действительно были считаны и открыты.
Опять же, антивирусники были разные (НОД32, Касперский, Аваст, ещё что-то), но этот процесс везде был одинаковый. И кроме того при открытии файлов с помощью клика мышкой - Bus Hound однозначно показывал что с устройства они не читаются, обращений не было. Т.е. файлы помещались в кэш Windows.
Без антивирусников я не пробовал - может в этом случае действительно не будет ни кэширования, ни модификации заголовков. Может быть, но кто захочет это проверить? rolleyes.gif

Сообщение отредактировал controller_m30 - Dec 13 2015, 19:53
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
|- - 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
- - _3m   Цитата(Darti @ Dec 12 2015, 19:32) Сейчас...   Dec 13 2015, 21:09
|- - AlexandrY   Цитата(_3m @ Dec 13 2015, 23:09) Про энер...   Dec 14 2015, 05:43
|- - _3m   Цитата(AlexandrY @ Dec 14 2015, 08:43) Та...   Dec 14 2015, 06:48
|- - AlexandrY   Цитата(_3m @ Dec 14 2015, 08:48) Нереальн...   Dec 14 2015, 06:56
|- - mantech   Цитата(_3m @ Dec 14 2015, 09:48) Нереальн...   Dec 14 2015, 07:52
|- - aaarrr   Цитата(mantech @ Dec 14 2015, 10:52) Уж п...   Dec 14 2015, 09:44
- - 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 23:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01593 секунд с 7
ELECTRONIX ©2004-2016