Sto cercando di scrivere un driver Linux a un dispositivo che ho il driver di Windows di (simile al caso descritto Here, ma un dispositivo diverso)Conversione di un conducente a Linux
sto usando per Libusb la comunicazione sul lato linux e SourceUSB come il mio sniffer USB (sulla macchina Windows). Ora penso di aver replicato correttamente i controlli e le masse, ma non posso davvero testare il log di linux con quello di Windows. Sto usando Ubuntu 12.04 su una VM.
Quindi le mie domande sono:
- Esiste un logger multipiattaforma? Ciò potrebbe davvero semplificare il processo di confronto dei registri.
- Quando collego il dispositivo USB alla VM, ottengo il driver VM in Windows. Annusare questo dispositivo mi dà esattamente quello che il dispositivo vede, giusto? Voglio dire - E 'questo il posto dove voglio annusare?
EDIT: Ho compilato la mia domanda su Windows (libusb è cross platform - Un grande grazie a libusb sviluppatori che hanno fatto un buon lavoro) e la mia applicazione ha funzionato correttamente.
Quando si annota il driver VM mentre si esegue l'applicazione su Linux, vedo le richieste sull'USB come VENDOR_DEVICE invece di CONTROL_TRANSFER e BULK_OR_INTERRUPT. Questo sembra essere il problema se capisco correttamente, poiché questo è ciò che il dispositivo "vede".
Quindi immagino che il mio problema ora sia il motivo per cui Linux invia le mie richieste come fornitore.
ALTRO EDIT: Problema risolto:
- Ascoltando il driver VM mi ha dato le richieste sbagliate (stavo ascoltando il traffico conducente VM, non, come ho voluto, il traffico del mio driver per Linux USB
- Libusb è perfettamente multipiattaforma. mi ci sono voluti un paio di minuti per raggiungere il mio codice per compilare sotto le finestre, e da lì è stato abbastanza facile da mettere a punto e confrontare i registri