This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

USB composite device

Hi,

I've implemented code for composite USB device with CDC and Mass Storage interfaces (on ARM AT91SAM7SE512).
After driver instalation on windows XP I can see both devices on device manager. I succesfully connect the serial port but nothing happens when I type commands on the terminal.
When i change my code to support only Mass Storage interface OR only serial/CDC it works fine, so I'm not sure whether the problem is in my code or the driver installation...

below is the descriptor configuration code:

const U8 USB_ConfigDescriptor[] = {
/* Configuration 1 */
  USB_CONFIGUARTION_DESC_SIZE,
  USB_CONFIGURATION_DESCRIPTOR_TYPE
  WBVAL(
    1*USB_CONFIGUARTION_DESC_SIZE +
    1*USB_INTERFACE_DESC_SIZE     +
        0x0013                        +
        1*USB_ENDPOINT_DESC_SIZE      +
    1*USB_INTERFACE_DESC_SIZE     +
    2*USB_ENDPOINT_DESC_SIZE      +
        1*USB_INTERFACE_DESC_SIZE         +
        2*USB_ENDPOINT_DESC_SIZE
  ),
  0x03,
  0x01,
  0x00,
  USB_CONFIG_BUS_POWERED /*|*/
/*USB_CONFIG_REMOTE_WAKEUP*/,
  USB_CONFIG_POWER_MA(100),
/* Interface 0, Alternate Setting 0
  USB_INTERFACE_DESC_SIZE,
  USB_INTERFACE_DESCRIPTOR_TYPE,
  USB_CDC_CIF_NUM,
  0x00,
  0x01,
  CDC_COMMUNICATION_INTERFACE_CLASS
  CDC_ABSTRACT_CONTROL_MODEL,
  0x00,
  0x7A/*0x70*/,
/*Header Functional Descriptor*/
  0x05,
  CDC_CS_INTERFACE,
  CDC_HEADER,
  WBVAL(0x0200/*CDC_V1_10*/), /* 1.
/*Call Management Functional Descri
  0x05,
  CDC_CS_INTERFACE,
  CDC_CALL_MANAGEMENT,
  0x01,
  USB_CDC_DIF_NUM/*0x01*/,
/*Abstract Control Management Funct
  0x04,
  CDC_CS_INTERFACE,
  CDC_ABSTRACT_CONTROL_MANAGEMENT,
  0x02,
/*Union Functional Descriptor*/
  0x05,
  CDC_CS_INTERFACE,
  CDC_UNION,
  USB_CDC_CIF_NUM,
  USB_CDC_DIF_NUM,
/*Endpoint 1 Descriptor*/
  USB_ENDPOINT_DESC_SIZE,
  USB_ENDPOINT_DESCRIPTOR_TYPE,
  USB_ENDPOINT_IN(3),
  USB_ENDPOINT_TYPE_INTERRUPT,
  WBVAL(0x0010),
  0x02,          /* 2ms */
/* Interface 1, Alternate Setting 0
  USB_INTERFACE_DESC_SIZE,
  USB_INTERFACE_DESCRIPTOR_TYPE,
  USB_CDC_DIF_NUM,
  0x00,
  0x02,
  CDC_DATA_INTERFACE_CLASS,
  0x00,
  0x00,
  0x7A/*0x70*/,
/* Endpoint, EP5 Bulk Out */
  USB_ENDPOINT_DESC_SIZE,
  USB_ENDPOINT_DESCRIPTOR_TYPE,
  USB_ENDPOINT_OUT(2),
  USB_ENDPOINT_TYPE_BULK,
  WBVAL(USB_CDC_BUFSIZE),
  0x00,
/* Endpoint, EP4 Bulk In */
  USB_ENDPOINT_DESC_SIZE,
  USB_ENDPOINT_DESCRIPTOR_TYPE,
  USB_ENDPOINT_IN(1),
  USB_ENDPOINT_TYPE_BULK,
  WBVAL(USB_CDC_BUFSIZE),
  0x00,
/* Interface 2, Alternate Setting 0
  USB_INTERFACE_DESC_SIZE,
  USB_INTERFACE_DESCRIPTOR_TYPE,
  USB_MSC_IF_NUM,
  0x00,
  0x02,
  USB_DEVICE_CLASS_STORAGE,
  MSC_SUBCLASS_SCSI,
  MSC_PROTOCOL_BULK_ONLY,
  0x6C/*0x62*/,
/* Bulk In Endpoint */
  USB_ENDPOINT_DESC_SIZE,
  USB_ENDPOINT_DESCRIPTOR_TYPE,
  USB_ENDPOINT_IN(6),
  USB_ENDPOINT_TYPE_BULK,
  WBVAL(0x0040),
  0,
/* Bulk Out Endpoint */
  USB_ENDPOINT_DESC_SIZE,
  USB_ENDPOINT_DESCRIPTOR_TYPE,
  USB_ENDPOINT_OUT(7),
  USB_ENDPOINT_TYPE_BULK,
  WBVAL(0x0040),
  0,
/* Terminator */
  0
};

The inf file device is:

[DeviceList]
%DESCRIPTION%=SAM7XUSB, USB\VID_03EB&PID_6124&MI_00

Should I use a common inf file for both devices?

Any help is appreciated...

Thanks

0