Используется устройство с USB CDC. Да, описанные мною выше функции работы с USB устройством, работать не будут, т.к. они работают с драйвером winusb.sys. В данном же случае, для работы с CDC потребуется использовать свой inf c установкой usbser.sys драйвера. И далее можно будет работать с подключаемым девайсом, как с виртуальным COM портом, обычными COM-овскими функциями CreateFile/WriteFile/ReadFile. Однако возникла проблема при установке usbser.sys драйвера. USB CDC на устройстве реализовано на микрочипе Atmel at91sam7s256. Подключаю девайс к компу, оно увиделось и Windows просит установить нужный драйвер, в диалоге установки выбираю «Установить с диска» и указываю нужный inf файл, жму OK, но появляется сообщение «В указанном месте отсутствуют сведения об оборудовании». Inf файл взят стандартный, из документации с сайта Atmel //**************************************************************************// [Version] ; Version section Signature="$Chicago$" ; All Windows versions Class=Ports ; This is a serial port driver ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} ; Associated GUID Provider=%ATMEL% ; Driver is provided by ATMEL DriverVer=09/12/2006,1.1.1.5 ; Driver version 1.1.1.5 published on 23 February 2007 [DestinationDirs] ; DestinationDirs section DefaultDestDir=12 ; Default install directory is \drivers or \IOSubSys [Manufacturer] ; Manufacturer section %ATMEL%=AtmelMfg ; Only one manufacturer (ATMEL), models section is named ; AtmelMfg [AtmelMfg] ; Models section corresponding to ATMEL %USBtoSerialConverter%=USBtoSer.Install, USB\VID_03EB&PID_6119 ; Identifies a device with ATMEL Vendor ID (03EBh) and ; Product ID equal to 6119h. Corresponding Install section ; is named USBtoSer.Install [USBtoSer.Install]; Install section include=mdmcpq.inf CopyFiles=FakeModemCopyFileSection AddReg=USBtoSer.AddReg ; Registry keys to add are listed in USBtoSer.AddReg [USBtoSer.AddReg] ; AddReg section HKR,,DevLoader,,*ntkern ; HKR,,NTMPDriver,,usbser.sys HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" [USBtoSer.Install.Services] ; Services section AddService=usbser,0x00000002,USBtoSer.AddService ; Assign usbser as the PnP driver for the device [USBtoSer.AddService] ; Service install section DisplayName=%USBSer% ; Name of the serial driver ServiceType=1 ; Service kernel driver StartType=3 ; Driver is started by the PnP manager ErrorControl=1 ; Warn about errors ServiceBinary=%12%\usbser.sys ; Driver filename [Strings] ; Strings section ATMEL="ATMEL Corp." ; String value for the ATMEL symbol USBtoSerialConverter="AT91 USB to Serial Converter" ; String value for the USBtoSerialConverter symbol USBSer="USB Serial Driver" ; String value for the USBSer symbol //***********************************************************************// Прошивка для микрочипа взята также с сайта Atmel. Для интереса попробовал установить этот inf на обычную флэшку (Mass Storage), драйвер usbser.sys под нее встал, в inf файле потребовалось лишь изменить vendor и product id на номера, которые у флэши (USB\VID_VVVV&PID_PPPP). В диспетчере устройств название флэшки переместилось из раздела «… USB» в раздел «Порты (COM и LPT)», как новый COM порт, на названии, конечно, желтый значок (- драйвер с оборудованием работает некорректно), но факт установки был. В чем может быть проблема, где еще смотреть: - использую некорректные VID и PID - неправильно сконфигурирован код прошивки - нестандартное оборудование, нужно писать свой драйвер
( вот Device Description: const USBDeviceDescriptor usbDeviceDescriptor = {
sizeof(USBDeviceDescriptor), USBGenericDescriptor_DEVICE, USBDeviceDescriptor_USB2_00, 0, // No device class code 0, // No device subclass code 0, // No device protocol code BOARD_USB_ENDPOINTS_MAXPACKETSIZE(0), 0x03EB, // Atmel vendor ID 0x6119, //0001;// Product ID 0x0001, // Product release 0.01 0, // No manufacturer string descriptor 0, // No product string descriptor 0, // No serial number string descriptor 1 // One possible configuration }; )
Спасибо.
|