Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Переход WinXPSP2->SP3, как исправить проблему с usbser.sys?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
OlegHmt
Здравствуйте

Посоветуйте, пожалуйста, как можно исправить такую ситуацию.
В своё время, разрабатывалось устройство на базе AT91SAM7X, которое, помимо всего прочего, управлялось с компьютера через USB с использованием виртуального COM-порта на базе драйвера usbser.sys. В качестве основы при этом был использован пример из FreeRTOS.
Устройство нормально заработало, в связи с выходом SP3 появились проблемы - неработоспособность даной конфигурации.

Более-менее просмотрев интернет в поиске решения проблемы минимальными средствами, увидел предложения отказываться от использования usbser.sys или заменять его файлом из дистрибутива WinXPSP2. С первым вариантом не очень хочется связываться, так как времени для написания собственного драйвера (а, в основом, для изучения как это делать) особенно нету. В другом варианте недостаток - виндовс, по словам пользователей устройства, иногда не даёт заменить драйвер возвращая старый на место. Да и непонятно, как отобъётся замена файла более старым на работоспособность других частей виндовс.

Я попробовал переименовать старый usbser.sys, подправить inf всюду где встречается его название и скормить его через update drivers. На моей системе (WinXPSP2) - этот вариант прошёл без проблем, но на некоторых системах (и SP2, и SP3) Windows не хочет производить замену выдавая при установке "нового" переименованного драйвера - "The name is already in use as either a service name or a service display name".

Есть ли какие-то другие решения проблемы?

Спасибо
Genadi Zawidowski
Цитата(OlegHmt @ Aug 21 2009, 12:08) *
Устройство нормально заработало, в связи с выходом SP3 появились проблемы - неработоспособность даной конфигурации.

Более-менее просмотрев интернет в поиске решения проблемы минимальными средствами, увидел предложения отказываться от использования usbser.sys или заменять его файлом из дистрибутива WinXPSP2.


Пытались ли разбираться, что именно приизошло? Какие проявления неработоспособности? Программа не находит виртуальный порт? Устройствот как "неопознанный" девайс выглядит? Если опозналось - хипертерминал открывает устройство? Что за .inf используется для установки?
Такие вопросы потому, что у меня с моими CDC устройствами НЕ использовавшими FreeRTOS такой проблемы при переходе под SP3 не возникало.
microsin
Как самый простой вариант - можно переделать Ваше устройство на USB HID. Тогда вообще никакие драйвера не нужны, просто пишете ПО, которое с Вашим HID работает (по заданным параметрам VID и PID). Есть хорошие рабочие примеры для IAR от Atmel. ПО хоста можно написать как на вызовах функций из HID.dll (библиотечка от Микрософт, примеры в Интернете есть), так и с помощью вызова функций из libusb (свободная библиотека, примеры тоже есть). В случае libusb код легко будет работать как на Windows, так и на *NIX.

[См. также]

1. AT91SAM7X256 - пишем USB HID и ПО хоста для него
2. IAR EW ARM: как сделать USB Mass Storage Device на основе MMC/SD
=F8=
Делал виртуальный com на основе примера из иара. Тоже CDC, тоже usbser.sys, никаких проблем с SP3, для висты пришлось inf файл передалать.
prottoss
Совсем недавно сделал подобное устройство на SAM7X. Работает нормально на WinXP SP2(3)/Vista/Seven 32/64 bit. Возможно, проблема в дескрипторе устройства. Если можно, покажите его.
overloaded
То что наблюдал я - в СП3, драйвер посылает девайсу zero length packet после пакета размером 32 байта (и размере конечной точки 64) - чего делать не должен. В СП2 по идее не посылает даже когда нужно (сам правда не проверял, но читал где-то). Для теста просто попробуйте избежать пакетов кратных 32б и проверить работоспособность )) Ведь может быть связано и не с этим..
prottoss
Цитата(overloaded @ Jan 12 2010, 04:17) *
То что наблюдал я - в СП3, драйвер посылает девайсу zero length packet после пакета размером 32 байта (и размере конечной точки 64) - чего делать не должен.
А где написано, что этого делать НЕЛЬЗЯ??? Не понятно, чего тут страшного? Получили пакет нулевой длины, погрустили что нет данных и пошли работать дальшеsmile.gif
Alechek
Можно, но вот беда в том, что драйвер в устройстве поверяется на работоспособность с существующим usbser. А как иначе?
Сам наступал на грабли, когда все начали переходить на SP3. Драйвер в устройстве к таким фокусам оказался не готов.
Только мне показалось что посылается не при 32 байтах, а при 8. Пришлось делать заплатки на стороне компьютера - посылать данные размером не кратным 8-ми.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.