Некоторые вещи, чтобы рассмотреть следующие вопросы:
Является ли это высокая пропускная способность устройства, как камеры или записи данных или устройства с низкой пропускной способностью?
Для низкой пропускной способности я настоятельно рекомендую сделать ваше устройство устройством USB HID class. Это класс устройств, который поддерживает клавиатуры, мыши, джойстики, игровые площадки и т. П. Относительно легко отправлять данные практически в любое приложение, и, как правило, не требуется писать пользовательский драйвер устройства на стороне хоста. Эта последняя особенность сама по себе часто стоит затрат на легкое искажение ваших данных в форме, принятой классом HID. Все настольные операционные системы, которые используют USB, могут использовать HID-устройства, поэтому вы легко получаете широкую совместимость.
Для обеспечения высокой пропускной способности вам по-прежнему будет лучше обслуживаться, если ваше устройство подходит к одному из хорошо установленных классов устройств, где можно использовать драйвер накопительного устройства на стороне хоста. Один из подходов, который часто работает, - использовать Mass Storage class и эмулировать дисковод, содержащий один файл. Затем ваше устройство просто монтируется на хост, как если бы это был диск, и вы общаетесь, читая и записывая один (или несколько) файл.
Я ожидаю, что там будет достаточный образец кода для любого серьезного набора микросхем USB-устройств, который реализует оба или оба из HID и Mass Storage.
Если вы действительно должны бродить по полностью настраиваемой территории устройства, вам нужно будет создавать драйверы устройств для каждой платформы хоста. Библиотека с открытым исходным кодом libusb может оказать некоторую помощь, если ее лицензия совместима с вашим проектом. Есть также способы в новых версиях Windows разрабатывать USB-драйверы, которые запускаются в пользовательском режиме, используя User Mode Driver Framework, которые имеют многие из тех же преимуществ libusb, но не переносятся с платформы Windows.
Последнее настраиваемое устройство, на котором я работал, было основано на устройстве Cypress, и мы смогли отправить их драйвер и связанную с ним DLL, чтобы упростить сбор кода приложения. Я не знаю манжеты, если есть какой-либо эквивалент, доступный для вашего устройства.
Для действительно хорошего обзора я рекомендую USB FAQ и последнее издание книги Яна, USB Complete.
Какую хост-систему вы планируете? – cmcginty
Host Windows и целевой ThreadX – binW