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

 
 
> Поведение MCU при записи в NAND-флэш, Останавливается ли проц в этот момент?
Atridies
сообщение May 3 2010, 16:56
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 445
Регистрация: 7-02-05
Из: Зеленоград
Пользователь №: 2 468



Доброго времени суток!

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

Собственно вопрос: запись во флэшку останавливает процессор?
Если нет - как понять, что процесс закончился ? Прерываний от SMC - нету.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
scifi
сообщение May 3 2010, 17:31
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Может быть, я чего-то не понял, но вообще-то процедура записи на внешний носитель - это не чёрный ящик, а программа. Загляните в исходники этой программы и посмотрите, что она делает.
Go to the top of the page
 
+Quote Post
Atridies
сообщение May 4 2010, 07:16
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 445
Регистрация: 7-02-05
Из: Зеленоград
Пользователь №: 2 468



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

Вопрос не по реализации программы, а по поведению микроконтроллера.
Go to the top of the page
 
+Quote Post
GDI
сообщение May 4 2010, 08:27
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Это зависит от того как программа сделана, вы можете тупо стоять и ждать окончания транзакции, а можете что то делать. Вопрос только - что делать. у вас там есть Ось или переключатель задач какой-нибудь?


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 4 2010, 08:30
Сообщение #5


Гуру
******

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



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

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

Уточнение: чтобы процессор не стоял, буфер записи для области NAND должен быть включен.
Go to the top of the page
 
+Quote Post
Atridies
сообщение May 4 2010, 11:32
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 445
Регистрация: 7-02-05
Из: Зеленоград
Пользователь №: 2 468



1. Ну т.е. запись не тормозит процессор. Очень хорошо. Спасибо !
2. У SMC есть кэш ? А может тогда и потоком она умеет писать (то что асинхронным потоком умеет - это я знаю, а синхронным?)?
3. ОС использовать не планирую. С приходящими данными надо делать некоторые операции и в зависимости от них - будет меняться поведение процессора.
4. Как понять, что запись во флэшку закончена? Или что буфер пустой?
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение May 4 2010, 14:57
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



4. Что вы подразумеваете под "запись во флешку"? Передача данных во внутренний буфер или физическую запись на носитель? Для второго случая у NAND есть регитр состояний (можно его полить) и есть ножка R/B.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 4 2010, 16:03
Сообщение #8


Гуру
******

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



Цитата(Atridies @ May 4 2010, 15:32) *
...
2. У SMC есть кэш ?
...

Кэш есть у процессора. Вообще, AT91SAM9R64 в качестве первого ARM'а - это достаточно серьезно, поэтому читать, читать, и еще раз читать.
Go to the top of the page
 
+Quote Post
Atridies
сообщение May 6 2010, 14:56
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 445
Регистрация: 7-02-05
Из: Зеленоград
Пользователь №: 2 468



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

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

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

4. Мануал на MCU - прочитал весь, теперь будут читать мануал на ядро (его пролистал по диагонали в надежде, что "всё как у всех" smile.gif ). Виноват, каюсь.
Go to the top of the page
 
+Quote Post

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

 


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


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