在 FreeBSD 上,我正在寻找一种列出串行通信设备的方法。
计算机安装了其中两个:板载串行控制台 ( ttyS0
) 和内部模拟调制解调器。
我可以通过以下方式找到有关内部调制解调器的信息pciconf
:
# pciconf -lbcevV pci0:5:8:0
none0@pci0:5:8:0: class=0x078000 card=0x8d881043 chip=0x270214f1 rev=0x01 hdr=0x00
vendor = 'Conexant Systems, Inc.'
class = simple comms
bar [10] = type Memory, range 32, base 0xd1000000, size 65536, enabled
bar [14] = type I/O Port, range 32, base 0xa800, size 8, enabled
cap 01[40] = powerspec 2 supports D0 D3 current D0
因此,这显然是调制解调器,我可以通过供应商 ID 来判断,它与我的 Conexant RD01-D270 内部模拟调制解调器上的芯片一致。
dmidecode -t connector
让我找到这个:
Handle 0x000F, DMI type 8, 9 bytes
Port Connector Information
Internal Reference Designator: COM1
Internal Connector Type: 9 Pin Dual Inline (pin 10 cut)
External Reference Designator:
External Connector Type: DB-9 male
Port Type: Serial Port 16450 Compatible
所以这显然是板载串行接口。
问题是:它们是什么设备?我可以相当安全地假设板载串行接口是/dev/ttyS0
,但这只是一个猜测。事实上,因为这是 FreeBSD,所以很可能是/dev/console
。但调制解调器是哪一个呢?我认为这将是一个串行控制台或拨号器,但这/dev/cuau0
只是一个猜测。
有没有一种可靠的方法可以找出这个问题,而无需猜测等?
答案1
使用pstat(8)
。它将显示所有终端,然后您可以从中减去虚拟终端 (ttyv*) 和 ptys,留下串行终端 - 在本例中为 ttyu0 和 ttyu1,如 中所述uart(4)
:
% pstat -t
LINE INQ CAN LIN LOW OUTQ USE LOW COL SESS PGID STATE
ttyu0 0 0 0 0 0 0 0 0 0 0 IC
ttyu1 0 0 0 0 0 0 0 0 0 0 IC
ttyv0 1920 0 0 192 1984 0 199 37695 87297 87297 Oicl
ttyv1 1920 0 0 192 1984 0 199 7 852 852 Oil
ttyv2 1920 0 0 192 1984 0 199 7 853 853 Oil
ttyv3 1920 0 0 192 1984 0 199 7 854 854 Oil
ttyv4 1920 0 0 192 1984 0 199 7 855 855 Oil
ttyv5 1920 0 0 192 1984 0 199 7 856 856 Oil
ttyv6 1920 0 0 192 1984 0 199 7 857 857 Oil
ttyv7 1920 0 0 192 1984 0 199 7 858 858 Oil
ttyv8 0 0 0 0 0 0 0 0 0 0 -
ttyv9 0 0 0 0 0 0 0 0 0 0 -
ttyva 0 0 0 0 0 0 0 0 0 0 -
ttyvb 0 0 0 0 0 0 0 0 0 0 -
pts/1 1920 0 0 192 1984 0 199 99999 874 882 Oi
pts/3 1920 0 0 192 1984 0 199 104 79048 79048 Oi
pts/2 1920 0 0 192 1984 0 199 3 19896 32414 Oi
pts/4 1920 0 0 192 1984 0 199 38 46538 46538 Oi
pts/0 1920 0 0 192 1984 0 199 65737 50951 50956 Oil
pts/5 1920 0 0 192 1984 0 199 0 50987 50993 Oi
答案2
您在 dmesg 中没有看到该调制解调器的驱动程序,因为没有加载该驱动程序,这可能意味着 FreeBSD 没有相应的驱动程序。这是因为该调制解调器使用 CX11252-15 芯片组,并且不是硬件调制解调器,而是带有闭源驱动程序的“softmodem”或“winmodem”。 FreeBSD 不包括对任何 winmodem 的开箱即用支持。
另外,“isa”位并不像您想象的那么奇怪。许多(大多数?全部?)PC 仍然具有内部 PCI-ISA 桥来支持传统设备。板载调制解调器和串行端口、PS2 kb/鼠标、RTC 等都属于这一类。