Certaines choses à considérer:
Est-ce un dispositif à haut débit comme un appareil photo ou un enregistreur de données, ou un dispositif de faible bande passante?
Pour une faible bande passante, je considérerais fortement que votre appareil agisse comme un périphérique USB HID class. C'est la classe d'appareils qui prend en charge les claviers, les souris, les manettes de jeu, les manettes de jeu, etc. Il est relativement facile d'envoyer des données à presque n'importe quelle application, et il n'est généralement pas nécessaire d'écrire un pilote de périphérique personnalisé côté hôte. Cette dernière fonctionnalité à elle seule vaut souvent le coût de contorsionner légèrement vos données dans la forme assumée par la classe HID. Tous les systèmes d'exploitation de bureau qui utilisent l'USB peuvent utiliser des périphériques HID, ce qui vous permet d'obtenir une compatibilité étendue assez facilement.
Pour une bande passante élevée, vous seriez toujours mieux servi si votre appareil correspond à l'une des classes d'appareils bien établies, où un pilote de périphérique de stockage sur l'extrémité hôte du câble peut être utilisé. Une approche qui fonctionne souvent consiste à utiliser le Mass Storage class et à émuler un lecteur de disque contenant un fichier. Ensuite, votre appareil monte simplement sur l'hôte comme s'il s'agissait d'un disque, et vous communiquez en lisant et en écrivant dans un (ou quelques) fichier (s).
Je m'attendrais à ce qu'il y ait une bonne quantité d'exemples de code pour n'importe quel chipset de périphérique USB sérieux qui implémente HID ou Mass Storage.
Si vous devez vraiment vous aventurer dans un territoire de périphérique entièrement personnalisé, vous devrez créer des pilotes de périphérique pour chaque plate-forme hôte. La bibliothèque open source libusb peut être d'une certaine aide, si sa licence est compatible avec votre projet. Il existe également des moyens dans les nouvelles versions de Windows pour développer des pilotes USB qui s'exécutent en mode utilisateur en utilisant le User Mode Driver Framework qui ont beaucoup des mêmes avantages de libusb, mais ne sont pas portables sur la plate-forme Windows. Le dernier périphérique personnalisé sur lequel j'ai travaillé était basé sur un périphérique Cypress, et nous avons pu expédier leur pilote et une DLL associée pour faciliter la création de notre code d'application. Je ne sais pas s'il y a un équivalent disponible pour votre appareil.
Pour un très bon aperçu, je recommande le USB FAQ, et la dernière édition du livre de Jan, USB Complete.
Quel système d'exploitation hôte ciblez-vous? – cmcginty
Windows hôte et cible ThreadX – binW