Гость Br.Misha 1 октября, 2010 Опубликовано 1 октября, 2010 · Жалоба Привет! У меня уже третий год стоит комп с одноядерным процессором но позавчера купил ноут с двоядерным. Подключил я один девайс (делаю его на заказ) к ноуту у тут выскочила какая то ошибка связана с libusb0.dll. Это при том, что на одноядерном(и не только на моем) все работало отлично уже дня 4 (девайс постоянно подключен к компу). Потом я пошелс ноутом в одну лабораторию, которой в подарок сделал устройство для контроля лаюораторных стендов с отображением инфы на компе. Препод который там сидел, сказал что девайс до сих пор отлично работает и иразу небыло никаких сбоев, комп у в лаборатории тоже с одноядерным. Подключил я вместо компа свой ноут у тут опять выскочила ошибка с libusb0.dll, потом притащили в лабораторю стационарный комп с двоядерным проциком - проблема та же. Симптомы: после такого глюка девайс виден в диспетчере но моя программа для хоста его не видит, рестарт программы не помогает, только дисконект устройства. Вобщем прошу помощи. Мож у кого нить была похжая ошибка? напишите плиз, даже еси есть какие нить догадки. Просто мне проет нужно во вторник сдавать а он не работает на двоядерках... Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 1 октября, 2010 Опубликовано 1 октября, 2010 · Жалоба Вы бы хоть что-нибудь про драйвер вашего устройства написали? Мы используем bulk драйвер на основе примера из DDK и не было замечено подобных проблем под windows 2000/xp/vista/7 в независимости от типа процессора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Goodefine 0 1 октября, 2010 Опубликовано 1 октября, 2010 · Жалоба ... тут выскочила какая то ошибка связана с libusb0.dll... Очень информативно... Что за ошибка? Причем здесь двухъядерность непонятно. Какая ось, на чем пишете? На 95% глюки в программе хоста. Покажите как используете dll. Сейчас глянул, точно два ядра - и все работает... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 1 октября, 2010 Опубликовано 1 октября, 2010 · Жалоба У меня, правда, двыядерный, но тоже без проблем третий год... Драйвер - штатный Windows - usbser.sys Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 1 октября, 2010 Опубликовано 1 октября, 2010 · Жалоба Мож у кого нить была похжая ошибка?"Похожая" это какая именно? Вы же ничего не описали толком. Просто мне проет нужно во вторник сдавать а он не работает на двоядерках...Ну попробуйте отключить второе ядро, раз так спешно. В файле 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 2 октября, 2010 Опубликовано 2 октября, 2010 · Жалоба В этом же девайсе есть ПДУ с RC5. Как оказалось(тестировал), устройство дисконектится когда я долго держу нопку на ПДУ. Вот в чем была суть проблемы: Как известно, при вызове прерывания программа переходит к обработчику прерывания, автоматически отключаются все прерывания и включаются только после завершения обработчика. Но для нормальной работы прогрмного драйвера ЮСБ, прерывания нельзя запрещать более чем на 30 циклов (при 16 мгц), хотя на некоторых устройствах я запрещал и на пол секунды но девайсы работали нормально, дисконекта не было. Но почему то в этом устройстве как раз и вылез этот баг . Вобщем я в самом начале обработчиков прерываний TIMER1_CAPT_vect и TIMER1_COMPA_vect, которые вызываются при приеме комманд с ПДУ, написал sei(); и проблема ищезла. Ну вобщем вродебы все прояснилось, но остается одна загадка: почему девайс до исправления бага нормально работал на всех одноядерных компах и на двух и более - нет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Goodefine 0 2 октября, 2010 Опубликовано 2 октября, 2010 · Жалоба Но для нормальной работы прогрмного драйвера ЮСБ, прерывания нельзя запрещать более чем на 30 циклов (при 16 мгц), хотя на некоторых устройствах я запрещал и на пол секунды но девайсы работали нормально, дисконекта не было. Но почему то в этом устройстве как раз и вылез этот баг . Это не баг, а документированная особенность. Для декодера RC5 использовать прерывания совсем необязательно. Для латания дыр разрешать вложенные, тем более. Достаточно анализировать соответствующие аппаратные флаги. У меня распознает "по честному" пять разных протоколов без единого прерывания... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться