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

Почему USB-устройство перезагружает WINDOWS

Почему USB перезагружает WINDOWs ?

 

Какие вообще есть конфликты между USB-устройствами и Windows'ом?

Хоть бы ссылочку какую-нибудь получить.

 

Разрабатываемое устройство перезагружается в самом начале, когда устройство программно отключается от питания(шины USB), а затем включается. :smile3046:

Если устройство до этого не было подключено (кабель), то при подключении не перезагружает Windows(хотя процедура программного включения-выключения всё равно выполняется).

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


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

Если USB device что-либо неправильно посылает host'у с Windows может произойти много чего нехорошего типа появления "синего экрана смерти" или система начинает работать в 100 - 1000 раз медленнее. Резет - из той же оперы.

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


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

Это у Вас что-то с драйвером.

Драйвер Windows'овский

 

Вы писали: ......Если USB device что-либо неправильно посылает host'у

 

Но тогда устройство не определилось бы или не включилось, выдало бы в диспетчере устройств код ошибки

 

Мне бы ссылочки......ссылочки.....вот было бы хорошо-то как а? :wassat:

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


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

Уважаемый! Какие ты хочешь ссылочки? Я делюсь собственным опытом. Меня две недели как-то трахали, что device не работает. А дело было в ошибках по железу. При этом компьютер зависал намертво по десять раз на дню, причем пару раз с летальным исходом (приходилось все переустанавливать).

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


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

Драйвер Windows'овский

Ясное дело, что не Линуксовский. Вы наверно хотели сказать что он не Микросовтовский :crying: . Кривой драйвер может творить с системой все, что угодно. Единственный рецепт - ищите менее глючный драйвер. Другого выхода нет. Сами Вы его не поправите :(

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


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

То что проблема с железом это понятно. Вопрос был в том какая проблема. Поэтому я и написал что драйвер стандартный Windows'a и к нему вопроса быть не может.

 

А ссылки нужны по самой Windows. В часности почему она позволяет постороннему устройству себя перезагружать и не выдаёт при этом каких-нибудь предупреждений? Да и вообще - почему перезагружается Windows?

 

Свою проблему я уже решил. Но решение ещё более запутало. Оказывается я ставил слишком большое значение поля wMaxPacketSize в дескрипторе конечной точке. Даже и не знаю что думать. Может компьютер слишком слабый, а может во мне проблема?

 

То что проблема с железом это понятно. Вопрос был в том какая проблема. Поэтому я и написал что драйвер стандартный Windows'a и к нему вопроса быть не может.

 

А ссылки нужны по самой Windows. В часности почему она позволяет постороннему устройству себя перезагружать и не выдаёт при этом каких-нибудь предупреждений? Да и вообще - почему перезагружается Windows?

 

Свою проблему я уже решил. Но решение ещё более запутало. Оказывается я ставил слишком большое значение поля wMaxPacketSize в дескрипторе конечной точке. Даже и не знаю что думать. Может компьютер слишком слабый, а может во мне проблема?

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


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

Насчет того, что ты проблему решил - это скорее всего иллюзия. Обмен дескрипторами происходит на этапе usb enumeration, т.е. когда еще твой драйвер не подгружен. Посмотри внимательно, нет ли звона на фронтах сигналов.

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


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

Хочется уточнить характер перезагрузки:

1 вариант. После подключения устройства Windows корректно завершает свою работу и аккуратно перезагружается. В таком случае дело действительно в драйверах или в системе целом. На мой взгляд такое развитие событий неправдоподобно.

2 вариант. Подключайете устройство и компьютер сразу уходит на перезагрузку как после нажатия на Reset. В таком случае скорее всего проблема в элементарной электрической совместимости вашего устройства и в целом всего компьютера. Не несет ли оно на себе потенциал? Напрямую либо через емкость? Установлены ли защитные цепи от выбросов по сигнальным цепям и питающим? Не потребляет ли оно слишком большой ток при включении от USB шины? Попробуйте подключить устройство к другим компьютерам, может материнская плата чувствительная оказалась к недоработкам в вашем устройстве.

3 вариант. Windows выдает кучу ошибок уровня ядра, выходит в синий экран и после дампа перегружается. Проблема с драйвером, ваше устройство скорее всего не при чем. Если часть вашего приложения работает в ражиме ядра - ищите там. Если только во внешнем кольце, то вы не при чем.

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


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

Замечено, что если на этапе енумерации устройство отваливается, то виндюки валятся в перезагрузку без объяснения причин. У меня устройство, успев послать пару дескрипторов уходило в ресет - виндюки падают с некоторой вероятностью (видимо в зависимости от момента).

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


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

А ссылки нужны по самой Windows. В часности почему она позволяет постороннему устройству себя перезагружать и не выдаёт при этом каких-нибудь предупреждений? Да и вообще - почему перезагружается Windows?

 

Вы не совсем правильно интерпретируете проблему. Винда уходит на перезагрузку не потому, что драйвер ее перегружает, а потому, что в систему возникает критический сбой, который несовсестим с дальнейшим функционированием системы (причем такой, что даже до синего экрана не доходит).

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


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

Еще есть вариант с серийным номером.

У нас вында перегружалась если поключались два наших HID с одинаковыми серийниками, причем не на всех машинах и системах. (имеется в виду ХР, ХР+SP и т.д.)

ЗЫ. Linux не падал даже если обнаружил два устройства с одинаковыми серийниками. :)

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


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

Подпись "Мелклсофт сорп." такая же виртуализация, как и вся память в РС :) На самом деле самая объемная часть системы - это хост контроллер, а его драйвер пишется непосредственно с учетом железа материнки. А кем же пишутся дрова распространенные на Асус или какой нить Элттгруп как не производителями - теми же китайцами? Так что я тоже думаю, что причина в драйвере, в котором не предусмотрен вариант какой-то некорректной ситуации и его писатели не предусмотрели обработчик, который корректно выводит систему из нее. Самое простое убедится в этом - попробовать на другой машине с другим железом. А решение - либо поискать другой драйвер, либо методом тыка обойти некорректные безвыходные ситуации.

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


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

Подпись "Мелклсофт сорп." такая же виртуализация, как и вся память в РС :) На самом деле самая объемная часть системы - это хост контроллер, а его драйвер пишется непосредственно с учетом железа материнки. А кем же пишутся дрова распространенные на Асус или какой нить Элттгруп как не производителями - теми же китайцами? Так что я тоже думаю, что причина в драйвере, в котором не предусмотрен вариант какой-то некорректной ситуации и его писатели не предусмотрели обработчик, который корректно выводит систему из нее. Самое простое убедится в этом - попробовать на другой машине с другим железом. А решение - либо поискать другой драйвер, либо методом тыка обойти некорректные безвыходные ситуации.

 

У USB аппаратные интерфейса хостов стандартизованы. Всего три варианта, два для USB 1.1, один - для USB 2.0. Драйвера для них писаны Майкрософтом. Драйвера довольно кривые. Возможно, лучше чем у многого китайского железа - но, тем не менее, багов в них исправлена было очень много. Вообще, с драйверами у Майкрософтов длительное время было плохо - достаточно было порыться в примерах из DDK, чтобы это понять. В последнее время ситуация улучшалась.

 

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

 

Для отладки может быть полезно подключить kernel debugger через RS-232 и даже поставить checked build операционки.

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


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

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

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

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

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

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

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

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

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

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