Регистрация | Последние сообщения | Персональный список | Поиск | Настройка конференции | Личные данные | Правила конференции | Список участников | Top 64 | Статистика раздела | faq | Что нового v.2.3 | Чат
Skunk Forum - Техника, Наука, Общество » Форум разработчиков РЭА »
USB устройство

Версия для печати (настроить)

Новая тема | Написать ответ

Подписаться

Автор Тема:   USB устройство
irand
Junior Member

Сообщений: 1
Регистрация: Июнь 2009

написано 17 Июня 2009 10:25ИнфоПравкаОтветитьIP

Есть вопросы по разработке USB устройства. Используем чипсет ISP1582. Но дело не в чипсете. Есть предложение одного из схематехников писать в EP2(bulk) без запроса от хоста, т.е. подключили USB устройство к хосту, прошла енумерация и сразу начинать писать в EP2 данные для хоста. Однако главной концепцией USB является то, что в USB системе может быть только один мастер. И им является хост-компьютер, а USB устройство всегда отвечает на запросы хоста - оно никогда не может посылать данные самостоятельно (только в suspend режиме). Подскажите, у кого есть опыт разработки USB устройств, что может произойти, если клиенское ПО (ПО, которое опрашивает хост на ПК) не принимает данные, а USB устройство посылает их хосту?

nagserg
Junior Member

Сообщений: 30
Регистрация: Декабрь 2005

написано 17 Июня 2009 16:25ИнфоПравкаОтветитьIP

что может произойти, если клиенское ПО (ПО, которое опрашивает хост на ПК) не принимает данные, а USB устройство посылает их хосту?
ИМХО ничего не будет, устройство может только положить данные в буфер конечной точки, а хост эти данные с помощью клиентского ПО забирает оттуда. Видимо придется постоянно опрашивать ваше USB устройство.

irand
Junior Member

Сообщений: 2
Регистрация: Июнь 2009

написано 18 Июня 2009 09:21ИнфоПравкаОтветитьIP

мы преполагали, что все посылки от USB устройства, должны идти по запросу от хоста, т.е. по 0 (control) точке - понятно, стандартные запросы и ответы (мануал www.usb.org), а по остальным - по разработанному протоколу. Поэтому и возник вопрос. Клиенское ПО еще не запущено - ПО еще не опрашивает, например, вторую конечную точку, а USB устройство уже подключено к хосту и пихает данные в буфер второй конечной точки.

nagserg
Member

Сообщений: 31
Регистрация: Декабрь 2005

написано 18 Июня 2009 14:39ИнфоПравкаОтветитьIP

тогда просто потеряются данные, которые передавались до запуска клиентского ПО.
После запуска клиентского ПО будут читаться данные на момент запроса.

Или можно сделать так: USB устройство после записи в буфер ждет флаг прерывания от хоста 2-й конечной точки (ПО начало опрашивать) и только потом начинает пихать остальные данные в буфер

irand
Junior Member

Сообщений: 3
Регистрация: Июнь 2009

написано 22 Июня 2009 15:13ИнфоПравкаОтветитьIP

nagserg, какой драйвер вы использовали в разработках USB? Мы собираемся взять из примеров DDK для XP BulkUSB. Есть ли у вас опыт работы с этим драйвером? Можно с его помощью опрашивать несколько пайпов?

nagserg
Member

Сообщений: 32
Регистрация: Декабрь 2005

написано 23 Июня 2009 18:00ИнфоПравкаОтветитьIP

Я сгенерировал драйвер с помощью Numega Driver Studio. И скомпилировал его в Visual Studio с DDK. Одна точка на передачу, одна на прием. А обращался к устройству функциями CreateFile, ReadFile, WriteFile синхронно.

По драйверам здесь есть спецы Весельчак У

irand
Junior Member

Сообщений: 4
Регистрация: Июнь 2009

написано 03 Августа 2009 12:35ИнфоПравкаОтветитьIP

Запустили устройство: прошли нумерацию, поставили драйвер(USBBULK из DDK), увидели свое устройство в Оборудовании. Но при отладке (Bus Hound), посылка любого дескриптора проходит только один запрос, чтобы послать новый дескриптор надо сначала сделать сброс, потом послать запрос, придет ответ, чтобы послать новый запрос - опять сброс. Однако, если к хабу подключить любую флэшку - наше устройство начинает работать без всяких сбросов. Посылается любой запрос по любой точке. В чем проблема? nagserg может вы в курсе?

nagserg
Member

Сообщений: 33
Регистрация: Декабрь 2005

написано 15 Августа 2009 23:09ИнфоПравкаОтветитьIP

Было такое, что добился энумерации устройства, но после установки драйвера, в диспетчере устройств появлялось мое устройство неопознанное. Оказалось не обрабатывал запрос SET CONFIGURATION. Может какой-нибудь запрос не обрабатываете?

irand
Junior Member

Сообщений: 5
Регистрация: Июнь 2009

написано 20 Августа 2009 10:52ИнфоПравкаОтветитьIP

Продвинулись дальше. Идет обмен. Но есть еще проблема. Когда в клиенском ПО делаем опрос PIPE IN (ReadFile), происходит подвисание (ожидание чтения данных), если данных в буфере нет, как обойти это ожидание? Чтобы клиенское ПО не висло на ReadFile, даже если USB устройство не положило данных в буфер?

nagserg
Member

Сообщений: 34
Регистрация: Декабрь 2005

написано 31 Августа 2009 11:16ИнфоПравкаОтветитьIP

Я сделал так: устройство по таймеру раз 10 в секунду посылает 1 байт данных, а приложение определяет, что это не то и игнорирует их.

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

Ваш ответ:

Коды форума
Смайлики


Ник:    Пароль       
Отключить смайлики

Все время MSK

Склеить | Разбить | Закрыть | Переместить | Удалить

Новая тема | Написать ответ
Последние сообщения         
Перейти к:

Свяжитесь с нами | skunksworks.net

Copyright © skunksworks.net, 2000-2018

Разработка и техническая поддержка: skunksworks.net


Рейтинг@Mail.ru Яндекс.Метрика