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

Глюк девайсов с програмным USB драйвером на двоядерных ПК

Гость Br.Misha

Привет!

У меня уже третий год стоит комп с одноядерным процессором но позавчера купил ноут с двоядерным.

Подключил я один девайс (делаю его на заказ) к ноуту у тут выскочила какая то ошибка связана с libusb0.dll. Это при том, что на одноядерном(и не только на моем) все работало отлично уже дня 4 (девайс постоянно подключен к компу). Потом я пошелс ноутом в одну лабораторию, которой в подарок сделал устройство для контроля лаюораторных стендов с отображением инфы на компе. Препод который там сидел, сказал что девайс до сих пор отлично работает и иразу небыло никаких сбоев, комп у в лаборатории тоже с одноядерным. Подключил я вместо компа свой ноут у тут опять выскочила ошибка с libusb0.dll, потом притащили в лабораторю стационарный комп с двоядерным проциком - проблема та же.

Симптомы: после такого глюка девайс виден в диспетчере но моя программа для хоста его не видит, рестарт программы не помогает, только дисконект устройства.

Вобщем прошу помощи. Мож у кого нить была похжая ошибка? напишите плиз, даже еси есть какие нить догадки. Просто мне проет нужно во вторник сдавать а он не работает на двоядерках...

Спасибо!

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


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

Вы бы хоть что-нибудь про драйвер вашего устройства написали? Мы используем bulk драйвер на основе примера из DDK и не было замечено подобных проблем под windows 2000/xp/vista/7 в независимости от типа процессора.

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


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

... тут выскочила какая то ошибка связана с libusb0.dll...

Очень информативно... Что за ошибка?

Причем здесь двухъядерность непонятно. Какая ось, на чем пишете? На 95% глюки в программе хоста. Покажите как используете dll. Сейчас глянул, точно два ядра - и все работает...

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


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

У меня, правда, двыядерный, но тоже без проблем третий год... Драйвер - штатный Windows - usbser.sys

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


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

Мож у кого нить была похжая ошибка?
"Похожая" это какая именно? Вы же ничего не описали толком.

Просто мне проет нужно во вторник сдавать а он не работает на двоядерках...
Ну попробуйте отключить второе ядро, раз так спешно. В файле boot.ini в опциях загрузки системы добавьте ключик /ONECPU Строчка должна выглядеть примерно так

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="M$ Windows XP Pro RU ONECPU" /noexecute=optin /fastdetect /usepmtimer /ONECPU

 

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


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

Гость Br.Misha

В этом же девайсе есть ПДУ с RC5. Как оказалось(тестировал), устройство дисконектится когда я долго держу нопку на ПДУ.

Вот в чем была суть проблемы:

Как известно, при вызове прерывания программа переходит к обработчику прерывания, автоматически отключаются все прерывания и включаются только после завершения обработчика. Но для нормальной работы прогрмного драйвера ЮСБ, прерывания нельзя запрещать более чем на 30 циклов (при 16 мгц), хотя на некоторых устройствах я запрещал и на пол секунды но девайсы работали нормально, дисконекта не было. Но почему то в этом устройстве как раз и вылез этот баг .

Вобщем я в самом начале обработчиков прерываний TIMER1_CAPT_vect и TIMER1_COMPA_vect, которые вызываются при приеме комманд с ПДУ, написал sei(); и проблема ищезла.

 

Ну вобщем вродебы все прояснилось, но остается одна загадка: почему девайс до исправления бага нормально работал на всех одноядерных компах и на двух и более - нет?

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


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

Но для нормальной работы прогрмного драйвера ЮСБ, прерывания нельзя запрещать более чем на 30 циклов (при 16 мгц), хотя на некоторых устройствах я запрещал и на пол секунды но девайсы работали нормально, дисконекта не было. Но почему то в этом устройстве как раз и вылез этот баг .

Это не баг, а документированная особенность. Для декодера RC5 использовать прерывания совсем необязательно. Для латания дыр разрешать вложенные, тем более. Достаточно анализировать соответствующие аппаратные флаги. У меня распознает "по честному" пять разных протоколов без единого прерывания...

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


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

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

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

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

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

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

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

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

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

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