Printable Version of Topic
Click here to view this topic in its original format
Forums > Глюкодром > Программисты - нужна помощь!, Работа с драйвером от USB девайса


Posted by: VxWorks on 20-01-2006, 17:36
ДАНО

Устройство (по USB интерфейсу) подключено к компу 24х7. Таких устройств в системе 4. Периодически, так происходит, что Винда забывает о наличии одного из них в системе.
Производитель девайса кроет матом комп, винду, Билла Гейтса и господа Бога. Но сам он, естественно, не виноват ни в чем. Документации на драйвер НЕТ, но я знаю адреса, по которым он общается с девайсом, так что послать обычный запрос и обработать ответ, теоретически можно.

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

ТРЕБУЕТСЯ

Определить в Винде - живы ли ВСЕ девайсы. Если нет, симулировать отключение-включение, чтобы Винда сделала enumeration (хз как по русски).
Сделать это надо мне, но я в Винде ни в зуб ногой. Из девелоперского софта - только MS VS Express.
Программа, которая будет такое делать, не должна сидеть резидентом - отработала и хватит. То есть, действовать по принципу "когда понадобится, вас позовут". Консольная аппликация, есс-но.

Posted by: mts on 20-01-2006, 18:04
Не програмное решение, но всё же. Попробуй запретить винде возможность отключения питания на USB "для экономии электроэнергии" :diablo:

Posted by: VxWorks on 20-01-2006, 18:20
Это я уже делал - не действует :)

Posted by: inzerus on 20-01-2006, 19:11
Я сам не пробовал, но есть такая программка - DevCon (описание (http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q311272, сама программа (http://download.microsoft.com/download/1/1/f/11f7dd10-272d-4cd2-896f-9ce67f3e0240/devcon.exe). Судя по описанию, вполне подойдет для опроса/reset-a USB устройств. И к тому же, консольная.

Другая идея - а что если просто из командной строки делать "dir U:" (или как там у вас в системе устройство называется) - может это реактивирует USB устройства?

Posted by: VxWorks on 20-01-2006, 20:32
Под адресом имелось в виду, что я знаю физический адрес (типа 0x8005AEAE) устройства. Как на такое можно сделать Dir? :)

Posted by: inzerus on 20-01-2006, 22:50
QUOTE (VxWorks @ 20-01-2006, 20:32):
Под адресом имелось в виду, что я знаю физический адрес (типа 0x8005AEAE) устройства. Как на такое можно сделать Dir? :)
Значит, dir пролетает. :)
А как насчет DevCon - подойдет?

Posted by: VxWorks on 20-01-2006, 23:29
Посмотрю чуть попозже :) Когда до системы доберусь :)

Posted by: UGIN on 20-01-2006, 23:29
QUOTE:
USBINFO™ allows you to browse for and select a USB Device for Performance Test, execute the built-in USB Device Stop/Restart Process, and start running a Performance Test in just a few seconds and with just a few mouse clicks - On Windows 2000/XP the whole process is seamless and fully automatic.

Если такое поможет - брошу файл или линк..
Взято - отсюда. (http://lpt.usbfireinfo.com/Information/#Features

Posted by: Set on 20-01-2006, 23:46
http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q259697 (http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q259697

Posted by: VxWorks on 21-01-2006, 00:16
Спасибо! В понедельник наложу свои лапы на систему, посмотрим, что из этого получится.

Posted by: obaldin on 21-01-2006, 01:45
QUOTE (VxWorks @ 20-01-2006, 19:32):
физический адрес (типа 0x8005AEAE)
А ты знаешь, что тебе в этот адрес надо сказать, чтобы оно ресетнулось?

Posted by: VxWorks on 21-01-2006, 03:28
Сказать-то я знаю, но при определенных событиях, Винда девайс просто теряет :( Соответственно, таймаут и device not found.

Posted by: Michael2000 on 21-01-2006, 05:14
Железо надо прямое покупать...и БИОС обновлять...
(не обижайся,ворчу...старею).

Posted by: FiL on 21-01-2006, 08:03
странно, что программисты (а ведь такие явно есть на нетлабе) не отзываются. Всё админы/техники.

P.S. Если кого обидел по незнанию, то порстите. Не со зла.

Posted by: admik on 21-01-2006, 08:57
FiL пятница, вечер/ночь. какое тут юсб

Posted by: obaldin on 21-01-2006, 13:24
FiL, область уж больно специфическая. Но и то, вроде, в основном рассказали.
Самое близкое к теме, что я когда-то делал, была просто задача пречислить все USB-устройства, отобрать из них нужные по vendor id и вызвать на них парочку IOCTL'ов. Есдинственная хитрость была та, что среди USB-устройств могут быть USB-контроллеры и тогда нужно рекурсивно смотреть, что висит на них.

Posted by: VxWorks on 21-01-2006, 13:36
QUOTE (Michael2000 @ 21-01-2006, 02:14):
Железо надо прямое покупать...и БИОС обновлять...
(не обижайся,ворчу...старею).
Железо это очень специфическое - JTAG BDM. Стоит что-то около 2К баксов за 1 штуку. То, что оно кривое, знают все, но вариантов нет - либо этот девайс, либо iSystems за 25 штук.

Posted by: Michael2000 on 21-01-2006, 15:09
QUOTE (FiL @ 21-01-2006, 06:03):
странно, что программисты (а ведь такие явно есть на нетлабе) не отзываются. Всё админы/техники.

P.S. Если кого обидел по незнанию, то порстите. Не со зла.
Ну потому что надо начать а там уже по ходу дела решать по одной.Я вообще на расстоянии никогда не умел,у меня с машинами очный секс. Да и привык к домашним конфигам...
А народ до понедельника глядишь отзовется...

Posted by: inzerus on 21-01-2006, 16:28
QUOTE (FiL @ 21-01-2006, 08:03):
странно, что программисты (а ведь такие явно есть на нетлабе) не отзываются. Всё админы/техники.

P.S. Если кого обидел по незнанию, то порстите. Не со зла.
Программисты бывают разные. :) Я, например, программист, но программированием USB и похожими задачами никогда не занимался.

Posted by: Set on 25-01-2006, 00:59
Не успел Воркс... повязали ребят из MI-5 вместе со злополучным камнем... :laugh:

Posted by: VxWorks on 25-01-2006, 01:18
QUOTE (Set @ 24-01-2006, 21:59):
Не успел Воркс... повязали ребят из MI-5 вместе со злополучным камнем... :laugh:
Никто никого не повязал... кроме того, что проект накрылся медным тазом из-за начальства, которое выдало гениальную фразу еще в понедельник утром : "клиенту это не нужно, а если и нужно, то х.. с ним, с таким клиентом". Уродыбл ©

Завтра поеду к этому клиенту, разбираться, может, он на мое начальство наедет и мне дадут заняться хоть чем-нибудь интересным...

Posted by: obaldin on 25-01-2006, 02:25
QUOTE (VxWorks @ 25-01-2006, 00:18):
может, он на мое начальство наедет и мне дадут заняться хоть чем-нибудь интересным...
А тебя прикалывает такая возня с USB?

Posted by: VxWorks on 25-01-2006, 02:46
QUOTE (obaldin @ 24-01-2006, 23:25):
QUOTE (VxWorks @ 25-01-2006, 00:18):
может, он на мое начальство наедет и мне дадут заняться хоть чем-нибудь интересным...
А тебя прикалывает такая возня с USB?
Ну, мне хоть бы чем заняться, лишь бы не писать маячащие на горизонте два Application Note - первая о том, как устанавливать программу отладки на систему с двумя микроконтроллерами, подключенными через JTAG scan chain (хз как это по-русски будет), а вторая - наглядное пособие о том, как разрабатывать код, который можно перемещать из одного участка памяти в другой (в смысле - загружаться во флешку, а исполняться из RAM) в произвольный момент времени... То есть, программу-пример я уже написал и давно, но начальство требует, чтобы я объяснил, как это все работает, причем так, чтобы даже самому заклятому индусу было понятно. Короче, "планчик-конспектик" на 40 страничках каждый...

Честное слово, я бы лучше с USB повозился...

Posted by: obaldin on 25-01-2006, 02:48
QUOTE (VxWorks @ 25-01-2006, 01:46):
"планчик-конспектик" на 40 страничках каждый...

Честное слово, я бы лучше с USB повозился...
Ну, при таком богатстве выбора -- да, USB выглядит очень привлекательно :lol:

Posted by: Set on 25-01-2006, 23:42
Это точно, там вроде как одной API функцией весь процесс запускается. :actu:

Posted by: obaldin on 25-01-2006, 23:47
Процесс чего?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)