Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Драйвер usbser
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
mr.smart
Доброго всем Нового Года и Привет!
Для AT91SAM7S256 написал небольшую программу общения с платой через hyper terminal с задействованием CDC. В данном проекте используется usbser.sys.
Проблема в том, что программа работает некорректно в Windows XP SP3 (зависает при попытке отправить пакет хосту), в то время как в Windows 7 все работает как надо. Подозрение падает на usbser.sys. Плюс я слышал, что для XP данный драйвер немного непопулярен из-за своей кособокости, поэтому люди, работающие в ХР, меняют стандартный usbser на аналог из Win2000.

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

Ну и было бы идеально если бы кто-нибудь скинул мне файлик юсбсера для Вин2000 или любой, с которым он успешно работает в ХР. Буду благодарен.
Aurochs
Вот драйвер, которым я уже в течение 3-х лет пользуюсь на XP SP3.
Работает надежно и без нареканий. Единственное - тормозной.
Скорости больше 70 Кб/сек мне из него выжать не удалось.
Xenia
Уже давно работаю под WinXP с вируальным COM-портом и жаловаться не приходилось. Сейчас у меня тоже SP3 стоит, но и здесь на usbser.sys у меня нет нареканий. Правда я работаю не с AT91SAM, а с AT90USB, но это не должно менять дело.

Драйвер, который предложил Aurochs, имеет:
Product Version 5.1.2600.2180
а родной от SP3:
Product Version 5.1.2600.5512
но это не кажется мне существенным, т.к. и с прошлыми SP у меня работало ровно так же.

А вот какие-нибудь нарушения протокола со стороны внешнего устройства вполне могут быть причиной нарушений.
Единственный минус, который я у usbser.sys знаю, так это неспособность самостоятельно восстанавливать коннект, если внешнее устройство "отвалилось". Например, уснуло или вовремя не проснулось. Или протокол нарушило, не ответив на запрос в установленные сроки.
На предельных скоростях я его не гоняла, но лишь потому, что не было повода.
mr.smart
Спасибо за файлик, поставил его... Ничего не изменилось... Блин, теперь даже не знаю куда смотреть.
Может быть хоть у Вас будет идея почему данный код работает на одной машине и не работает на другой (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. Может ли проблема быть в этом?
npopok
Добрый день. проблема точно такая-же.Есть приложение работающее по виртуальному ком-порту с использованием драйвера usbser.sys. На 80% машин(Win7,XP) приложение работает четко,но на некоторых из машин соединение устанавливается,но чтения из устройства не происходит.Правильно ли я понимаю,что дело именно в драйвере?Что с этим можно сделать?
Xenia
Цитата(npopok @ Feb 11 2011, 16:15) *
Добрый день. проблема точно такая-же.Есть приложение работающее по виртуальному ком-порту с использованием драйвера usbser.sys. На 80% машин(Win7,XP) приложение работает четко,но на некоторых из машин соединение устанавливается,но чтения из устройства не происходит.Правильно ли я понимаю,что дело именно в драйвере?Что с этим можно сделать?

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