Какие команды ОС необходимы для управления USB? - PullRequest
0 голосов
/ 31 января 2020

Я учусь в колледже и изучаю компьютерную инженерию и пытаюсь посылать сигналы с помощью USB на FPGA с компьютера windows, подключенного к FPGA с использованием USB. Какие команды я могу использовать для вывода / ввода данных с моего компьютера? Для справки: я работаю на ноутбуке windows 10. Я использую python в настоящее время для запуска программы, которая получает данные от пользователя. Данные в буквальном смысле представляют собой просто набор двоичных битов (примерно до 75 бит), наш проект связан с кодированием, поэтому наша fpga должна взять данные, затем кодировать их с использованием блочных кодов, затем отправить данные обратно, затем данные должны быть слегка повреждены, отправлены обратно в FPGA, затем проверены на наличие ошибок, декодированы и снова отправлены на компьютер. У нас есть FPGA Cyclone 5 (номер модели: 5csema5f31c6). Недавно я начал посещать класс ОС, и, поскольку ОС контролирует использование оборудования программами, я предполагаю, что мои программы должны будут выдавать определенные команды ОС, которая затем сообщит USB, что мы хотим.

1 Ответ

0 голосов
/ 31 января 2020

Ответ зависит от того, какой именно драйвер c вы используете для связи с вашим устройством. Если ваше устройство является обычным c USB-устройством и не соответствует существующей категории (например, клавиатура или принтер), то я бы рекомендовал использовать драйвер с именем WinUSB .

Вам потребуется написать (и подписать) файл INF или использовать технологию под названием Microsoft OS 2.0 Descriptors, чтобы сообщить Windows, что вы хотите, чтобы ваше устройство использовало WinUSB.

После того, как вы это сделаете, Вы можете использовать предоставленную Microsoft DLL с именем winusb.dll, которая помогает отправлять команды, ожидаемые драйвером WinUSB. Вам также необходимо использовать SetupAPI, чтобы найти ваше устройство в первую очередь. Прямое использование этих двух API-интерфейсов Microsoft может быть затруднено, и это делает ваш код непереносимым, поэтому вы можете вместо этого использовать библиотеку абстракции USB, например libusb или libusbp .

...