|
|
 |
Ответов
|
Oct 29 2007, 19:53
|

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

|
Добрый день. После прочтения топика, хочется вставить свою лепту в истории  Юзаем исключительно EzUSB. Все реализованно на потоках и с использованем внутренних семафоров. Про запуск сначала вычитки до записи - сущая правда (иначе виснит, про ABORT PIPE помнится на третьй аборт в синий вылетает винда из-за драйвера. Так что лучший аборт для оного устройства - это все же вернуть данные в запрошенный пайп). Юзать рекомендую только по потокам (иначе подвесите всю систему как два пальца). Сейчас тестим всю систему на двухядерных машинах и быть может (повторю быть может) именно из-за второго ядра (вернее болльше одного) происходят глюки (иногда драйвер виснит, как будто в пайпе нет данных и соответственно виснит вся винда). До этого открутились несколько лет на одноядерных и с нашей DLL и прошивкой все работало нормально (параллельно я уже по этому поводу тут спрашивал). Кто-нибудь на двухядерных крутил дивайс??? По поводу EzUSB, натолкнулись на то что дебаговая версия жрет кучу процессорного времени (а оно на вес золота). По сему работаем исключительно с free. Вообще драйвером я доволен, а чего им быть не довольным - он ПРОСТОЙ. Все в ваших руках. У нас достаточно глубокая обратная связь в системе, по этому о латентности ничего сказать немогу. Единственное что интересно кто как решает проблему передачи?? Мне пришлось завести в железке таймер по которому в тото же пайп кидается спец пакет. Дабы не завесить поток на вычитку. Ну нехотел я заводить второй канал для проверки наличия данных да еще на интеррапт. Да и буфер у нас для сих вещей маловат. А входной поток большой (ну не дикий, но большой для такого буфера и всяких там паралельных задачь). А какой буфер используют господа?? Ну так чтобы данные не потерялись и при условии то данные на вход Cypress остановить нельзя. Вот пожалуй и все.  Удачи.
--------------------
Удачи.
|
|
|
|
|
Oct 31 2007, 20:51
|
Участник

Группа: Свой
Сообщений: 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-манагера выигрыша в скорости не даст
|
|
|
|
|
Nov 1 2007, 15:11
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806

|
Цитата(qqqqqq @ Nov 1 2007, 01:51)  И ещё про латентность. Она, как и ожидалось, сильно зависит от производительности компа. 0.9мс было на 4м пне 2800МГц. А на ноутбучном целероне-633 оказалась аж 4мс. Причём около 3.5мс висим в шинном драйвере Т.е. обхождение IO-манагера выигрыша в скорости не даст  IO-манагер вы не обходили. Я уже здесь сообщал, как (ИМХО) правильно нужно сделать (в том числе и обойти IO-манагер). 1. Реализовать процедуру запрос-ответ в одном CONTROL_IO в драйвере, чтобы свести к минимуму обращения из приложения в драйвер и обратно. ( у вас 4, а получится 2) 2. Применять в драйвере асинхронные обращения к нижележащему драйверу, функции завершения которых работают в DISPATCH_IRQL. (EzUsb использует синхронные, которые выполняются в контексте ваших потоков, и ждет срабатывания Event от дравера шины) PS. Можно также повысить приоритет потоков, но это не рекомендуется.
|
|
|
|
|
Nov 1 2007, 20:09
|

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

|
Цитата Пытаюсь пока обходиться одним абортом - дабы прибить читающий поток при выходе из приложения. Хм, а сколько раз у вас при этом за одну загрузку компьютера происходит таких абортов? До следующей загрузки компа. Цитата Не такую уж и кучу, но есть немного. процентов 5 от суммарного времени кручения в диспетчере ВВ, шинном драйвере и драйвере хоста. Пока не прокачиваешь поток данных с железки, он вроде кушает мало. А вот как поток пойдет, то тут труба. В плоть до зависона (без синего правда, но винда мертвая). В лучшем случае потеря пакетов. Цитата(Седой @ Nov 1 2007, 19:11)  PS. Можно также повысить приоритет потоков, но это не рекомендуется. Мда, нам именно для работы с драйвером и пришлось использовать приоритеты (повышать их). Но вызвано это в первую очередь малым буфером в железке. Чую все же прийдется уводить всю DLL в драйвер. PS. А какой буфер используют господа?? Я имею ввиду в ЖЕЛЕЗКЕ!!! Не в компе!!! Опять же. Пауз в потоке нет!!! Т.е. потеря данных на входе - катастрофа. Ну у меня поток 1Мбит-3Мбит (сейча 1, будет до 3-х). Удачи.
--------------------
Удачи.
|
|
|
|
Сообщений в этой теме
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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|