Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Поведение MCU при записи в NAND-флэш
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Atridies
Доброго времени суток!

Есть задача - периодически записывать приходящие с USB данные потоком на NAND флэшку. Надо оценить скорость работы. С ARM-ами еще не работал - это будет в первый раз.
Процессор AT91SAM9R64.

Собственно вопрос: запись во флэшку останавливает процессор?
Если нет - как понять, что процесс закончился ? Прерываний от SMC - нету.
scifi
Может быть, я чего-то не понял, но вообще-то процедура записи на внешний носитель - это не чёрный ящик, а программа. Загляните в исходники этой программы и посмотрите, что она делает.
Atridies
Я немного не об этом.
Запись во flash идет через SMC (контроллер статической памяти - это периферия процессора), которая генерирует все необходимые сигналы: NANDWE, NANDOE, CS, адрес, данные и пр. В общем случае - время записи одного байта (для 8-битной памяти) может занимать 5-10 тактов MCK. Что делается процессор, когда SMC генерирует эти сигналы ? Стоит и тупо ждет, когда байт запишется? Или выполняет следующие инструкции в программе?

Вопрос не по реализации программы, а по поведению микроконтроллера.
GDI
Это зависит от того как программа сделана, вы можете тупо стоять и ждать окончания транзакции, а можете что то делать. Вопрос только - что делать. у вас там есть Ось или переключатель задач какой-нибудь?
aaarrr
Цитата(Atridies @ May 4 2010, 11:16) *
В общем случае - время записи одного байта (для 8-битной памяти) может занимать 5-10 тактов MCK. Что делается процессор, когда SMC генерирует эти сигналы ? Стоит и тупо ждет, когда байт запишется? Или выполняет следующие инструкции в программе?

Если у процессора включен кэш и ему в данный момент не нужна шина, то продолжает выполнять программу. В противном случае ждет.

Уточнение: чтобы процессор не стоял, буфер записи для области NAND должен быть включен.
Atridies
1. Ну т.е. запись не тормозит процессор. Очень хорошо. Спасибо !
2. У SMC есть кэш ? А может тогда и потоком она умеет писать (то что асинхронным потоком умеет - это я знаю, а синхронным?)?
3. ОС использовать не планирую. С приходящими данными надо делать некоторые операции и в зависимости от них - будет меняться поведение процессора.
4. Как понять, что запись во флэшку закончена? Или что буфер пустой?
Dron_Gus
4. Что вы подразумеваете под "запись во флешку"? Передача данных во внутренний буфер или физическую запись на носитель? Для второго случая у NAND есть регитр состояний (можно его полить) и есть ножка R/B.
aaarrr
Цитата(Atridies @ May 4 2010, 15:32) *
...
2. У SMC есть кэш ?
...

Кэш есть у процессора. Вообще, AT91SAM9R64 в качестве первого ARM'а - это достаточно серьезно, поэтому читать, читать, и еще раз читать.
Atridies
1. Под "запись во флешку" - я подразумеваю именно окончание записи в буфер flash. Т.е. как я узнаю - что запись в буфер закончена и можно заняться другими делами (например записью в другую внешнюю память)? В UART-ах и прочих SPI-ях есть прерывание, а у SMC - нету.

2. Раз кэш есть в ядре - это просто замечательно!

3. Выбрал сей камень только из соображений: есть Hi-speed USB, есть поддержка Nand flash и корпус небольших размеров. Понимаю, что ввязываюсь в серьезное дело, но утешает несколько вещей:
- программа несложная,
- использовать буду минимум периферии,
- есть большое желание поработать с ARM-ами.
- есть у кого спросить, если что smile.gif (форум рулит).

4. Мануал на MCU - прочитал весь, теперь будут читать мануал на ядро (его пролистал по диагонали в надежде, что "всё как у всех" smile.gif ). Виноват, каюсь.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.