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

 
 
> Время отклика USB-устройства....
qqqqqq
сообщение Oct 16 2007, 10:26
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 17-01-06
Пользователь №: 13 277



Померял время между отправкой одного bulk-пакета и приёмом другого. Получил в среднем 40мс.
Что-то не этого я ожидал от HS USB.
Длина пакетов была 10 байт. Драйвер CYUSB, микросхема CY7C68001, на выходе которой стоит CPLD, разворачивающая приходящий пакет, инвертируя его, в синхронном режиме на скорости 48МГц 8бит.

Как бы сократить это время раз этак в 40тысяч?...
Похоже, где-то я действую неправильно...
В интернете ничего на данную тему найти не смог, кроме упоминаний, что "USB response time is unacceptably slow". Неужели этого и добивались разработчики данной шины?
Даже не верится...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AndreyS
сообщение Oct 29 2007, 19:53
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Добрый день.


После прочтения топика, хочется вставить свою лепту в истории smile.gif

Юзаем исключительно EzUSB. Все реализованно на потоках и с использованем внутренних семафоров.
Про запуск сначала вычитки до записи - сущая правда (иначе виснит, про ABORT PIPE помнится на третьй аборт в синий вылетает винда из-за драйвера. Так что лучший аборт для оного устройства - это все же вернуть данные в запрошенный пайп).

Юзать рекомендую только по потокам (иначе подвесите всю систему как два пальца).

Сейчас тестим всю систему на двухядерных машинах и быть может (повторю быть может) именно из-за второго ядра (вернее болльше одного) происходят глюки (иногда драйвер виснит, как будто в пайпе нет данных и соответственно виснит вся винда). До этого открутились несколько лет на одноядерных и с нашей DLL и прошивкой все работало нормально (параллельно я уже по этому поводу тут спрашивал). Кто-нибудь на двухядерных крутил дивайс???

По поводу EzUSB, натолкнулись на то что дебаговая версия жрет кучу процессорного времени (а оно на вес золота). По сему работаем исключительно с free.

Вообще драйвером я доволен, а чего им быть не довольным - он ПРОСТОЙ. Все в ваших руках. У нас достаточно глубокая обратная связь в системе, по этому о латентности ничего сказать немогу. Единственное что интересно кто как решает проблему передачи?? Мне пришлось завести в железке таймер по которому в тото же пайп кидается спец пакет. Дабы не завесить поток на вычитку. Ну нехотел я заводить второй канал для проверки наличия данных да еще на интеррапт. Да и буфер у нас для сих вещей маловат. А входной поток большой (ну не дикий, но большой для такого буфера и всяких там паралельных задачь).

А какой буфер используют господа?? Ну так чтобы данные не потерялись и при условии то данные на вход Cypress остановить нельзя.

Вот пожалуй и все. smile.gif

Удачи.


--------------------
Удачи.
Go to the top of the page
 
+Quote Post
qqqqqq
сообщение Oct 31 2007, 20:51
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 17-01-06
Пользователь №: 13 277



Цитата(AndreyS @ Oct 30 2007, 00:53) *
Юзаем исключительно EzUSB. Все реализованно на потоках и с использованем внутренних семафоров.
Про запуск сначала вычитки до записи - сущая правда (иначе виснит, про ABORT PIPE помнится на третьй аборт в синий вылетает винда из-за драйвера. Так что лучший аборт для оного устройства - это все же вернуть данные в запрошенный пайп).


Пытаюсь пока обходиться одним абортом - дабы прибить читающий поток при выходе из приложения.

Цитата
По поводу EzUSB, натолкнулись на то что дебаговая версия жрет кучу процессорного времени (а оно на вес золота). По сему работаем исключительно с free.


Не такую уж и кучу, но есть немного. процентов 5 от суммарного времени кручения в диспетчере ВВ, шинном драйвере и драйвере хоста.

Цитата
Единственное что интересно кто как решает проблему передачи?? Мне пришлось завести в железке таймер по которому в тото же пайп кидается спец пакет. Дабы не завесить поток на вычитку. Ну нехотел я заводить второй канал для проверки наличия данных да еще на интеррапт. Да и буфер у нас для сих вещей маловат. А входной поток большой (ну не дикий, но большой для такого буфера и всяких там паралельных задачь).


Читающий поток висит непрерывно. Ожидание входного пакета в другом потоке - прерывается по таймауту в случае чего. Единственный момент, когда нужно прервать висящий читающий поток - это выход из приложения. Для чего использую аборт. Синих экранов пока не видел.

Цитата
А какой буфер используют господа?? Ну так чтобы данные не потерялись и при условии то данные на вход Cypress остановить нельзя.


С этим бился с неделю... Пока понял, что и правда нельзя. Виснет отправляющий вызов так, что аборт не помогает. Причём виснет где-то в шинном драйвере. Пришлось забирать данные в устройстве, даже если у него их не забирают. Данные, естественно, при этом теряются, но если приложение умное - оно такого не допустит. Т.е. не будет писать в устройство, не запустив читающий поток.

И ещё про латентность. Она, как и ожидалось, сильно зависит от производительности компа.
0.9мс было на 4м пне 2800МГц. А на ноутбучном целероне-633 оказалась аж 4мс. Причём около 3.5мс висим в шинном драйвере Т.е. обхождение IO-манагера выигрыша в скорости не даст sad.gif
Go to the top of the page
 
+Quote Post
Седой
сообщение Nov 1 2007, 15:11
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806



Цитата(qqqqqq @ Nov 1 2007, 01:51) *
И ещё про латентность. Она, как и ожидалось, сильно зависит от производительности компа.
0.9мс было на 4м пне 2800МГц. А на ноутбучном целероне-633 оказалась аж 4мс. Причём около 3.5мс висим в шинном драйвере Т.е. обхождение IO-манагера выигрыша в скорости не даст sad.gif


IO-манагер вы не обходили. Я уже здесь сообщал, как (ИМХО) правильно нужно сделать (в том числе и обойти IO-манагер).

1. Реализовать процедуру запрос-ответ в одном CONTROL_IO в драйвере, чтобы свести к минимуму обращения из приложения в драйвер и обратно. ( у вас 4, а получится 2)
2. Применять в драйвере асинхронные обращения к нижележащему драйверу, функции завершения которых работают в DISPATCH_IRQL. (EzUsb использует синхронные, которые выполняются в контексте ваших потоков, и ждет срабатывания Event от дравера шины)

PS. Можно также повысить приоритет потоков, но это не рекомендуется.
Go to the top of the page
 
+Quote Post
AndreyS
сообщение Nov 1 2007, 20:09
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Цитата
Пытаюсь пока обходиться одним абортом - дабы прибить читающий поток при выходе из приложения.


Хм, а сколько раз у вас при этом за одну загрузку компьютера происходит таких абортов? До следующей загрузки компа.

Цитата
Не такую уж и кучу, но есть немного. процентов 5 от суммарного времени кручения в диспетчере ВВ, шинном драйвере и драйвере хоста.


Пока не прокачиваешь поток данных с железки, он вроде кушает мало. А вот как поток пойдет, то тут труба. В плоть до зависона (без синего правда, но винда мертвая). В лучшем случае потеря пакетов.


Цитата(Седой @ Nov 1 2007, 19:11) *
PS. Можно также повысить приоритет потоков, но это не рекомендуется.


Мда, нам именно для работы с драйвером и пришлось использовать приоритеты (повышать их). Но вызвано это в первую очередь малым буфером в железке.

Чую все же прийдется уводить всю DLL в драйвер.


PS. А какой буфер используют господа?? Я имею ввиду в ЖЕЛЕЗКЕ!!! Не в компе!!! Опять же. Пауз в потоке нет!!! Т.е. потеря данных на входе - катастрофа. Ну у меня поток 1Мбит-3Мбит (сейча 1, будет до 3-х).

Удачи.


--------------------
Удачи.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Nov 2 2007, 11:46
Сообщение #6


Гуру
******

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



Цитата(AndreyS @ Nov 1 2007, 23:09) *
PS. А какой буфер используют господа?? Я имею ввиду в ЖЕЛЕЗКЕ!!! Не в компе!!! Опять же. Пауз в потоке нет!!! Т.е. потеря данных на входе - катастрофа. Ну у меня поток 1Мбит-3Мбит (сейча 1, будет до 3-х).


"Катастрофой" обычно называется инцидент с человеческими жертвами. Если существует такая опсаность - лучше не используйте USB. Тогда лучше проектируйте специализированную систему с многократным дублированием. Потому что вообще-то никакая real-time система с конечным буфером не может гарантировать отсутствие потерь данных. Тем более, USB. В конце концов, что Вы будете делать если кто-нибудь выдернет кабель из компьютера?


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- qqqqqq   Время отклика USB-устройства....   Oct 16 2007, 10:26
- - VDG   Цитата(qqqqqq @ Oct 16 2007, 14:26) Неуже...   Oct 16 2007, 12:51
- - Oldring   Цитата(qqqqqq @ Oct 16 2007, 14:26) Помер...   Oct 16 2007, 13:10
|- - qqqqqq   Цитата(Oldring @ Oct 16 2007, 19:10) По м...   Oct 16 2007, 14:08
|- - Oldring   Цитата(qqqqqq @ Oct 16 2007, 18:08) Менят...   Oct 16 2007, 14:14
||- - qqqqqq   Цитата(Oldring @ Oct 16 2007, 20:14) inte...   Oct 16 2007, 14:32
|- - blackfin   Цитата(qqqqqq @ Oct 16 2007, 18:08) Специ...   Oct 20 2007, 15:13
- - qqqqqq   Возникло у меня тут предположение одно.... Если п...   Oct 17 2007, 15:22
- - oran-be   Чего то как то совсем непонятно.... У шины время к...   Oct 20 2007, 11:09
|- - Oldring   Цитата(oran-be @ Oct 20 2007, 15:09)...   Oct 20 2007, 17:34
||- - Седой   Цитата(Oldring @ Oct 20 2007, 23:34) Вопр...   Oct 21 2007, 10:59
||- - Oldring   Цитата(Седой @ Oct 21 2007, 14:59) Давайт...   Oct 22 2007, 06:25
||- - Седой   Цитата(Oldring @ Oct 22 2007, 12:25) И ка...   Oct 23 2007, 12:50
||- - Oldring   Цитата(Седой @ Oct 23 2007, 16:50) Я уже ...   Oct 23 2007, 13:32
||- - Седой   Цитата(Oldring @ Oct 23 2007, 19:32) До с...   Oct 23 2007, 13:48
||- - Oldring   Цитата(Седой @ Oct 23 2007, 17:48) Если в...   Oct 23 2007, 14:20
||- - Седой   Цитата(Oldring @ Oct 23 2007, 20:20) помо...   Oct 23 2007, 15:10
|- - qqqqqq   Цитата(oran-be @ Oct 20 2007, 17:09)...   Oct 23 2007, 16:00
|- - Седой   Цитата(qqqqqq @ Oct 23 2007, 22:00) Получ...   Oct 24 2007, 05:23
|- - qqqqqq   Цитата(Седой @ Oct 24 2007, 11:23) Все пр...   Oct 24 2007, 07:03
|- - Седой   Цитата(qqqqqq @ Oct 24 2007, 13:03) Непон...   Oct 24 2007, 08:33
|- - qqqqqq   Цитата(Седой @ Oct 24 2007, 14:33) PS. Ка...   Oct 24 2007, 09:01
|- - qqqqqq   Цитата(qqqqqq @ Oct 24 2007, 15:01) Попро...   Oct 26 2007, 09:45
|- - Седой   Цитата(qqqqqq @ Oct 26 2007, 15:45) Остал...   Oct 26 2007, 09:56
|- - qqqqqq   Цитата(Седой @ Oct 26 2007, 15:56) Для Ez...   Oct 26 2007, 14:10
|- - Седой   Цитата(qqqqqq @ Oct 26 2007, 20:10) Прове...   Oct 26 2007, 15:43
|- - qqqqqq   Цитата(Седой @ Oct 26 2007, 21:43) Судя п...   Oct 26 2007, 17:44
|- - aaarrr   Цитата(qqqqqq @ Oct 26 2007, 21:44) Я нав...   Oct 26 2007, 17:51
|- - Седой   Цитата(aaarrr @ Oct 26 2007, 23:51) Да, в...   Oct 27 2007, 04:31
- - Седой   ЦитатаВообще при таких скоростях самая большая про...   Oct 20 2007, 14:19
- - Седой   ЦитатаПо поводу EzUSB, натолкнулись на то что деба...   Oct 30 2007, 10:10
|- - Седой   Цитата(AndreyS @ Nov 2 2007, 01:09) А как...   Nov 2 2007, 06:59
|- - AndreyS   Цитата(Oldring @ Nov 2 2007, 15:46) ...   Nov 4 2007, 19:14
|- - Oldring   Цитата(AndreyS @ Nov 4 2007, 22:14) Катас...   Nov 4 2007, 20:26
|- - Седой   Цитата(AndreyS @ Nov 5 2007, 00:14) Спаси...   Nov 5 2007, 10:06
- - qqqqqq   Цитата(Седой @ Nov 1 2007, 20:11) IO-мана...   Nov 4 2007, 19:41


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 01:32
Рейтинг@Mail.ru


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