我正在尝试使用该setserial
命令将 Brainboxes PX-246 PCI Express 串行卡分配给 /dev/ttyS.. 设备,但是该卡似乎没有 I/O 端口地址(只有内存地址)。
lspci -v
给出以下结果:
05:00.0 Serial controller: Brain Boxes Device 4016 (rev 02) (prog-if 06 [16950])
Subsystem: Brain Boxes Device 4016
Flags: fast devsel, IRQ 18
Memory at f7600000 (32-bit, non-prefetchable) [size=16K]
Memory at f7400000 (32-bit, non-prefetchable) [size=2M]
Memory at f7200000 (32-bit, non-prefetchable) [size=2M]
Capabilities: [40] Power Management version 3
Capabilities: [70] Express Endpoint, MSI 00
Capabilities: [b0] MSI-X: Enable- Count=16 Masked-
Capabilities: [100] Device Serial Number 00-30-e0-11-11-00-01-50
Capabilities: [110] Power Budgeting <?>
是否可以将内存地址分配给串行设备而不是 I/O 端口?
目前我正在 Ubuntu 16.04 下测试该卡,但最终将在 Fedora 系统上使用。
任何帮助将非常感激!
答案1
OXPCIe952 的数据表如下这里,它在第 3 页上说,根据 5 个引脚的硬件配置,该芯片可以在多种模式下启用。
UART 可用于传统模式(使用 I/O 地址)和本机模式(内存映射,问题中显示 3 个 BAR)。如果您没有任何其他功能(PCI 设备05:00.1
,如05:00.2
等),这意味着您的卡已启用一个本机 UART,即第 3 页图表中的第 5 行。它还解释了 BAR 的用途(如果您有兴趣)在第 13 页。正如我所猜测的,第一个 BAR 是 UART 的内存映射 I/O。
该文件8250_pci.c
确实包含该芯片的传统和本机 UART 的 PCI ID,所以是的,我首先尝试的是将 PCI ID 添加到该文件中,重新编译,然后查看它是否有效。