Полная версия этой страницы:
USB и DMA (ПДП) в AT91SAM9261
Может кто уже писал или знает, возможно ли организовать прямой доступ к памяти (DMA) потока данных по USB в микроконтроллере AT91SAM9261?
Не предусмотрен там DMA, увы.
А в datasheet почему-то тогда написано:
– USB 2.0 Full Speed (12 Mbits per second) Host Double Port
• Dual On-chip Transceivers
• Integrated FIFOs and Dedicated DMA Channels
Может знаете что это за зверь такой "Dedicated DMA Channels"?
Дык то хост, у него по определению есть DMA.
Вот как оно...
А есть какой-нибудь микроконтроллер подобный AT91SAM9261 с USB+DMA на борту?
Цитата(Morfko @ Jun 3 2009, 18:01)

А есть какой-нибудь микроконтроллер подобный AT91SAM9261 с USB+DMA на борту?
Пережевать 12мбит/с можно совершенно спокойно и без DMA, откуда такое требование?
Для real-time приложения это нужно просто как воздух. Без DMA никак не получится.
MALLOY2
Jun 4 2009, 05:13
Цитата
Без DMA никак не получится.
Почему ? там ведь только мегабайт в секунду, это даже ресурсов проца особенно не займет
Цитата(Morfko @ Jun 4 2009, 05:36)

Для real-time приложения это нужно просто как воздух. Без DMA никак не получится.
Ничего подобного. При правильном подходе никто отсутствия DMA даже не заметит.
Для real time приложения в данном случае вам было бы достаточно просто организовать обмен данными с USB контроллером по прерываниям. Пришли данные - возникло прерывание, вы перебросили их в память и все. Приложение даже подозревать не будет о том каким образом данные в памяти появляются.
Если предположить что скорость обмена данными будет около 1 Мбайта в секунду (что мало вероятно при общении с PC, обычно меньше), то при размере эднпоинта 64 байта прошивка должна 1000000/64 = 15625 раз в секунду проработать прерывание. Предположим что весь код прерывания у вас занимает не более 1000 тактов процессора (тоесть вход в него, определение что его вызвало, чтение в цикле регистра данных эндпоинта и запись в память и т.п.), тогда в секунду у вас при заданной скорости обмена данными примерно будет потрачено процессором 15625000 тактов, что при тактовой частоте MCU = 48МHz есть менее 30% процессорного времени. 70% времени остается для Вашего real time приложения.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.