如果我将 USB 串行适配器插入 Mac,/dev 中会显示一个新设备,例如/dev/tty.usbmodem1421 或/dev/tty.usbserial-A7048O1O。
如果这是Linux,我会寻找一个udev规则来解释设备名称的来源以及创建它的原因。
但这是OSX。如何在Mac上分配设备名称(例如,为什么设备名称中那些有趣的数字),以及哪一段代码执行此操作?
Mac OS X 中的设备名称(如果存在)由所涉及的特定驱动程序分配。不涉及单一机制,特别是因为大多数类别的设备根本不会让节点/dev
。
,设备名称中的"有趣的数字"是FTDI芯片的序列号。此操作的逻辑是 FTDI 驱动程序的内部逻辑,不幸的是,该驱动程序不是开源的,因此我无法指出所涉及的代码。:(
顺便提一下,您可以使用 ft232r_prog 更改 FTDI 设备的序列号。
关于Linux的一些评论:
如果这是Linux,我会寻找一个udev规则来解释设备名称的来源以及创建它的原因。
严格来说,几年来,udev 不再负责创建主要条目。早在 2004 年,当 udev 被构思时,就有一个巨大的推动力,将所有内容移动到用户空间,以便我们可以正确编写所有内容。 /dev
曾经是由 udev 填充的 tmpfs(在它是磁盘上的常规目录之前,所有设备节点都预先填充,通常由一个名为 MAKEDEV
的脚本填充)。
当 udev 的第一次迭代被抛出时,我们有一个伪文件系统(如 proc 或 sysfs)devfs,但它不允许修改条目。条目的名称由内核和加载到其中的驱动程序确定。当时我已经建议(搜索邮件列表)混合使用 tmpfs 和 devfs,并且只做必要的修改,但让内核对条目负责(当时它被击落了)。瞧,几年后我们得到了devtmpfs,就是这样。