Нет необходимости писать драйвер пространства ядра. Вы можете открыть /dev/ttyACM0
с помощью системного вызова open
, установить для него параметры, используя term ios (необязательно), а затем использовать системные вызовы read
и write
для чтения и записи. объемные данные с вашего устройства. К этим системным вызовам проще всего обращаться из C и C ++, но большинство языков имеют библиотеку, которую можно использовать для доступа к последовательным портам.
Я не знаю отличного способа чтения данных из конечной точки прерывания. в Linux но вы, по крайней мере, можете взглянуть на ioctl TIOCMGET, TIOCGICOUNT и TIOCMIWAIT, в которых вы действительно нуждаетесь.
Интерфейс последовательного порта Linux абстрагирует все подробности о USB, конечных точках и массовых передачах, поэтому вы можете использовать более простой и абстрактный API для связи с последовательным портом. Фактически, вы можете использовать один и тот же код на любом типе последовательного порта, независимо от того, какой драйвер ядра реализует последовательный порт. Это может помочь вам найти в Inte rnet такие вещи, как "linux программирование последовательного порта" или "программирование последовательного порта posix", чтобы понять, как это сделать.
Если вам действительно интересно как работает драйвер Linux CD C ACM и как он преобразует системный вызов write
в соответствующую передачу USB, вы можете прочитать источник драйвера cd c -acm . Тем не менее, это способ помимо того, что вам нужно сделать, чтобы просто использовать последовательный порт.