спасибо большое vmp (Дата Nov 21 2007, 14:33) за лог, очень помогло. возникли вопросики касательно некоторых моментов: 1. касательно фрагмента ______________________________________________________________________________ Container title<GetDescriptor (Configuration)> device<1> endpoint<0> status<OK> speed<HS> time<4.408 958 750> Transaction type<SETUP> device<1> endpoint<0> status<ACK> speed<HS> time<4.408 958 750> Packet id<SETUP> devAddr<1> epNum<0> crc5<0x1D> speed<HS> time<4.408 958 750> Packet id<DATA0> length<8> data<80 06 00 02 00 00 FF 00> crc16<0xA4E9> speed<HS> time<4.408 959 083> Packet id<ACK> speed<HS> time<4.408 959 567> ConsecutiveTransaction count<216> type<IN> device<1> endpoint<0> status<NAK> speed<HS> time<4.408 963 050> Transaction type<IN> device<1> endpoint<0> status<ACK> speed<HS> time<4.409 551 517> Packet id<IN> devAddr<1> epNum<0> crc5<0x1D> speed<HS> time<4.409 551 517> Packet id<DATA1> length<32> data<09 02 20 00 01 01 00 80 64 09 04 00 00 02 08 06 50 00 07 05 81 02 00 02 00 07 05 02 02 00 02 00> crc16<0x434A> speed<HS> time<4.409 551 833> Packet id<ACK> speed<HS> time<4.409 552 883> Transaction type<OUT> device<1> endpoint<0> status<ACK> speed<HS> time<4.409 555 850> Packet id<OUT> devAddr<1> epNum<0> crc5<0x1D> speed<HS> time<4.409 555 850> Packet id<DATA1> length<0> crc16<0x0000> speed<HS> time<4.409 556 167> Packet id<ACK> speed<HS> time<4.409 556 500> ______________________________________________________________________________
как я понимаю, осуществляется запрос на дескриптор конфигурации, длина которого составляет 9байт судя по документации. до этого приходил аналогичный запрос на длину 9байт (и они были отправлены - все согласно штатному расписанию усб), а теперь он снова пришел, но уже ожидается 256 байт. (1-й вопрос: почему отправляется повторный запрос 80 06 00 02 00 00 FF 00 и каков формат ответа на него)
2. также непонятно, почему на запрос 9-байтного дескриптора отправляется ответ не 9 байт, а 32 (!). я смотрел исходники на ИАРе и там тоже почему-то этот дескриптор был МАЛО ТОГО что длинее 9байт, да еще и имел в своем составе другие дескрипторы: #pragma data_alignment=4 const Int8U UsbStandardConfigurationDescriptor[] = { sizeof(UsbStandardConfigurationDescriptor_t), UsbDescriptorConfiguration, (1*sizeof(UsbStandardConfigurationDescriptor_t)+ 1*sizeof(UsbStandardInterfaceDescriptor_t)+ 2*sizeof(UsbStandardEpDescriptor_t)), (1*sizeof(UsbStandardConfigurationDescriptor_t)+ 1*sizeof(UsbStandardInterfaceDescriptor_t)+ 2*sizeof(UsbStandardEpDescriptor_t)) >> 8, 1, 1, 0, UsbConfigurationCommmonAttr, UsbConfigPower_mA(100), sizeof(UsbStandardInterfaceDescriptor_t), UsbDescriptorInterface, 0, 0, 2, UsbDeviceClassStorage, MscSubClassScsi, MscProtocolBulkOnly, 0, sizeof(UsbStandardEpDescriptor_t), UsbDescriptorEp, UsbEpIn(BulkInEp>>1), UsbEpTransferBulk, BulkInEpMaxSize, BulkInEpMaxSize>>8, 0, sizeof(UsbStandardEpDescriptor_t), UsbDescriptorEp, UsbEpOut(BulkOutEp>>1), UsbEpTransferBulk, BulkOutEpMaxSize, BulkOutEpMaxSize>>8, 0, 0, };
============ но простите, UsbStandardInterfaceDescriptor и UsbStandardEpDescriptor должны по идее отправляться на запросы типа 80 06 00 04 .... и на 80 06 00 05 в ОБЩЕМ НЕПОНЯТНО (((
2-й вопрос: почему UsbStandardInterfaceDescriptor и UsbStandardEpDescriptor выдаются на запрос UsbStandardConfigurationDescriptor а не на свои индивидуальные?
3. в моей программе выдаются ответы на запросы, согласно логу энумерации флешки (на XPsp1 на high speed) и до приведеного выше момента (включительно) они совпадают. но после этого вместо запроса Packet id<DATA0> length<8> data<80 06 00 03 00 00 FF 00> у меня появляется запрос <80 06 00 06 00 00 0a 00> на уточняющий дескриптор устройства.... 3-й вопрос: что мне ответить на запрос <80 06 00 06 00 00 0a 00>? заранее благодарю.
|