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

Hi All,

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

/Sam samutin(ат)hotbox.ru

Reply to
Alex Samutin
Loading thread data ...

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

Reply to
Alex Samutin

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

Reply to
Rudolf Ladyzhenskii

Ia proboval na Infineon C165UTAH. Esli v software otkluchit' USB controller, to host vidit eto kak disconnect. Poprobui -- ti nichego ne teriaesh'.

Rudolf

Reply to
Rudolf Ladyzhenskii

Привет 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.

Reply to
Nikolay Hatuntsev

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.