Когда я включаю устройство, которое использует платформу USB LUFA (или любой USB <-> последовательное периферийное устройство), Ubuntu создает a /dev/ttyACM*
файл устройств. Это также создает a /dev/bus/usb/001/002
файл и a /sys/bus/usb/devices/usb1/1-1/1-1.3/1-1.3.1/
дерево.
Каковы различия между ними? Я спрашиваю, потому что я использую pyudev, который обеспечивает узлы устройства такой как /dev/bus/...
пример, но я не знаю, отличается ли это от tty. Это?
/sys/bus/usb/devices/*
дерево описывает всю физическую топологию USB и содержит метаданные о каждом устройстве.
/dev/bus/usb/<bus number>/<device number>
устройства обращаются к каждому устройству упрощенным способом (таким образом, Вы не должны заботиться о том, подключено ли устройство непосредственно или через один или несколько концентраторов USB, просто выберите правильную шину), и позволяет передающие необработанные пакеты USB устройству. С USB последовательный преобразователь Вы могли бы отправить пакет запроса и возвратить ответ, описывающий текущее состояние линий квитирования последовательного порта.
/dev/ttyACM*
устройство, с другой стороны, скрывает сложность Шины USB и позволяет Вам управлять последовательным портом USB <-> последовательное периферийное устройство в значительной степени как непосредственно соединенный последовательный порт со всеми функциями стиля Unix tty драйвер. Из-за задержек, вызванных Шиной USB, некоторые вещи не могут работать, а также с "реальным" последовательным портом: в частности, пытается к разрядному удару, строки управления с точной синхронизацией не могли бы работать.