Поменять USB device class на лету.

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Russian to

Threaded View
Hi All,

Есть процессор с USB device на борту. Возникла задача на ходу поменять ему
Device class. Hу скажем был serial поверх USB, а надо теперь стать
mass-storage. Так вот, что-то я не нашел как заставить хост пере-enumerate
этот девайс(хм, а как это по русски сказать?) не отключая/подключая устройство
к USB шине? Манипуляция pull-up резисторами для имитации этого действия, к
сожалению, тоже невозможна.  

/Sam        samutin(ат)hotbox.ru


Re: Поменять USB device class на лету.
Vot kak raz sdelal takoe.

U menia modem kotorii vedet sebia kak standartnii CDC modem. Nado sdelat'
eche odin rezhim raboti i CDC ne udobno.

Kak ia sdelal -- modem vkluchaetsia kak obichnii modem. Esli host znaet chto
eto za device, on posilaet spethial'nuiu kommandu kak k modemu (AT command).
Pri poluchenii etoi kommandi, modem otkluchaet USB i zapuskaet ego opita' no
uzhe s drugimi device id i t.d. Chto pri etom vidit host? On vidit chto odin
device otkluchilsia, a drugoi vkluchilsia.

Edinstvenno chto, v moment perekluchenia na hoste ne dolzhna rabotat' ni
odna proga kotoraia obchaetsia s devisom. V moem sluchae terminal. Windows,
naprimer voobche mozhet povisnut' ili reboot. Linux vozmuchetsia, no potom
rabotaet. Ia prosto sdelal delay v modeme na 5s chtob uspet' otkluchit
terminal.

V tvoem sluchae, prosto shutdown USB controller i re-initialise opiat. U
menia stoit Infineon C165UTAH s USB na bortu i vse rabotaet OK.

Rudolf

--
We've slightly trimmed the long signature. Click to see the full one.
Re: Поменять USB device class на лету.
Thu Jun 03 2004 07:48, Rudolf Ladyzhenskii wrote to Alex Samutin:


 RL> Pri poluchenii etoi kommandi, modem otkluchaet USB i zapuskaet ego opita'
 RL> no uzhe s drugimi device id i t.d. Chto pri etom vidit host? On vidit
 RL> chto odin device otkluchilsia, a drugoi vkluchilsia.


Hасколько я понимаю, чтобы заставить хост понять что Device отключился - надо
снять 3 вольта с D+/D- а потом включить опять. Сделать это можно вытащив
разъем или отключив pull-up резистор (если он управляемый). Hо в моем случае
он не управляемый.
Если просто не отвечать на запросы хоста, то после 3-х попыток хост считает
девайс неисправным и перестает к нему обращаться. А enumeration заново для
него не запускает. Модифицировать драйвер хоста я не могу (Windows).
Соответственно вопрос - можно ли как еще заставит хост заново считать
дескрипторы интерфейсов (или всего устройства целиком)?

/Sam        samutin(ат)hotbox.ru


Re: Поменять USB device class на лету.
Ia proboval na Infineon C165UTAH. Esli v software otkluchit' USB controller,
to host vidit eto kak disconnect. Poprobui -- ti nichego ne teriaesh'.

Rudolf


--
We've slightly trimmed the long signature. Click to see the full one.
Поменять USB device class на лету.
    Привет Alex, а не поговорить ли нам про Re: Поменять USB device class на
лету..

03 Июн 04 08:26, Alex Samutin разговаривал с Rudolf Ladyzhenskii:

 AS> Hасколько я понимаю, чтобы заставить хост понять что Device отключился
 AS> - надо снять 3 вольта с D+/D- а потом включить опять. Сделать это
 AS> можно вытащив разъем или отключив pull-up резистор (если он
 AS> управляемый). Hо в моем случае он не управляемый. Если просто не
 AS> отвечать на запросы хоста, то после 3-х попыток хост считает девайс
 AS> неисправным и перестает к нему обращаться. А enumeration заново
 AS> для
 AS> него не запускает. Модифицировать драйвер хоста я не могу (Windows).
 AS> Соответственно вопрос - можно ли как еще заставит хост заново считать
 AS> дескрипторы интерфейсов (или всего устройства целиком)?

Попробуй resume signaling, может быть после этого хост заново начнёт обращатся
к устройству. Если это не поможет, то можно считать дескрипторы через драйвер
хоста. Обычно такая функция присутствует в api драйвера.


   До скорой встречи,            Nikolay AKA Lazy Dreamer.


Site Timeline