Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: DMA & USB в lpc2148
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
klen
Всем привет .
Использую для PC-хостов libusb с http://sourceforge.net/projects/libusb
для lpc2148 использую стек liblpcusb c http://sourceforge.net/projects/lpcusb
Все изумительнол работает и устраивает. скорость до 1,6 м/с
Но liblpcusb не использует DMA, както это не кашерно. если есть железо - оно должно работать.

Почитал даташит, описание очень интересное - про регистры DMA все понятно, непонятно зачем они нужны и как их использовать!

Нужен пример с камментами. чтоб разобратся и дописать lpcusb
с DMA никогда дела не имел но имею общие представления о нем.
DASM
http://tnkernel.com/usb_bulk.html
Из беглого ознакомления понял, что от DMA толку не слишком много, впрочем могу ошибаться
klen
Цитата(DASM @ Oct 27 2007, 13:26) *
что от DMA толку не слишком много, впрочем могу ошибаться

ддаже если нету толку, он всеравно есть - дополнительные 16к озу
DASM
не 16, а 8. И использовать её и так можно под свои нужды, без всяких DMA
Abo
Цитата(klen @ Oct 27 2007, 13:16) *
Все изумительнол работает и устраивает. скорость до 1,6 м/с


1,6 Мбайт/с быть не может. Что то не так меряете. (кстати 12 / 8 к сожалению только 1,5).
klen
Цитата(Abo @ Oct 27 2007, 15:34) *
1,6 Мбайт/с быть не может. Что то не так меряете. (кстати 12 / 8 к сожалению только 1,5).

А как надо? пишу 1 мегабайт с PC в libusb , на ней мерю записи чтения. в lpc кольцевой буффер 32к, потом еще и проверяю что пишется правильно. Более того я сдел плату генератор-произвольгого сигнала на Olimex H-lpc2148 лью синал в буфер ЦАПа через usb, все работает.
DASM
Что значит как надо ? У Вас та скорость, что Вы говорит и так выше максимально возможной для full speed USB. smile.gif
Alex03
Цитата(klen @ Oct 27 2007, 18:28) *
А как надо? пишу 1 мегабайт с PC в libusb , на ней мерю записи чтения.


Присоединяюсь к мнению DASM-а. 1.5 теоритический максимум. Реальный намного меньше.

Ещё по поводу libusb - есть неприятный момент при чтении с таймаутом на примере чтения bulk-а. Таймаут используется Юзерспейсный, по истечении времени Юзерспейс тормозит кернельную часть. Если в этот момент кернельная часть уже чтото читает/прочитала с девайса но не отдала в юзерспейсную часть, то эти данные теряются.
klen
Цитата(Alex03 @ Oct 29 2007, 11:25) *
Присоединяюсь к мнению DASM-а. 1.5 теоритический максимум. Реальный намного меньше.

с этим понятно, ошибка была при записи с PC.

Цитата
Ещё по поводу libusb - есть неприятный момент при чтении с таймаутом на примере чтения bulk-а. Таймаут используется Юзерспейсный, по истечении времени Юзерспейс тормозит кернельную часть. Если в этот момент кернельная часть уже чтото читает/прочитала с девайса но не отдала в юзерспейсную часть, то эти данные теряются.

Что предлагается?
Abo
Цитата(klen @ Oct 29 2007, 14:21) *
Что предлагается?



Вообще-то bulk - канал связи с гарантированной доставкой.
Таймаут на чтение не нужен - если данные по bulk каналу не приходят, значит их не посылают.
Для контроля подключенности и работоспособности устройства со стороны PC целесообразно контролировать периодическую посылку данных через изохронные либо интеррапт каналы.
Со стороны устройства можно проверять приход токенов SOF, что будет говорить о том что хост функционирует.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.