Domanda

Sto sviluppando un driver CDC per dispositivo USB e mi imbatto in qualche problema. Il driver che sto usando sul lato Windows utilizza Clear Endpoint Feature come una sorta di meccanismo flish o per ottenere i dati giusti. Questo mi causa molti trobule perché non riesco a farlo funzionare. Penso che il toggle dei dati non sia d'accordo e mi sto perdendo alcuni importanti trasferimenti di dati, anche se non mi viene interrotto associato a quell'endpoing a causa della cattiva commutazione dei dati. Ripristino i dati impostando su 0 all'interfaccia impostata e deselezionando la funzionalità, come indicato nello standard USB. C'è più situazione quando dovrei farlo? Oppure esiste un modo semplice per la gestione degli errori di attivazione / disattivazione dei dati non validi.

Grazie per la risposta. Ho un analizzatore USB, ma ora non mi va bene. Da quello che sono riuscito a raccogliere e penso che stia succedendo. Ho impostato il bit di datatoggle in hardvare dopo la funzione Clear (come dovrebbe essere fatto) per l'endpoint corrispondente. Invia alcuni dati, viene ricevuto su PC. Conosco questo modulo analizzatore USB e ho rintracciato il mio driver Vcom con il monitor della porta. Quindi aspetto alcuni dati poiché tutto è configurato (dispositivo elencato e così via), la domanda iniziale è accesa ma la successiva non lo è, dopo che l'endpoint è stato cancellato il PC sta ponendo di nuovo la domanda. Ciò dovrebbe innescare l'interruzione UBS per l'endpoint corrispondente, ma non sta succedendo, anche dopo qualche tempo c'è una chiara funzionalità dell'endpoint e lo stesso pacchetto, e questa volta viene risposto e di nuovo c'è silenzio sul protocollo di comunicazione. Ho contato il trasferimento richiesto rispetto agli interrupt mancanti e il rapporto è esattamente 2: 1, quindi penso che la commutazione dati sia impostata in modo errato per metà del tempo, ma come può accadere se imposto i dati toggle bit ogni volta che ottengo una funzione endpoint chiara.

Spero di aver chiarito chiaramente il problema, per il lato harvare penso che l'unica cosa meravigliosa sia la parte che sto impostando. Indica " Scrivere un 1 su questo bit per reimpostare i dati dell'endpoint su 0. " Ok, penso (si spera) di aver risolto la fature dell'endpoint Clear, altri errori sono stati causati da altre cose e il problema cumulativo è stato difficile da rilevare.


Ok, ho risolto il problema qualche tempo fa, ora non ricordo nemmeno quale fosse la causa ma, come al solito, è stato qualcos'altro. Tutti quelli che hanno legato alla risposta grazie.

È stato utile?

Soluzione

Tenere presente che su alcune versioni di usbser.sys, Windows non scarica correttamente la pipe dopo un trasferimento di un multiplo esatto di 64 byte. Non sono esattamente chiaro dalla tua domanda se questo è il comportamento che stai vedendo, ma un analizzatore USB dovrebbe aiutarti a determinare se questo è il caso. Se si utilizza XP SP2, eseguire l'aggiornamento a SP3.

Altri suggerimenti

Suggerisco di usare usb snoopy (software usb analyzer) per capire cosa sei fare male. Se hai qualche budget, è meglio che tu abbia l'analizzatore usb hardware come noi Lecroy o Ellisys . O ottieni un driver CDC commerciale, ce ne sono molti disponibili solo google per driver cdc. La descrizione del problema è molto generale e può essere indirizzata direttamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top