Jump to content

    
Sign in to follow this  
Kruftin

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

Recommended Posts

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

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

Edited by Kruftin

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Ну а например с процессора с поддержкой 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 г.

Share this post


Link to post
Share on other sites

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

Share this post


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

 

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


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

 

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

Share this post


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

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

 

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

Share this post


Link to post
Share on other sites
...Как под Windows скоростное устройство USB 2.0 заставить работать на медленной скорости как по USB 1.1 ?...

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

Share this post


Link to post
Share on other sites
Использовать внешний USB хаб, поддерживающий только USB 1.1

 

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

 

Share this post


Link to post
Share on other sites

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

 

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

 

Edited by Ноль с переносом

Share this post


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

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

 

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

 

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

Share this post


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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this