Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Nand Flash+c51
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
Ankoc
Имеем: 1.NandFlash от Samsung (напр. K9F1208)
2. ADuC841 от AD (51МК с АЦП )
Задача: кидать данные с АЦП во флеш при макимальной f дискр. АЦП.
Вопрос: как реализовать интерфейс м/у ними, дабы успевать обрабатывать данные с АЦП, при этом мк еще и несколько загружен другими задачами ?
примеры реализации, исходники особенно приветствуется smile.gif
Ankoc
Цитата(Ankoc @ May 6 2008, 16:14) *
Имеем: 1.NandFlash от Samsung (напр. K9F1208)
2. ADuC841 от AD (51МК с АЦП )
Задача: кидать данные с АЦП во флеш при макимальной f дискр. АЦП.
Вопрос: как реализовать интерфейс м/у ними, дабы успевать обрабатывать данные с АЦП, при этом мк еще и несколько загружен другими задачами ?
примеры реализации, исходники особенно приветствуется smile.gif


С интерфейсом более менее разобрался, но теперь возник другой вопрос:
Нужно ли для данной задачи организовывать файловую систему?
aaarrr
Цитата(Ankoc @ May 7 2008, 14:11) *
Нужно ли для данной задачи организовывать файловую систему?

А зачем? Другое дело, что у NAND не гарантируется целостность данных - вот это проблема, ибо ECC 51-й контроллер считать будет очень медленно.
r_dot
Цитата(Ankoc @ May 7 2008, 14:11) *
... Нужно ли для данной задачи организовывать файловую систему?


Собственно файловую систему - не обязательно. Чтобы полностью использовать ресурс 100000 циклов стирания/записи ячейки, можно просто записывать "по кругу", пропуская "BAD-блоки". Но всё равно ресурс устройства получится небольшим. Для данного применения - записи сигнала в реальном времени - флешки не очень подходят.
И ещё - при рассчёте темпа оцифровки нужно учитывать время на стирание блоков (2-5 мс на блок) - то есть считать частоту взятия сэмплов исходя из средней скорости записи во флешку + запас на "фоновые задачи" и предусмотреть буфер достаточного размера на время стирания.
А что ещё надо хорошо продумать - это как, куда и в каком темпе будут считываться данные. Как определять начало и конец записи. А если чтение надо делать одновременно с записью... 07.gif
Ankoc
Цитата
Для данного применения - записи сигнала в реальном времени - флешки не очень подходят.

В таком случае куда тогда писать большие объёмы инф-ции с требуемой скоростью? анализ показал, что альтернативы флешу нет. Или я ошибаюсь?
Цитата
И ещё - при рассчёте темпа оцифровки нужно учитывать время на стирание блоков (2-5 мс на блок)

а вот это не совсем понятно. по своей сути флешка будет "одноразовой", т.е. записали-считали потом на комп и выкинули
Цитата
ибо ECC 51-й контроллер считать будет очень медленно.

здесь уже перешел на более производительный МК Silabs С8051F12X, думаю проблем быть не должно
aaarrr
Цитата(Ankoc @ May 9 2008, 11:53) *
В таком случае куда тогда писать большие объёмы инф-ции с требуемой скоростью? анализ показал, что альтернативы флешу нет. Или я ошибаюсь?

Давайте уточним: какой именно объем информации с какой именно скоростью нужно писать?
В любом случае потребуется приличное количество RAM для буферизации.

Цитата(Ankoc @ May 9 2008, 11:53) *
а вот это не совсем понятно. по своей сути флешка будет "одноразовой", т.е. записали-считали потом на комп и выкинули

Тогда можно стереть блоки заранее.

Цитата(Ankoc @ May 9 2008, 11:53) *
здесь уже перешел на более производительный МК Silabs С8051F12X, думаю проблем быть не должно

Более производительный МК не поможет, тут аппаратное ускорение нужно. Или писать только CRC, все же порча не очень вероятна.
r_dot
Цитата(Ankoc @ May 9 2008, 11:53) *
В таком случае куда тогда писать большие объёмы инф-ции с требуемой скоростью? анализ показал, что альтернативы флешу нет. Или я ошибаюсь?


Если непрерывно записывать со скоростью 100МB/s, гигабайтная флешка вылетит примерно через пару недель. Если по условию задачи это допустимо, то конечно, об альтернативе задумываться не стоит.
Ankoc
Цитата
Давайте уточним: какой именно объем информации с какой именно скоростью нужно писать?В любом случае потребуется приличное количество RAM для буферизации.

пишем со скоростью 1 байт/мкс пока не заполнится флеш.
Цитата
Если непрерывно записывать со скоростью 100МB/s,

неужели такая скорость достижима?

может кто нибудь встречал/сам делал подобные проекты в сети. Киньте ссылочкой ну хотя бы в общих чертах дающую представление о способе решения моей задачи (времени в обрез, и если делать всё с нуля, боюсь будет слишом долго)?
Спасибо всем откликнувшимся!
Linker
Цитата(Ankoc @ May 6 2008, 19:14) *
Имеем: 1.NandFlash от Samsung (напр. K9F1208)
2. ADuC841 от AD (51МК с АЦП )
Задача: кидать данные с АЦП во флеш при макимальной f дискр. АЦП.
Вопрос: как реализовать интерфейс м/у ними, дабы успевать обрабатывать данные с АЦП, при этом мк еще и несколько загружен другими задачами ?
примеры реализации, исходники особенно приветствуется smile.gif

Для обеспечения работы АЦП ADuC841 с максимальной скоростью (2,4мкс) необходимо организовать работу в режиме DMA. При этом идет запись непосредственно во внешнюю память объемом до 16Мбайт. Перед записью данных от АЦП эту память необходимо разметить особым способом. Потом эти данные необходимо переписать во флэш. В режиме DMA ADuC может выполнять другие операции, но внешняя память будет не доступна, пока не закончится ее заполнение. Следовательно Вы можете использовать максимальную производительность (420Ksps) только кусочно. Тэк шта скорости непрерывной записи 1 байт/мкс на ADuC841 Вы никак не добъетесь.
Ankoc
Цитата
Тэк шта скорости непрерывной записи 1 байт/мкс на ADuC841 Вы никак не добъетесь.

спасибо за ответ но я это уже понял, поэтому и перешел на другой тип МК
r_dot
Цитата(Ankoc @ May 11 2008, 13:52) *
неужели такая скорость достижима?


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


Цитата(Ankoc @ May 11 2008, 13:52) *
... в общих чертах ... представление о способе решения моей задачи ...
пишем со скоростью 1 байт/мкс пока не заполнится флеш.


В задаче не все условия заданы. Если задано только передать в комп данные с АЦП любым способом, то скорость 1 МБ/с вполне вменяема для USB2. Исходя из назначения устройства можно сразу в комп заливать? Тогда АЦП + FIFO + контроллер и всё программирование - на компе. Это быстрее и проще отладить. Да и скорость можно ещё вытянуть.
Ankoc
Цитата
Исходя из назначения устройства можно сразу в комп заливать?

Нет, устройство автономное (в общем случае "черный ящик"), сначала идёт запись в энергонезависимую память, после чего прибор подкл. к компу куда и сливаются данные из флеш для последующей обработки
kst
Тоже интересуюсь подобной тематикой - задача практически аналогичная, только связка ПЛИС + Flash.

Вопрос:
А не существует ли в природе специализированных контроллеров для флеш-чипов или флеш-карт?

Больно уж здорово было бы - поставил, и не паришься...
aaarrr
Цитата(kst @ May 12 2008, 14:48) *
А не существует ли в природе специализированных контроллеров для флеш-чипов или флеш-карт?

Существуют, но не в stand-alone виде. Можно взять карточку с мозгами - SD, CF, MMC...
kst
*пошел читать про SD, CF, MMC...*

А под stand-alone вы что здесь понимаете?
Я имел в виду компонент - микросхемку. Я сейчас плату разрабатываю, пока есть возможность пополнить перечень элементов.
aaarrr
Цитата(kst @ May 12 2008, 16:35) *
Я имел в виду компонент - микросхемку. Я сейчас плату разрабатываю, пока есть возможность пополнить перечень элементов.

Я тоже имел в виду микросхемку. Может проще процессор с контроллерами NAND, SD, CF добавить? Он может заодно логику загружать, еще какие-нибудь полезности делать.

На ПЛИС, ИМХО, проще всего будет работать с голой NAND-flash.
kst
В работе с голой NAND меня пугает управление bad-блоками. Остальное не так страшно...
Хотелось бы не использовать процессорные узлы, хотя таковые можно реализовать в самой ПЛИС. Вот был бы какой-нибудь простенький контроллер, который бы сам все разруливал... было бы здорово...
Мне нужно всего-то - сначала загнать поток данных (~10 МБит/сек) во флеш, а потом, после окончания записи, считать оттуда все (скорость при чтении не важна).
aaarrr
Ставьте процессор (LPC2378, например) - будет и SD/MMC и USB с Ethernet'ом, а ПЛИС вешается на внешнюю шину.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.