Pergunta

Estou desenvolvendo CDC driver para dispositivo USB e eu tropeçar em algum problema. O motorista que estou usando no lado Windows usa Limpar Característica endpoint como uma espécie de mecanismo de flish ou para obter dados corretos. Isso me causa muita trobule porque eu não posso fazê-lo funcionar. Eu acho que os dados de alternância não concordo e estou faltando alguma transferência de dados importante, mesmo não sendo associado interrupção com que endpoing por causa do mau alternância de dados clara. Eu redefinir dados de alternância para 0 no set interface e funcionalidade clara, como fora apontado em padrão USB. Há mais situação quando eu deveria fazer isso? Ou há maneira fácil de lidar com alternância de dados inválidos erro.

Obrigado por anwsering. Eu tenho analisador usb, mas eu dosen't me fazer nenhum bem agora. Do que eu posso conseguiu reunir e eu acho que está acontecendo. I definir bit datatoggle em hardvare após Limpar recurso (como deveria ser feito) para coresponding endpoint. Enviar alguns dados, é recived no PC. Eu sei que este analisador de forma USB e eu segui o meu motorista Vcom com monitor de porta. Então eu espero por alguns dados como tudo está configurado (dispositivo enumerados e assim por diante), a questão inicial é anwsered mas o próximo não é, depois de fature endpoint clara lado do PC é fazer a pergunta novamente. Isso deve provocar UBS interrupção para coresponding endpoint mas isint acontecendo, novamente depois de algum tempo existe recurso endpoint clara e mesmo pacote, e é get respondeu desta vez e novamente há um silêncio sobre o protocolo de comunicação. Eu contei o tranfer solicitado contra interrupções desaparecidas e a proporção é exatamente 2: 1, então eu acho que a alternância de dados está definido errado por metade do tempo, mas como isso pode estar acontecendo se eu definir os dados do toggle bit toda vez que recebo recurso endpoint clara.

Espero afirmou claramente o problema, para o lado harvare Eu acho que a única coisa rvelant é o bit Estou configurando. Ele afirma: "Escrever um 1 a este bit para repor os dados do objectivo de alternância para 0." Ok eu acho (espero) eu resolvi o Limpar endpoint fature, outros erros foram causados ??por outras coisas, e problema cumulativo era difícil de captura.


Ok eu corrigiu o problema há algum tempo, agora eu nem sequer lembre qual foi a causa, mas como ususally é - que era outra coisa. Todos que amarrado a anwser obrigado.

Foi útil?

Solução

Esteja ciente de que em algumas versões do Usbser.sys, o Windows não liberar corretamente o tubo depois de uma transferência de um múltiplo exato de 64 bytes. Eu não sou exatamente claro da sua pergunta se este é o comportamento que você está vendo, mas um analisador USB deve ajudar a determinar se este é o caso. Se você estiver usando XP SP2, atualizar para o SP3.

Outras dicas

Eu sugiro usar usb snoopy (software usb analisador), a fim de entender o que você está fazendo de errado. Se você tiver qualquer orçamento que você usb melhor tem hardware analisador tal nos Lecroy ou Ellisys . Ou obter um driver de CDC comercial há muito disponível apenas google para o condutor CDC. Sua descrição do problema é muito geral e pode ser abordado diretamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top