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

Драйвер usbser

Доброго всем Нового Года и Привет!

Для AT91SAM7S256 написал небольшую программу общения с платой через hyper terminal с задействованием CDC. В данном проекте используется usbser.sys.

Проблема в том, что программа работает некорректно в Windows XP SP3 (зависает при попытке отправить пакет хосту), в то время как в Windows 7 все работает как надо. Подозрение падает на usbser.sys. Плюс я слышал, что для XP данный драйвер немного непопулярен из-за своей кособокости, поэтому люди, работающие в ХР, меняют стандартный usbser на аналог из Win2000.

 

Вопросы: Сталкивались ли вы с проблемами Вашего usbser.sys и если да, то как вы их решали?

Например у меня возникли трудности с удалением драйвера. После удаления или изменения usbser.sys система сразу же его восстанавливает. Удалил все его бэкапы из папки WINDOWS, а система все-равно откуда-то его восстанавливает... Хотя вроде через безопасный режим я заменял его на другие юсбсеры которые нашел в интернетах (не знаю для какой ОС они), эффект с зависанием программы остается.

 

Ну и было бы идеально если бы кто-нибудь скинул мне файлик юсбсера для Вин2000 или любой, с которым он успешно работает в ХР. Буду благодарен.

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


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

Вот драйвер, которым я уже в течение 3-х лет пользуюсь на XP SP3.

Работает надежно и без нареканий. Единственное - тормозной.

Скорости больше 70 Кб/сек мне из него выжать не удалось.

usbser.zip

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


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

Уже давно работаю под WinXP с вируальным COM-портом и жаловаться не приходилось. Сейчас у меня тоже SP3 стоит, но и здесь на usbser.sys у меня нет нареканий. Правда я работаю не с AT91SAM, а с AT90USB, но это не должно менять дело.

 

Драйвер, который предложил Aurochs, имеет:

Product Version 5.1.2600.2180

а родной от SP3:

Product Version 5.1.2600.5512

но это не кажется мне существенным, т.к. и с прошлыми SP у меня работало ровно так же.

 

А вот какие-нибудь нарушения протокола со стороны внешнего устройства вполне могут быть причиной нарушений.

Единственный минус, который я у usbser.sys знаю, так это неспособность самостоятельно восстанавливать коннект, если внешнее устройство "отвалилось". Например, уснуло или вовремя не проснулось. Или протокол нарушило, не ответив на запрос в установленные сроки.

На предельных скоростях я его не гоняла, но лишь потому, что не было повода.

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


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

Спасибо за файлик, поставил его... Ничего не изменилось... Блин, теперь даже не знаю куда смотреть.

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

 

Вот моя функция передачи данных хосту:

static uint AT91F_UDP_Write(AT91PS_CDC pCdc, const char *pData, uint length)
{
    AT91PS_UDP pUdp = pCdc->pUdp;
    
    // проверяем, готов ли юсб к передаче
    if (pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXPKTRDY) {
      return 0;
    }
    pUdp->UDP_FDR[AT91C_EP_IN] = 0x73; // хотим передать символ "t"
    pUdp->UDP_CSR[AT91C_EP_IN] |= AT91C_UDP_TXPKTRDY; // готовы отправлять
    while ( !(pUdp->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXCOMP) ); // ждем пока нам не вернут TXCOMP
    pUdp->UDP_CSR[AT91C_EP_IN] &= ~(AT91C_UDP_TXCOMP); // обнуляем TXCOMP
}

 

Первое использование этой функции происходит нормально. При повторном ее использовании не приходит бит TXCOMP, и программа не выходит из цикла.

В программе я никак не настраивал и вообще не использовал блок управления прерываниями AIC. Может ли проблема быть в этом?

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


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

Добрый день. проблема точно такая-же.Есть приложение работающее по виртуальному ком-порту с использованием драйвера usbser.sys. На 80% машин(Win7,XP) приложение работает четко,но на некоторых из машин соединение устанавливается,но чтения из устройства не происходит.Правильно ли я понимаю,что дело именно в драйвере?Что с этим можно сделать?

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


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

Добрый день. проблема точно такая-же.Есть приложение работающее по виртуальному ком-порту с использованием драйвера usbser.sys. На 80% машин(Win7,XP) приложение работает четко,но на некоторых из машин соединение устанавливается,но чтения из устройства не происходит.Правильно ли я понимаю,что дело именно в драйвере?Что с этим можно сделать?

Чаще всего не драйвер виноват, а плохой контакт или наводки. Вставляю в USB-разъем на фронтальной панели - не работает (а то и не определяется), а вставляю в зад (разъем на материнке) - всё OK. Даже санацию проводила причин такого поведения. Оказалось, что в один кабель завели жилы от USB-порта и от читателя MMC/SDC-карт, да и внутри не пайка, а соединение "на трении". Отюда и глюки. Не любит USB 2.0 хилых соединений.

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


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

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

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

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

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

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

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

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

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

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