Пытаюсь сделать mass storage. Плата отладочная от Starter Kit. Начальная инициализация USB проходит нормально (использовал свой старый проект, правда там был AT91SAM7 и виртуальный Com-порт), USBViev видит мое устройство и все дескрипторы.
При получении первого запроса "Get max LUN" отвечаю "1" (предполагается два логических диска) и сразу после этого следует сброс USB, хотя должен быть первый SCSI пакет.
Проверял на XP и семерке.
Использую для передачи данных Endpoint 2, предназначена для bulk передач.
Но до прерывания для этой точки не доходит.
USB порт второй, так разведено на плате.
Нашел похожую тему на микрочиповском форуме, но там была проблема в том, что не было ответа на пакет нулевой длины от хоста (после команды Get max LUN).
Вот дескрипторы на всякий случай:
/* USB Standard Device Descriptor */ const unsigned char DevDescriptor[] = { 18, /* bLength */ 0x01, /* bDescriptorType */ 0x10,0x01, /* bcdUSB */ 0x00, /* bDeviceClass */ 0x00, /* bDeviceSubClass */ 0x00, /* bDeviceProtocol */ 64, /* bMaxPacketSize0 */ 0x51,0xC2, // VID 0x03,0x17, // PID 0x00,0x01, // Version 0x01, /* iManufacturer */ 0x02, /* iProduct */ 0x03, /* iSerialNumber */ 0x01 /* bNumConfigurations */ }; /* USB Configuration Descriptor */ /* All Descriptors (Configuration, Interface, Endpoint, Class, Vendor */ const unsigned char ConfigDescriptor[] = { /* Configuration 1 */ 0x09, /* bLength */ 0x02, /* bDescriptorType */ 32,0, // wTotalLength = Configuration + Interface + 2 endpoint 0x01, /* bNumInterfaces */ 0x01, /* bConfigurationValue */ 0x00, /* iConfiguration */ 0xC0, // Self powered 0x01, // bMaxPower /* Interface 0, Alternate Setting 0, MSC Class */ 0x09, /* bLength */ 0x04, /* bDescriptorType */ 0x00, /* bInterfaceNumber */ 0x00, /* bAlternateSetting */ 0x02, /* bNumEndpoints */ 0x08, /* bInterfaceClass - Storage*/ 0x06, /* bInterfaceSubClass - SCSI*/ 0x50, /* bInterfaceProtocol */ 0x00, /* iInterface */ /* Bulk In Endpoint */ 0x07, /* bLength */ 0x05, /* bDescriptorType */ 0x82, /* bEndpointAddress */ 0x02, /* bmAttributes */ 0x40,0x00, /* wMaxPacketSize */ 0, /* bInterval */ /* Bulk Out Endpoint */ 0x07, /* bLength */ 0x05, /* bDescriptorType */ 0x02, /* bEndpointAddress */ 0x02, /* bmAttributes */ 0x40,0x00, /* wMaxPacketSize */ 0, /* bInterval */ };Серийный номер - 12 символов, цифровые.