我最近遇到了一个编译驱动程序的情况PCIe 转串行适配器. (更具体地说,该卡上的 AX99100 芯片组)
为了快速测试,我并没有真正安装驱动程序,而只是使用命令insmod
来加载驱动程序。
经过研究dmesg
,我发现它生成了/dev/ttyF0
和/dev/ttyF1
而不是/dev/ttyS0
和,这很奇怪/dev/ttyS1
我想知道这个设备名称是怎么来的?
这是因为insmod
PCIe 还是因为操作系统?
驱动程序工作正常。
答案1
在 Linux 上,ttyS
不是所有串行端口的通用名称——它是 PC 上 8250 UART 串行端口的名称,同样也是其他一些平台上的“内置”串行端口的名称。
因此,每个驱动程序在创建设备时都会决定自己的名称,许多“附加”串行卡(使用各种专有芯片)的驱动程序会故意选择不同的前缀以避免混淆。就您而言,驱动程序的作者选择使用ttyF
。
(毕竟,PCI 卡实际上并没有模拟 8250 串行端口。操作系统将其视为一个完全新的、不同的设备——这就是为什么它首先需要自定义驱动程序。)
以下是 Linux 内置的一些其他示例(我用‘grep’找到的):
- ttyACM – 使用 CDC ACM 协议的 USB 串行适配器
- ttyC – “Cyclades 串行卡”
- ttyEQ – “Equinox SST 多端口串行板”
- ttyMX – “Moxa Intellio 串行卡”
- ttyUSB – 使用其他协议的 USB 串行适配器
- rfcomm – 蓝牙 RFCOMM 串行端口模拟