Перейти к содержанию
    

Определение USB устройства

Подскажите что должно быть выполнено со стороны устройства slave usb для того, чтобы данное устройство было определено ПК(какое должно быть состояние сигналов)? Т.е. есть устройство slave usb и его надо протестировать(записать, прочитать из него), какие программы для этого необходимы?

Ну или чем можно послать данные по определенному порту, если устройство usb slave не отобразилось.

Изменено пользователем Kruftin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Процесс называется энумерация. При этом должно выполниться очень много чего, согласно USB протокола. Тут нельзя говорить про состояние сигналов. Сигналы - это самое начало процесса. Нужно подтянуть D+ или D- к 3.3 В (+ для full speed, - для low speed). Если устройство не подключено, то на него ничего нельзя послать. Если подключилось - то нужен в общем случае для начала драйвер. Если устройство стандартного класса - то драйвер уже есть в системе. Какая программа с ним будет общаться, зависит от класса устройства. Так что ответа в общем виде не существует. Рассказывайте подробнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну а например с процессора с поддержкой usb можно сэмулировать флэшку, дескриптор который вычитал программой мониторинга usb порта?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну а например с процессора с поддержкой usb можно сэмулировать флэшку, дескриптор который вычитал программой мониторинга usb порта?

Можно. Но нужно прочитать следующие книги:

П. Агуров "Интерфейс USB. Практика использования и программирования" 2004 г.

П. Агуров "Практика программирования USB" 2006 г.

Jan Axelson "USB Complete. The Developer's Guide. Fourth Edition" 2009 г.

Jan Axelson "USB Mass Storage. Designing and Programming Devices and Embedded Hosts" 2006 г.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо! Почитаю, правда там что-то так много всего надо заполнять я гляжу. Ну и что будет если у меня проц с интерфейсом usb определится как флешка? При попытке записи я так понимаю usb выдаст ошибку доступа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну а например с процессора с поддержкой usb можно сэмулировать флэшку, дескриптор который вычитал программой мониторинга usb порта?

 

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

Работа того же типа описана в интернете в отношении джейлбрейка для приставок PlayStation (PS3), чтобы в нелицензированные игры можно было играть. :). Там тоже подсмотрели протокол и сделали эмулятор.

Вы тоже можете, подсмотрев дискрипторы, сделать так, что ваше устройство будет опознаваться, как флешка или как любое другое USB-устройство, однако проблема в том, чтобы и далее своей роли соответствовать. А то назваться-то можно и груздем, но потом придется полезать в кузов :), когда комп начнет на псевдофлешку писать. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну т.е. я просто беру вычитываю дескриптор и нужные мне данные любого устройства, которым хочу представиться для ПК, а затем просто посылаю их без всяких задержек через процессор на ПК и все должно быть гуд? Т.е. не начнет ли ПК что-нибудь посылать по поводу драйвера и т.п. инфы. Или лучше сначала взять флешку и поставить к ней драйвер, а потом уже подключать процессор с usb?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну т.е. я просто беру вычитываю дескриптор и нужные мне данные любого устройства, которым хочу представиться для ПК, а затем просто посылаю их без всяких задержек через процессор на ПК и все должно быть гуд? Т.е. не начнет ли ПК что-нибудь посылать по поводу драйвера и т.п. инфы. Или лучше сначала взять флешку и поставить к ней драйвер, а потом уже подключать процессор с usb?

 

То, что "сначала сидело" в USB-гнезде никакой роли не играет. Новое устройство обязательно проходит свой процесс енумерации и привязки к соответствующему ему драйверу. Опять же для флешек, начиная с WinXP, отдельные драверы не практикуются - практически все флешки работают под управлением стандартного драйвера USBSTOR.SYS.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а затем просто посылаю их без всяких задержек через процессор на ПК и все должно быть гуд?

Совсем НЕ ГУД. Каждому дескриптору свое время и строго по запросу от ПК.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос к знатокам, может кто знает? Не по теме, но на всякий случай. Не люблю я новые темы создавать

 

Как под Windows скоростное устройство USB 2.0 заставить работать на медленной скорости как по USB 1.1 ?

 

Только, пожалуйста, не нужно доказывать, что мне это не надо. Ещё как надо, и надо всем: половина 3G модемов глючат из-за скоростного USB, а когда втыкаешь в медленный USB, работают нормально.

 

Заранее спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...Как под Windows скоростное устройство USB 2.0 заставить работать на медленной скорости как по USB 1.1 ?...

Использовать внешний USB хаб, поддерживающий только USB 1.1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Использовать внешний USB хаб, поддерживающий только USB 1.1

 

Но ведь флешка-то на USB2.0 нормально работает в порту USB1.1 без всяких промежуточных хабов. Разве не так? :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всё так. Глючат только модемы. Хабы USB 1.1 уже не сохранились, не достанешь. Порты 1.1 тоже не в моде.

 

Говорят, на некоторых биосах можно выставить режим USB 1.1, но не у всех такие биосы. Поэтому нужен чисто программный способ.

 

Изменено пользователем Ноль с переносом

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всё так. Глючат только модемы. Хабы USB 1.1 уже не сохранились, не достанешь. Порты 1.1 тоже не в моде.

Говорят, на некоторых биосах можно выставить режим USB 1.1, но не у всех такие биосы. Поэтому нужен чисто программный способ.

 

Что касается устройства, то любое из расчитанных на 2.0 может работать, как 1.1. Только частоту PLL оно у себя должно другую выставить и в дескрипторе, когда тот попросят, указать USB_SPECIFICATION не 0x200, а 0x110.

 

Плохо только то, что устройство не может знать, к какому порту его присоединили, потому что именно ему дают команду представиться, запросив посылку, где кроме PID/VID должно указать еще и USB_SPECIFICATION. Т.е. процедура такова, что компьютер должен подстраиваться к устройству, а не наоборот. При большом желании, конечно, можно рычажок или джампер поставить, по состоянию замкнутости которого МК будет активировать разные скорости USB, только вряд ли кто захочет этим делом заморачиваться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...Хабы USB 1.1 уже не сохранились, не достанешь.... Поэтому нужен чисто программный способ.

В Диспетчере устройств в ветке "Контроллеры USB" отключите "Стандартный расширенный PCI - USB хост-контроллер". После этого все USB порты компьютера будут поддерживать только протокол обмена USB 1.1, соответственно только скорости обмена Full Speed (12 Мбит/сек) и Low Speed (1.5 Мбит/сек).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...