|
Покритикуйте плз. задумку |
|
|
2 страниц
< 1 2
|
 |
Ответов
(15 - 28)
|
Mar 5 2011, 17:25
|
Частый гость
 
Группа: Свой
Сообщений: 181
Регистрация: 15-01-07
Пользователь №: 24 436

|
Цитата(codier @ Mar 5 2011, 19:41)  AlexandrY написал варианты. NAND - это просто носитель, ничто не запрещает на нём реализовать секторы, а на них FAT, да и любую файловую систему. Я с NAND не работал, про проблему выроботки ресурса на нём деталей не знаю, но выше уже знающие люди написали. Собственно, любой формат хранения данных, если они каким-то образом идентифицируются - это файловая система в её глобальном понимании, так что любой свой "велосипед" ничем не хуже, разве что делать надо. Проблема выработки есть. Более того есть проблема необходимости использовать ECC для обхода битых битов. Чем дальше растёт плотность упаковки данных, тем проблема более актуальна. SD карта решает проблему, у неё встроенный контроллер ECC и прочие прелести - но жрёт сильно больше голой NAND. Сразу писать в ФАТ для нашего случая это слишком большие накладные расходы , избыточное решение. Собственно уже писал, что характеристика диктофонов в плане потребления экстремальные, и каждый "лишний" такт заметен. Цитата(codier @ Mar 5 2011, 19:41)  Насчёт эмуляции FAT (говорю в приложении к FAT16) идеи такие: 1. Все секторы, что не данные генерить "на лету" 2. MBR и Bootsector можно хранить во флеше контроллера 3. Допущение: Запись данных осуществляется непрерывным блоком (как на ленту) -> Если выровнять блоки по размеру кластера (64-128 кбайт для больших флешек), то больших проблем с генерацией "на лету" собственно таблицы FAT быть не должно. 4. Небольшое торможение при генерации на лету служебных секторов не смущает, т.к. делается Host системой один раз. Если блоки не выравнивать, то тоже можно, но геморней Пните меня где я ошибаюсь.. Данные выровнены по страницам флэш, а размер страницы кратен стандарному сектору в 512 байт - с этим проблем нет. Я так понимаю что в случае с MSD не всегда можно понять по запросу хоста служебный блок файловой системы он запрашивает или звуковые данные...
|
|
|
|
|
Mar 5 2011, 17:37
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 7-01-11
Пользователь №: 62 073

|
Вообще говоря эмуляция FAT-а на чтение не должна быть слишком сложной, тут как раз понятно, что запрашивает хост. Мы же ему сами выдаем бутсектор и т.п, так что по каким адресам что расположено знаем. А вот с записью мне как-то не очень понятно, как определять заранее, к какому файлу относится записываемый блок. Я правда не очень понял для чего в диктофон что-то записывать.
FAT сама по себе достаточно простая файловая система, каких-то значительных накладных расходов она не даст. А какую-то фс делать все равно придется, раз уж речь идет о файлах. Коррекция ошибок при использовании нанд флеш нужна в любом случае и это уровень ниже файловой системы. Проблема выработки для диктофона тоже не должна стоят очень остро, т.к. в нем запись ведется только последовательно в конец файла, т.е. наиболее благоприятный для флеш вариант.
|
|
|
|
|
Mar 5 2011, 18:16
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 21-01-05
Пользователь №: 2 113

|
Цитата(Paramedic @ Mar 5 2011, 20:25)  Данные выровнены по страницам флэш, а размер страницы кратен стандарному сектору в 512 байт - с этим проблем нет. Я так понимаю что в случае с MSD не всегда можно понять по запросу хоста служебный блок файловой системы он запрашивает или звуковые данные... Почему же не понятно? Структура FAT фиксированная. Всё что вне Data Area - служебный блок. Проверка только 1 - на адрес начала данных во 2-ом кластере в FAT. Если адрес не совпадает, то идём в "медленный" код и генерим системные блоки.
|
|
|
|
|
Mar 5 2011, 18:50
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(Paramedic @ Mar 5 2011, 11:22)  А так как объёмы памяти большие, надо иметь возможность быстро сливать данные, вот поэтому и идём к такому решению. Я не знаю как получить в режиме записи 8кГц 16 бит 1,6мА потребление и в режиме ожидания (работают часы, таймеры, опрос кнопок и ещё по мелочи) 10-12мкА на решении ARM+ОС  Хотелось бы узнать - какие чипы nand используются ?
|
|
|
|
|
Mar 5 2011, 18:55
|

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

|
Цитата(codier @ Mar 5 2011, 20:16)  Почему же не понятно? Структура FAT фиксированная. Всё что вне Data Area - служебный блок. Проверка только 1 - на адрес начала данных во 2-ом кластере в FAT. Если адрес не совпадает, то идём в "медленный" код и генерим системные блоки. Я бы за файловую Windows так смело не отвечал бы. Во первых чтобы там все четко было со взаимным пониманием винды и дивайса надо чтобы винды сами этот Mass storage отформатировали. Понятно что при таком сценарии сразу амбец. С другой стороны все эти опенсорсные FAT-ы страдают кой какой кривизной. Скажем отформатированная в Keil FS может быть и не понята виндами. Я на такое спотыкался. Не забываем что сорсы FAT в винде закрыты и там проприетарное решение. У них есть и extFAT, работает на тот же Mass Storage и распространена на мобильных дивайсах. Еще проблемка что тут нельзя повлиять на поведение виндов, а вдруг им захочется подправить MBR, или слегка подефрагментировать? Сами опенсорсные иммитаторы SCSI подмножества команд для Mass Storage страдают неполнотой и неточностью соблюдения спецификации. Я бы для задачи предложил использовать не Mass Storage, а MTP (Media Transfer Protocol) протокол. Для виндов это стандарт и индифферентен к файловым системам. Протокол не сложный, на указанный ARM легко ляжет.
|
|
|
|
|
Mar 5 2011, 19:03
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(AlexandrY @ Mar 5 2011, 21:55)  Во первых чтобы там все четко было со взаимным пониманием винды и дивайса надо чтобы винды сами этот Mass storage отформатировали. Достаточно сделать все в соответствии со спецификацией. Цитата(AlexandrY @ Mar 5 2011, 21:55)  С другой стороны все эти опенсорсные FAT-ы страдают кой какой кривизной. Скажем отформатированная в Keil FS может быть и не понята виндами. Я на такое спотыкался. "Опенсорсные FAT-ы" решают совсем другую задачу. И вовсе необязательно их кривизну копировать. Цитата(AlexandrY @ Mar 5 2011, 21:55)  Еще проблемка что тут нельзя повлиять на поведение виндов, а вдруг им захочется подправить MBR, или слегка подефрагментировать? Нет такой проблемки. Во-первых, винда не дефрагментирует просто так сменные носители. Во-вторых, можно просто сказать, что диск Read Only.
|
|
|
|
|
Mar 5 2011, 19:54
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 21-01-05
Пользователь №: 2 113

|
Цитата(AlexandrY @ Mar 5 2011, 21:55)  Я бы за файловую Windows так смело не отвечал бы. Во первых чтобы там все четко было со взаимным пониманием винды и дивайса надо чтобы винды сами этот Mass storage отформатировали. Понятно что при таком сценарии сразу амбец.
С другой стороны все эти опенсорсные FAT-ы страдают кой какой кривизной. Скажем отформатированная в Keil FS может быть и не понята виндами. Я на такое спотыкался. Не забываем что сорсы FAT в винде закрыты и там проприетарное решение. У них есть и extFAT, работает на тот же Mass Storage и распространена на мобильных дивайсах. Я конечно не претендую, но из своего опыта могу вот что сказать. Самописная реализация FAT16 с доступом на базе атмелского USB+MSD (может с правками, не помню) работает и под винды и под линукс абсолютно нормально на разных машинах. Форматирование делал своё и проблем не замечал. Могу точно скзать, что винда кеширует содержимое всей FAT таблицы и больше к ней не обращается, если только не операции записи - проверял. FAT может и проприетарный, но простой и настолько вылизанный и описанный, что вроде как проблем с ним быть не может. Я не беру в расчёт длинные имена файлов и русский язык. Может просто не сталкивался... В данной задаче надо делать readonly девайс, но вижу одну проблемку - как удалять данные.. если только кнопкой или через интерфейс на устройстве, но думается что там нет экрана. Кстати, насчёт ресурса флеша подумал. Раз запись идёт кольцом, то наверное каких-то особых мер придумывать не надо. А вот с сектором кратным 512 байтам проблема - куда пихать избыточность? Как вообще решают такие проблемы?
|
|
|
|
|
Mar 5 2011, 23:23
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 7-01-11
Пользователь №: 62 073

|
Какие чипы используются не было озвучено, но в тех же самсунговских K9F страница 512 + 16 байт (или 2к+64 в бОльшего объема).
|
|
|
|
|
Mar 6 2011, 14:16
|
Частый гость
 
Группа: Свой
Сообщений: 181
Регистрация: 15-01-07
Пользователь №: 24 436

|
Цитата(sasamy @ Mar 5 2011, 21:50)  Хотелось бы узнать - какие чипы nand используются ? Samsung Цитата(akimych @ Mar 6 2011, 02:23)  Какие чипы используются не было озвучено, но в тех же самсунговских K9F страница 512 + 16 байт (или 2к+64 в бОльшего объема). Уже есть и 4к и 8к страницы... Дальше наверное ещё больше будут. Цитата(AlexandrY @ Mar 5 2011, 21:55)  Я бы для задачи предложил использовать не Mass Storage, а MTP (Media Transfer Protocol) протокол. Для виндов это стандарт и индифферентен к файловым системам. Протокол не сложный, на указанный ARM легко ляжет. Интересная альтернатива , надо подумать. А этот протокол работоспособен на осях отличных от винды?
|
|
|
|
|
Mar 6 2011, 16:02
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(aaarrr @ Mar 6 2011, 18:42)  Так не все же время она читается/пишется/стирается. Я понимаю что Вы это понимаете, но вот ТС пишет Цитата SD карта решает проблему, у неё встроенный контроллер ECC и прочие прелести - но жрёт сильно больше голой NAND. Сразу писать в ФАТ для нашего случая это слишком большие накладные расходы , избыточное решение. В то время как 1 Гбайт e-mmc имеет для аналогичных операций токи 30 мА, при этом автоматически уходит в режим низкого потребления, а запись на FAT от их костыльного метода будет отличаться только тем что нужно вписать последовательность секторов которую они точно также где-то хранят в таблицу fat.
|
|
|
|
|
Mar 6 2011, 17:21
|
Частый гость
 
Группа: Свой
Сообщений: 181
Регистрация: 15-01-07
Пользователь №: 24 436

|
Цитата(aaarrr @ Mar 6 2011, 19:12)  В случае SD/(e)MMC и прочих стандартных носителей производитель заботится о неком разумном балансе между производительностью и потреблением. Поэтому нисколько не удивляет, что заточенное на микропотребление и низкую производительность решение (как у ТС) в конечном итоге заметно выигрывает. Да, к тому же SD карты по потреблению сильно различаются...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|