/dev/tty* 和 /dev/bus/usb/001/002 有什么区别?

/dev/tty* 和 /dev/bus/usb/001/002 有什么区别?

当我插入使用LUFA USB 框架(或任何 USB<->串行外围设备),Ubuntu 会创建一个/dev/ttyACM*设备文件。它还会创建一个/dev/bus/usb/001/002文件和一/sys/bus/usb/devices/usb1/1-1/1-1.3/1-1.3.1/棵树。

这些之间有什么区别?我问是因为我正在使用皮尤代夫,它提供了如/dev/bus/...示例的设备节点,但我不知道这是否与 tty 不同。是吗?

答案1

/sys/bus/usb/devices/*树描述了完整的物理 USB 拓扑,并包含有关每个设备的元数据。

这些/dev/bus/usb/<bus number>/<device number>设备以简化的方式寻址每个设备(因此您不必关心设备是直接连接还是通过一个或多个 USB 集线器连接,只需选择正确的总线即可),并允许将原始 USB 数据包传递到设备/从设备传递。使用 USB 串行转换器,您可以发送请求数据包并返回描述串行端口握手线当前状态的响应。

另一方面,该/dev/ttyACM*设备隐藏了 USB 总线的复杂性,并允许您像直接连接的串行端口一样控制 USB<->串行外围设备的串行端口,并具有 Unix 样式 tty 驱动程序的所有功能。由于 USB 总线引起的延迟,某些功能可能不如“真实”串行端口那样好用:特别是,尝试以精确的时间对控制线进行位拆解可能不起作用。

相关内容