本部分回答与 FreeBSD 进行串行通信的常见问题.PPP 和 SLIP 在网络部分进行阐述. Networking
在 FreeBSD 内核引导过程中, 它会根据配置去探测系统中的串口。 您可以在系统启动时观察, 或在系统完全启动之后运行下面的命令:
% dmesg | grep -E "^sio[0-9]"
下面是上述命令常见的输出结果:
sio0: <16550A-compatible COM port> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0 sio0: type 16550A sio1: <16550A-compatible COM port> port 0x2f8-0x2ff irq 3 on acpi0 sio1: type 16550A
上面显示了两个串口。 第一个在 IRQ 4 上, 正在使用的端口地址 0x3f8, 为 16550A 类型的 UART 芯片。 第二块使用同样类型的芯片但是使用 IRQ 3 端口地址为 0x2f8。 内置调制解调器按串口方式处理 ── 除非始终有一个调制解调器“连接” 在端口上。
GENERIC kernel 支持上例中的两个串口使用相同 IRQ 和端口地址。 如果这样设置在你的系统上显示不正确, 可能是你增加了调制解调器卡, 或者你使用比在 kernel 上配置的更多的端口, 那么你重新配置一下 kernel 就可以了。 可以查看 关于创建 kernel 以获取更多细节.
第三个串口, sio2 (查看 sio(4), 就像在DOS下的 COM3 一样), 在 /dev/cuad2 上有拨出设备, 同时在 /dev/ttyd2 上有拨入 设备. 这两类设备有什么区别吗?
你使用 ttydX 来拨入. 当打开设备 /dev/ttydX 使它处于阻塞模式时, 一个进程将等待 相应的设备 cuadX 改变为非激活态, 然后等待载波检测线路变为激活态. 当你打开设备, cuadX 它将确认串口是否已经被设备 ttydX 使用. 如果端口可用, 它将 “获取” 该端口, 通过设备 ttydX 进行该端口的获取. 同样, 设备 cuadX 并不在意载波检测. 通过这种方式和一个自动应答调制解调器, 你可以实现 远程用户登录,在该远程登录过程的同时还可以用同一个调制解调器拨出号码, 由系统来处理该冲突.
再次强调, 关于内核配置的部分提供了与之相关的信息。 对于多端口串口卡, 您可能需要为卡上的每个 sio(4) 设备在 device.hints(5) 文件中进行对应的配置。 不过, 只需要在其中的一项上指定 IRQ。 卡上的所有端口会共享同一个 IRQ。 出于一致性的考虑, 请使用最后一个串口来指定 IRQ。 此外, 您应在内核的联编配置中加入下列选项:
options COM_MULTIPORT
下面的 /boot/device.hints 例子用于 AST 4-端口串口卡, 使用 IRQ 12:
hint.sio.4.at="isa" hint.sio.4.port="0x2a0" hint.sio.4.flags="0x701" hint.sio.5.at="isa" hint.sio.5.port="0x2a8" hint.sio.5.flags="0x701" hint.sio.6.at="isa" hint.sio.6.port="0x2b0" hint.sio.6.flags="0x701" hint.sio.7.at="isa" hint.sio.7.port="0x2b8" hint.sio.7.flags="0x701" hint.sio.7.irq="12"
这些标志表示主端口的 minor 编号是 7 (0x700), 而所有的端口共享 IRQ (0x001)。
请参见 FreeBSD 使用手册中的 串口通讯 部分。
请参见 FreeBSD 使用手册中的 拨入服务 部分。
请参见 FreeBSD 使用手册中的 终端 部分。
请参阅 FreeBSD 使用手册中的 这个答案。
请参阅 FreeBSD 使用手册中的 这个答案。
请参阅 FreeBSD 使用手册中的 这个答案。
请参阅 FreeBSD 使用手册中的 这个答案。
请参阅 FreeBSD 使用手册中的 这个答案。
请参阅 FreeBSD 使用手册中的 这个答案。
请参阅 FreeBSD 使用手册中的 这个答案。
请参阅 FreeBSD 使用手册中的 这个答案。
请参阅 FreeBSD 使用手册中的 这个答案。
请参阅 FreeBSD 使用手册中的 这个答案。
请参阅 FreeBSD 使用手册中的 这个答案。
本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.