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

 
 
> Покритикуйте плз. задумку
Paramedic
сообщение Mar 4 2011, 18:09
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 181
Регистрация: 15-01-07
Пользователь №: 24 436



Есть устройство записи звука, пишет на NAND флэш поток аудио без стандартных файловых систем, менеджмент файлов самописный, оптимизированный по скорости.
Хочется сделать ридер данных с устройства который бы подключался к USB и напрямую к выводам NAND и на скорости близкой к скорости работы NAND мог читать и писать файлы, прикидываясь съемным носителем и звуковые файлы были доступны через проводник винды или другой оси в виде wav.
Для реализации планируется взять какой-нить быстрый проц типа LPC3130 с аппаратным интерфейсом NAND флэш и HiSpeed USB.
Есть какие-то засады в такой реализации? Особенно беспокоит возможность реализации подмены нестандартного потока аудио в стандартный wav через MSD.
Покритикуйте плз. Заранее спасибо.
Go to the top of the page
 
+Quote Post
2 страниц V  < 1 2  
Start new topic
Ответов (15 - 28)
Paramedic
сообщение Mar 5 2011, 17:25
Сообщение #16


Частый гость
**

Группа: Свой
Сообщений: 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 не всегда можно понять по запросу хоста служебный блок файловой системы он запрашивает или звуковые данные...
Go to the top of the page
 
+Quote Post
akimych
сообщение Mar 5 2011, 17:37
Сообщение #17


Участник
*

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



Вообще говоря эмуляция FAT-а на чтение не должна быть слишком сложной, тут как раз понятно, что запрашивает хост. Мы же ему сами выдаем бутсектор и т.п, так что по каким адресам что расположено знаем. А вот с записью мне как-то не очень понятно, как определять заранее, к какому файлу относится записываемый блок. Я правда не очень понял для чего в диктофон что-то записывать.

FAT сама по себе достаточно простая файловая система, каких-то значительных накладных расходов она не даст. А какую-то фс делать все равно придется, раз уж речь идет о файлах.
Коррекция ошибок при использовании нанд флеш нужна в любом случае и это уровень ниже файловой системы. Проблема выработки для диктофона тоже не должна стоят очень остро, т.к. в нем запись ведется только последовательно в конец файла, т.е. наиболее благоприятный для флеш вариант.
Go to the top of the page
 
+Quote Post
codier
сообщение Mar 5 2011, 18:16
Сообщение #18


Участник
*

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



Цитата(Paramedic @ Mar 5 2011, 20:25) *
Данные выровнены по страницам флэш, а размер страницы кратен стандарному сектору в 512 байт - с этим проблем нет. Я так понимаю что в случае с MSD не всегда можно понять по запросу хоста служебный блок файловой системы он запрашивает или звуковые данные...


Почему же не понятно? Структура FAT фиксированная. Всё что вне Data Area - служебный блок. Проверка только 1 - на адрес начала данных во 2-ом кластере в FAT. Если адрес не совпадает, то идём в "медленный" код и генерим системные блоки.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Mar 5 2011, 18:50
Сообщение #19


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



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


Хотелось бы узнать - какие чипы nand используются ?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 5 2011, 18:55
Сообщение #20


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 легко ляжет.


Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 5 2011, 19:03
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
codier
сообщение Mar 5 2011, 19:54
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 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 байтам проблема - куда пихать избыточность? Как вообще решают такие проблемы?
Go to the top of the page
 
+Quote Post
akimych
сообщение Mar 5 2011, 23:23
Сообщение #23


Участник
*

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



Какие чипы используются не было озвучено, но в тех же самсунговских K9F страница 512 + 16 байт (или 2к+64 в бОльшего объема).
Go to the top of the page
 
+Quote Post
Paramedic
сообщение Mar 6 2011, 14:16
Сообщение #24


Частый гость
**

Группа: Свой
Сообщений: 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 легко ляжет.

Интересная альтернатива , надо подумать. А этот протокол работоспособен на осях отличных от винды?
Go to the top of the page
 
+Quote Post
sasamy
сообщение Mar 6 2011, 15:18
Сообщение #25


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(Paramedic @ Mar 6 2011, 17:16) *
Samsung


Ну вот смотрю у самсунга nand даже малой емкости имеют типичные токи на чтение/запись/стирание 8-10 мА, а у вас 1,2 мА вместе с контроллером ? sm.gif

Сообщение отредактировал sasamy - Mar 6 2011, 15:19
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 6 2011, 15:42
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sasamy @ Mar 6 2011, 18:18) *
Ну вот смотрю у самсунга nand даже малой емкости имеют типичные токи на чтение/запись/стирание 8-10 мА, а у вас 1,2 мА вместе с контроллером ? sm.gif

Так не все же время она читается/пишется/стирается.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Mar 6 2011, 16:02
Сообщение #27


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(aaarrr @ Mar 6 2011, 18:42) *
Так не все же время она читается/пишется/стирается.


Я понимаю что Вы это понимаете, но вот ТС пишет

Цитата
SD карта решает проблему, у неё встроенный контроллер ECC и прочие прелести - но жрёт сильно больше голой NAND. Сразу писать в ФАТ для нашего случая это слишком большие накладные расходы , избыточное решение.


В то время как 1 Гбайт e-mmc имеет для аналогичных операций токи 30 мА, при этом автоматически уходит в режим низкого потребления, а запись на FAT от их костыльного метода будет отличаться только тем что нужно вписать последовательность секторов которую они точно также где-то хранят в таблицу fat.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 6 2011, 16:12
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



В случае SD/(e)MMC и прочих стандартных носителей производитель заботится о неком разумном балансе между производительностью и потреблением. Поэтому нисколько не удивляет, что заточенное на микропотребление и низкую производительность решение (как у ТС) в конечном итоге заметно выигрывает.
Go to the top of the page
 
+Quote Post
Paramedic
сообщение Mar 6 2011, 17:21
Сообщение #29


Частый гость
**

Группа: Свой
Сообщений: 181
Регистрация: 15-01-07
Пользователь №: 24 436



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

Да, к тому же SD карты по потреблению сильно различаются...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 01:09
Рейтинг@Mail.ru


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