inHi, этот вопрос быстрый, но, с моей точки зрения, довольно сложный.Я возился с реализацией USB-устройства, созданного из MCU.Итак, я нашел проект под названием V-USB, который является программно-эмулированным интерфейсом USB для микроконтроллеров Atmel.Но это не так важно.
Вопрос в том, что на их сайте говорят, что с помощью пользовательского класса USB вы можете просто написать программное обеспечение для хоста на Unix, но вам нужна DLL-библиотека драйвера для Windows.Проблема в том, что они не объясняют почему.
Так, пожалуйста, почему?Я не знаю систем на основе Unix, но я думал, что основы различных ОС одинаковы, потому что они основаны на одном и том же оборудовании, и даже Unix не может выполнять операции HW IO из пользовательского режима.
Я знаю о библиотекахдля USB-связи, такой как LibUSB и так далее, но я хочу знать саму причину, почему они говорят, что это легко на Unix.Спасибо.
РЕДАКТИРОВАТЬ: Спасибо за ответ, но у меня есть дополнительные вопросы?Как работает этот файл?Я имею в виду, что мое видение драйвера в Windows - это программа, работающая в режиме ядра, поэтому она позволяет получать доступ к портам ввода-вывода ЦП, которые в некоторых стандартах предоставляют функции для ОС, чтобы позволить Windows использовать ее (например, драйвер жесткого диска должен быть доступен издрайвер файловой системы с помощью стандартизированного набора функций, что позволяет любому жесткому диску работать одинаково).
При этом все, что вам нужно сделать, это вызвать драйверы через функцию WinAPI или напрямую вызвать ее функции.Но USB реализует новую функцию, которая отличается от других классов.Таким образом, есть основной корневой USB-драйвер для обработки USB и вызова правильных дополнительных драйверов для нужных устройств.Если есть такая же процедура, вы просто вызываете драйвер USB.
Но если в Unix все является файлом, как обрабатываются разные классы?Я просто не могу представить, как это работает по аналогии с Windows.Этот файл представляет собой способ связи с корневым драйвером USB?