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

 
 
 
Reply to this topicStart new topic
> Как ускорить работу USB - bulk драйвера (Win32), для FTDI - чипа?
evg123
сообщение May 4 2010, 06:55
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 353
Регистрация: 11-09-06
Из: Минск
Пользователь №: 20 282



МикросхемаFT232R (а новый вариант FT2232D) - сейчас очень часто используется для построения моcтов типа USB -> com, USB -> RS485, USB -> JTAG.
У нас возникла проблема с таким переходником USB -> RS485 - медленно работает. С FTDI микросхемой (FT232R) поставляется ихний стандартный драйвер USB-BULK.
Всё замечательно но: отправляем пакет в USB (через их драйвер, через API, которое они дают) с периодичностью 1 раз в миллисекунду (64 байта), а на выходе 485 -ой фиксируем этот пакет в среднем 1 раз в 15 миллисекунд. Как раскачигарить этот драйвер? (Есть апп-нота, что якобы можно поднять приоритет драйвера - пробовали - не помогает). Или это проблема винды и она больше не даст? Может быть вместо WinXP поставить WinXP - Embedded? Это может чем-нибудь помочь? Зрительно на экране видим, что пакет (на XP) отправляется не раз в миллисекунду, а гораздо реже (в элементарном окошке считаем количество отправок).
Go to the top of the page
 
+Quote Post
Alex11
сообщение May 4 2010, 17:55
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Отправлять раз в 15 миллисекунд 64*15 байтов.
Go to the top of the page
 
+Quote Post
evg123
сообщение May 5 2010, 13:55
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 353
Регистрация: 11-09-06
Из: Минск
Пользователь №: 20 282



Цитата(Alex11 @ May 4 2010, 21:55) *
Отправлять раз в 15 миллисекунд 64*15 байтов.

Понятно, но это не годится. На каждый отправленный пакет должен быть ответ. После каждой отправки ждём ответа.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение May 5 2010, 17:02
Сообщение #4


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(evg123 @ May 5 2010, 17:55) *
Понятно, но это не годится. На каждый отправленный пакет должен быть ответ. После каждой отправки ждём ответа.


Возьмите ddk´ный bulk драйвер от XP, например. Там посылается за раз 4Кб буфер (если память не изменяет) и скорость порядка 800 Кб/с можно запросто получить.
Go to the top of the page
 
+Quote Post
=AK=
сообщение May 6 2010, 00:51
Сообщение #5


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(evg123 @ May 5 2010, 23:25) *
Понятно, но это не годится. На каждый отправленный пакет должен быть ответ. После каждой отправки ждём ответа.

Тогда быстрее, чем сейчс, у вас работать не будет, если только не напишете свой драйвер.
Go to the top of the page
 
+Quote Post
_3m
сообщение May 6 2010, 05:41
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Цитата(evg123 @ May 5 2010, 17:55) *
Понятно, но это не годится. На каждый отправленный пакет должен быть ответ. После каждой отправки ждём ответа.

Для USB интерфейса алгоритм обмена типа "запрос-ответ" категорически не годится потому что дает низкую скорость.
Используйте 2 независимых потока: входной и выходной, причем в pc и девайсе должна быть обеспечена буферизация и чем глубже тем лучше. По другому серьезную скорость не получите.
Go to the top of the page
 
+Quote Post
dr.duban
сообщение May 11 2010, 13:21
Сообщение #7





Группа: Новичок
Сообщений: 2
Регистрация: 11-05-10
Пользователь №: 57 194



А какой размер ответа?
Если я все правильно понимаю то котроллер будет NAKать IN трансферы меньше 62 байт если прошло меньше 16 мс после успешного трансфера.
Go to the top of the page
 
+Quote Post
dr.duban
сообщение May 11 2010, 17:44
Сообщение #8





Группа: Новичок
Сообщений: 2
Регистрация: 11-05-10
Пользователь №: 57 194



Так и не смог найти код по теме.

В целом, тут два пути для оптимизации.
длл драйвера должна экспортировать функцию

FT_SetLatencyTimer(...)

с ее помощью можно изменить время ожидания между двумя последовательными IN трансферами меньше 62 байт. (минимум 2 мс)

И еще должна быть функция

FT_SetChars(...)

которая позволяет установить символ события. После получения такого символа в OUT пакете, котроллер должен ответить байтами статуса и при получении IN запроса заслать до 62 байт данных без задержки.

Это, конечно, если я ничего не перепутал.
Go to the top of the page
 
+Quote Post
SBE
сообщение Jul 18 2010, 16:46
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 108
Регистрация: 8-09-05
Пользователь №: 8 384



Цитата(evg123 @ May 4 2010, 09:55) *
МикросхемаFT232R (а новый вариант FT2232D) - сейчас очень часто используется для построения моcтов типа USB -> com, USB -> RS485, USB -> JTAG.
У нас возникла проблема с таким переходником USB -> RS485 - медленно работает. С FTDI микросхемой (FT232R) поставляется ихний стандартный драйвер USB-BULK.
Всё замечательно но: отправляем пакет в USB (через их драйвер, через API, которое они дают) с периодичностью 1 раз в миллисекунду (64 байта), а на выходе 485 -ой фиксируем этот пакет в среднем 1 раз в 15 миллисекунд. Как раскачигарить этот драйвер? (Есть апп-нота, что якобы можно поднять приоритет драйвера - пробовали - не помогает). Или это проблема винды и она больше не даст? Может быть вместо WinXP поставить WinXP - Embedded? Это может чем-нибудь помочь? Зрительно на экране видим, что пакет (на XP) отправляется не раз в миллисекунду, а гораздо реже (в элементарном окошке считаем количество отправок).

Попробуйте послать пакет 62 байта.
Как-то похоже на latency timer, но тот правда работает на передачу в PC. FTDI добавляет 2 своих статусных байта на каждый пакет, соответственно в вашем случае посылает 2 bulk пакета. Второй через время latency timer, которое по умолчанию 16мс.
Почитайте AN232B-04 Data Throughput,Latency and Handshaking.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Jul 19 2010, 09:17
Сообщение #10


Гуру
******

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



Цитата(SBE @ Jul 18 2010, 20:46) *
Как-то похоже на latency timer


Это похоже на квант планировщика Виндов.



--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
SBE
сообщение Jul 19 2010, 11:07
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 108
Регистрация: 8-09-05
Пользователь №: 8 384



Цитата(Oldring @ Jul 19 2010, 12:17) *
Это похоже на квант планировщика Виндов.

И то правда.

Как то не замечали таких траблов с FTDI при обмене через ftdi.dll.

Цитата
Может быть вместо WinXP поставить WinXP - Embedded? Это может чем-нибудь помочь?

XP Embedded не поможет, поскольку нечем от Professional не отличается. в этой части Real time это WinCe, но это другая ОСь.
Go to the top of the page
 
+Quote Post

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

 


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


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