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

Кроме того, после инсталяции в setupapi.log появилась запись для второго интерфейса вида:

"Устройство не запущено: обнаружена проблема: 0x0a: CM_PROB_FAILED_START".

 

Может быть кто знает, куда копать. Неохота самому писать собственный драйвер :)

Спасибо

Недавно где-то здесь же на форуме промелькнула информация о схожей проблеме и о том, сколько реально нужно endpoints для реализации двух CDC в одном устройстве. Поищите.

Да этоя и создавал тему в форуме AVR про PDIUSBD12 + ATmega16... Дело то вот в чем: У PDIUSBD12 шесть ендпоинтов - одна пара используется под Control IN/OUT endpoint и остаются еще две пары ендпоинтов. НО, так как в USB CDC ACM классе необходимо иметь три точки, то, как бы не реально сделать два устройства на данной связке. С помощью гугль и такой то матери обнаружил, что все таки можно не портить одну пару ендпоинтов, так как одна точка как бы не действительная, то бишь она нужна только для стандарта, а реально не используется. Подправил я дескрипторы, сдела пару одну на реальные точки, а одну сделал с нереальным номером - РАБОТАЕТ!!!. Попробовал под 98, 2000, МЕ, XP - все замечательно. Добавляю второй интерфейс - все ставится, видится НО второй девайс ни в какую - код ошибки 10 и в 2000 и в XP. 98 и МЕ смысла мучить пока не вижу, так как предполагаю, что там вообще после таких выкрутастов BSOD будет :) . Счас перепахиваю MSDN...безрезультатно...Но ИМХО, что то я не совсе мправильно либо с дескрипторами делаю, либо в INF что то не дописываю :(

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


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

Может быть кто знает, куда копать. Неохота самому писать собственный драйвер :)

Спасибо

Счас перепахиваю MSDN...безрезультатно...Но ИМХО, что то я не совсе мправильно либо с дескрипторами делаю, либо в INF что то не дописываю :(

 

Если не секрет, можно на дескртиптор взглянуть и на inf за одно?

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


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

/**************************************************************************
Device Descriptor
**************************************************************************/
PROGMEM USB_DEVICE_DESCRIPTOR USB_DeviceDescriptor =
{
sizeof(USB_DEVICE_DESCRIPTOR), /* length of descriptor in bytes */
    USB_DEVICE_DESCRIPTOR_TYPE, /* descriptor type */
    0x0110,  /* USB version supported */
    0,//USB_CFG_DEVICE_CLASS, /* device class */
    0,//USB_CFG_DEVICE_SUBCLASS, /* device subclass */
    0,//USB_CFG_DEVICE_PROTOCOL, /* device protocol */
    D12_EP0_PACKET_SIZE, /* max packet size for control endpoint */
    USB_CFG_VENDOR_ID,  /* vendor ID (VID) */
    USB_CFG_DEVICE_ID,  /* device ID (PID) */
    USB_CFG_DEVICE_VERSION, /* version */
    USB_CFG_VENDOR_STRING_INDEX,  /* manufacturer string index */
    USB_CFG_DEVICE_STRING_INDEX,  /* product string index */
USB_CFG_SERIAL_STRING_INDEX, /* serial number string index */
1, /* number of configurations */
};

/**************************************************************************
CDC Config Descriptors Packet for Communication Port Emulation
**************************************************************************/
PROGMEM USB_CONFIG_DESCRIPTOR_PACKET USB_ConfigDescriptorPacket =
{

/**************************************************************************
Configuration Descriptor
**************************************************************************/
{
    sizeof(USB_CONFIGURATION_DESCRIPTOR), /* length of descriptor in bytes */
    USB_CONFIGURATION_DESCRIPTOR_TYPE,    /* descriptor type */
    sizeof(USB_CONFIG_DESCRIPTOR_PACKET), /* total packet length */
    2,          /* number of interfaces in this configuration */
    1,          /* index of this configuration */
    0,          /* configuration name string index */
USB_CONFIG_SELF_POWERED,
    USB_CFG_MAX_BUS_POWER / 2,
},

/**************************************************************************
ACM Interface Descriptor 0
**************************************************************************/
{ 
   sizeof(USB_INTERFACE_DESCRIPTOR), /* length of descriptor in bytes */
    USB_INTERFACE_DESCRIPTOR_TYPE, /* descriptor type */
    0,          /* index of this interface */
    0,          /* alternate setting for this interface */
    3,     /* 1 - control? 2 - data */
    USB_CFG_INTERFACE_CLASS, /* USB_DEVICE_CLASS_COMMUNICATIONS */
    USB_CFG_INTERFACE_SUBCLASS, /* USB_CDC_SUBCLASS_ACM */
    USB_CFG_INTERFACE_PROTOCOL, /* 0 */
    0,
},

/**************************************************************************
CDC Header Functional Descriptor
**************************************************************************/
{ 
   sizeof(USB_CDC_HEADER_FUNCTIONAL_DESCRIPTOR),
    0x24, /* descriptor type */
    0,  /* header functional descriptor */
    0x0110, /* USB version */
},

/**************************************************************************
CDC Abstract Control Management Functional Descriptor
**************************************************************************/
{ 
   sizeof(USB_CDC_ABSTRACT_CONTROL_MANAGEMENT_FUNCTIONAL_DESCRIPTOR),
    0x24, /* descriptor type */
    2,  /* abstract control management functional descriptor */
    0x02,   /* SET_LINE_CODING,    GET_LINE_CODING, SET_CONTROL_LINE_STATE */
},

/**************************************************************************
In Endpoint #3 Descriptor (Control in) not real!!!
**************************************************************************/
{ 
   sizeof(USB_ENDPOINT_DESCRIPTOR),
    USB_ENDPOINT_DESCRIPTOR_TYPE,
    0x83, /* In endpoint number 3 */
    0x03, /* attrib: Interrupt endpoint */
    D12_EP1_PACKET_SIZE,  /* maximum packet size */
    10, /* in ms */
},

/**************************************************************************
Out Endpoint #1 Descriptor (Data out)
**************************************************************************/
{ 
   sizeof(USB_ENDPOINT_DESCRIPTOR),
    USB_ENDPOINT_DESCRIPTOR_TYPE,
    0x01,        /* OUT endpoint number 1 */
    0x02,        /* attrib: Bulk endpoint */
    D12_EP1_PACKET_SIZE,      /* maximum packet size */
    0,         /* in ms */
},

/**************************************************************************
In Endpoint #1 Descriptor (Data in)
**************************************************************************/
{ 
   sizeof(USB_ENDPOINT_DESCRIPTOR),
    USB_ENDPOINT_DESCRIPTOR_TYPE,
    0x81,        /* IN endpoint number 1 */
    0x02,        /* attrib: Bulk endpoint */
    D12_EP1_PACKET_SIZE,      /* maximum packet size */
    0,         /* in ms */
},

/**************************************************************************
ACM Interface Descriptor 1
**************************************************************************/
{ 
   sizeof(USB_INTERFACE_DESCRIPTOR), /* length of descriptor in bytes */
    USB_INTERFACE_DESCRIPTOR_TYPE, /* descriptor type */
    1,          /* index of this interface */
    0,          /* alternate setting for this interface */
    3,     /* 1 - control? 2 - data */
    USB_CFG_INTERFACE_CLASS, /* USB_DEVICE_CLASS_COMMUNICATIONS */
    USB_CFG_INTERFACE_SUBCLASS, /* USB_CDC_SUBCLASS_ACM */
    USB_CFG_INTERFACE_PROTOCOL, /* 0 */
    0,
},

/**************************************************************************
CDC Header Functional Descriptor
**************************************************************************/
{ 
   sizeof(USB_CDC_HEADER_FUNCTIONAL_DESCRIPTOR),
    0x24, /* descriptor type */
    0,  /* header functional descriptor */
    0x0110, /* USB version */
},

/**************************************************************************
CDC Abstract Control Management Functional Descriptor
**************************************************************************/
{ 
   sizeof(USB_CDC_ABSTRACT_CONTROL_MANAGEMENT_FUNCTIONAL_DESCRIPTOR),
    0x24, /* descriptor type */
    2,  /* abstract control management functional descriptor */
    0x02,   /* SET_LINE_CODING,    GET_LINE_CODING, SET_CONTROL_LINE_STATE */
},

/**************************************************************************
In Endpoint #4 Descriptor (Control in) not real !!!
**************************************************************************/
{ 
   sizeof(USB_ENDPOINT_DESCRIPTOR),
    USB_ENDPOINT_DESCRIPTOR_TYPE,
    0x84, /* In endpoint number 4 */
    0x03, /* attrib: Interrupt endpoint */
    D12_EP1_PACKET_SIZE,  /* maximum packet size */
    10, /* in ms */
},

/**************************************************************************
Out Endpoint #2 Descriptor (Data out)
**************************************************************************/
{ 
   sizeof(USB_ENDPOINT_DESCRIPTOR),
    USB_ENDPOINT_DESCRIPTOR_TYPE,
    0x02,        /* OUT endpoint number 2 */
    0x02,        /* attrib: Bulk endpoint */
    D12_EP2_PACKET_SIZE,      /* maximum packet size */
    0,         /* in ms */
},

/**************************************************************************
In Endpoint #2 Descriptor (Data in)
**************************************************************************/
{ 
   sizeof(USB_ENDPOINT_DESCRIPTOR),
    USB_ENDPOINT_DESCRIPTOR_TYPE,
    0x82,        /* IN endpoint number 2 */
    0x02,        /* attrib: Bulk endpoint */
    D12_EP2_PACKET_SIZE,      /* maximum packet size */
    0,         /* in ms */
},

}; /* enf of config descriptor packet */

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


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

забыл про инф :)

 

;*****************************************************************************

;*****************************************************************************

[Version]
signature="$WINDOWS NT$"
Class=Ports
ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}

Provider=%Provider%
DriverVer=03/07/2006, 4.38.4.127
LayoutFile= Layout.inf

[ControlFlags]
ExcludeFromSelect = *

;-----------------------------------------------------------------------------
; Specify target paths...
;-----------------------------------------------------------------------------

[DestinationDirs]
DefaultDestDir = 12                   ; system32\drivers
CopyFiles = 12                        ; system32\drivers

;-----------------------------------------------------------------------------
; Table of Contents
;-----------------------------------------------------------------------------
[Manufacturer]
%PROTTOSS%=PROTTOSS

;-----------------------------------------------------------------------------
; Device-by-device entries
;-----------------------------------------------------------------------------
[PROTTOSS]
%PROTTOSS.Comm.Desc1% = PROTTOSS.Install, USB\VID_16C0&PID_0996&REV_0001&MI_00
%PROTTOSS.Comm.Desc2% = PROTTOSS.Install, USB\VID_16C0&PID_0996&REV_0001&MI_01

;-----------------------------------------------------------------------------
; Installation instructions
;-----------------------------------------------------------------------------

[PROTTOSS.Install.nt]
Include=usb.inf
Needs=Composite.Dev.NT
AddReg  = PROTTOSS.AddReg,PROTTOSS.NT.AddReg
CopyFiles = CopyFiles

[PROTTOSS.Install.nt.HW]
AddReg=PROTTOSS.Install.nt.HW.AddReg

[PROTTOSS.Install.nt.HW.AddReg]
HKR,,"UpperFilters",0x00010000,"serenum"

;-----------------------------------------------------------------------------
;  Registry
;-----------------------------------------------------------------------------

; common registry entries
[PROTTOSS.AddReg]
HKR,,NTMPDriver,,usbser.sys
HKR,,EnableSurpriseRemovalHeuristics, 0x10001, 0x02, 0x00, 0x00, 0x00
HKR,,RateLimitPurgeMS, 0x10001, 0x64, 0x00, 0x00, 0x00
HKR,,OverrideDefaultPortSettings, 0x10001, 01,00,00,00
HKR,,InitialBaudRate, 0x10001, 00,C2,01,00                     ;115200 initial baud rate
HKR,,InitialLineControl,, "8N1"                                ;8-bits, No parity, 1 stop bit
HKR,,EnumeratorClass,MaskValue,02,02,00

; only for NT...
[PROTTOSS.NT.AddReg]
HKR,,PortSubClass,1,01
HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"

;-----------------------------------------------------------------------------
;  Copy lists
;-----------------------------------------------------------------------------
[CopyFiles]
usbser.sys

;-----------------------------------------------------------------------------
;  NT Services installation
;-----------------------------------------------------------------------------

[PROTTOSS.Install.NT.Services]
AddService = usbser, 0x00000002, PROTTOSS.Install.AddService
Include=msports.inf
Needs=SerialEnumerator.NT.Services
AddService = Serenum,,Serenum_Service_Inst

[PROTTOSS.Install.AddService]
DisplayName = %PROTTOSS.Service.Name%
Description = %PROTTOSS.Service.Desc%
ServiceType = 1  ;%SERVICE_KERNEL_DRIVER%
StartType = 3  ;%SERVICE_DEMAND_START%
ErrorControl = 1  ;%SERVICE_ERROR_NORMAL% 
ServiceBinary = %12%\usbser.sys
LoadOrderGroup = Base

; -------------- Serenum Driver install section
[Serenum_Service_Inst]
DisplayName    = %SerEnum.SvcDesc%
ServiceType    = 1              ; SERVICE_KERNEL_DRIVER
StartType      = 3              ; SERVICE_DEMAND_START
ErrorControl   = 1              ; SERVICE_ERROR_NORMAL
ServiceBinary  = %12%\serenum.sys
LoadOrderGroup = PNP Filter

;-----------------------------------------------------------------------------
; STRINGS
;-----------------------------------------------------------------------------
[Strings]
Provider = "PROTTOSS"
PROTTOSS = "PROTTOSS"

PROTTOSS.Comm.Desc1 = "PDIUSBD12 USB Serial Port #1"
PROTTOSS.Comm.Desc2 = "PDIUSBD12 USB Serial Port #2"

PROTTOSS.Service.Name = "PDIUSBD12 USB Test Device Drivers"
PROTTOSS.Service.Desc = "PDIUSBD12 USB Test Device Drivers"
SerEnum.SvcDesc="Serenum Filter Driver"

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


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

/**************************************************************************

Configuration Descriptor

**************************************************************************/

{

sizeof(USB_CONFIGURATION_DESCRIPTOR), /* length of descriptor in bytes */

USB_CONFIGURATION_DESCRIPTOR_TYPE, /* descriptor type */

sizeof(USB_CONFIG_DESCRIPTOR_PACKET), /* total packet length */

2, /* number of interfaces in this configuration */

1, /* index of this configuration */

0, /* configuration name string index */

USB_CONFIG_SELF_POWERED,

USB_CFG_MAX_BUS_POWER / 2,

},

 

Кажется, количество интерфейсов должно быть 4 (/* number of interfaces in this configuration */)

т.к. при одном мосте их 2, это т.н. сервисный + основной для данных. 2+2.

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


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

Кажется, количество интерфейсов должно быть 4 (/* number of interfaces in this configuration */)

т.к. при одном мосте их 2, это т.н. сервисный + основной для данных. 2+2.

Из usbcdc11.pdf я понял так что Data Interface может использоваться опционально. То бишь я его исключил из дескриптора а точки из него добавил в ACM Interface. Кроме того, когда я пробовал с четырьмя интерфейсами, ОС почему то просила установочный инф для всех четырех :( . Но, тем не менее с одним интерфейсом первый девайс работает отлично - я проверял. Данные приходят как положено в балк енпоинты. Дело не в этом...

 

Кстати, я так делать не сам придумал - а вот по этой ссылочке нашел

 

http://forum.microchip.com/printable.aspx?m=189607

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


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

Возникла похожая задача, 2 СОМа. Удалось ли докопаться?
Нет, не удалось. Похоже без собсвенного драйвера не обойтись:(

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


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

Возникла похожая задача, 2 СОМа. Удалось ли докопаться?

 

Нашел пример реализации 2 COM

http://forum.microchip.com/tm.aspx?m=123533&mpage=2

 

и далее

Multiple USB devices in a single 18f -- using 18F4550 to emulate FDTI2232 dual com port

http://forum.microchip.com/tm.aspx?m=261649

 

Вчера попробовал с портированной версией на PICkit2. Работает, винда нашла 2 COM потра

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


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

Я делал CDC устройство на связке ATMega16L + PDIUSBD12. CDC класс поддерживает сигнализацию

DTR/DSR, RTS, DCD, RI и Break (т.е. все, кроме CTS). Если есть заинтересованность, могу

рассказать подробнее.

 

Здравствуйте. Я вот сейчас делаю то же самое, что и вы (макет на атмега162 уже был, сейчас атмега128). Правда нужны только данные, DTR/DSR и остальное не нужны...

Несколько попыток (на остове апноутов атмеловских) для процов с набортным USB давали поведение типа - вис на инсталляции драйвера в систему (если вытащить усб кабель - заканчивалось нормально).

Другие особенности - нет передачи даннхых (иногда - один пакет проходит и всё) в терминал, запущенный на хосте. Передача данных по виртуальному ком-порту от хоста к устройству идет нормально (как мне кажется).

 

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

 

[email protected]

 

Я начинающий в области usb-программирования. На фото - как выглядит макет (это АЧХ-метр для радиолюбительских целей).

Изменено пользователем Genadi Zawidowski

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


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

Отбой.... Нашел у китайских ембеддеров проект, дескриптор из которого решил все мои проблемы.

Проект с исходниками и схемами, если кому надо (переходник USB->RS232, ATMEGA8+PDIUSBD12).

Изменено пользователем zltigo

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


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

FT232rus.doc

Господа!

 

Нет ли у кого примеров (если это вообще возможно) реализации в USB CDC устройстве эмуляции сигналов RTS/CTS и DSR/DCS?

 

Заранее благодарю

 

 

Обратите внимание на FT2232, а также CP2103, особенно последнее (встроенное EEPROM с драйверами), если не предстоит ручная пайка (корпус неудобный - QFN-28). С FT232 больше мороки.

А также можно подчитать небольшую справку (прилагаю). Схемы подключения в даташитах.

Поделитесь результатами, если будет желание!

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


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

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

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

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

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

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

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

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

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

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