我正在尝试在 FreeBSD 9.1(预发行版)机器上安装 PCI 串行 IO 卡。我花了几个小时都没有成功。我使用 puc 和 COM_MULTIPORT 选项重新编译了内核。没有成功。
这是“pciconf -l | grep ^none”的结果:
none0@pci0:0:9:0: class=0x070002 card=0x32534348 chip=0x32534348 rev=0x10 hdr=0x00
none1@pci0:0:17:5: class=0x040100 card=0x45521106 chip=0x30591106 rev=0x50 hdr=0x00
答案1
如果我们翻译部分信息,我们会得到这样的结果:
none0@没有连接驱动程序 pci0:0:9:0:卡的位置(在 PCI 总线上) class=0x070002 这似乎表示串行 IO 卡 card=0x3253 4348 4348表示南京秦恒电子有限公司(http://wch.cn) PCI 数据库将 0x3253 标识为 “PCI 串行并行多串行板”
换句话说,我们知道它是哪张卡。但你的内核无法识别它。没有识别它,就没有加载正确的驱动程序。
这里有三种可能的解决方案:
- 找到正确的驱动程序(通常通过制造商的网站)并使用它。
- 或者将内核更新到可以识别此设备的版本
- 或者编写自己的驱动程序。
3)工作量很大。
2) 最简单的方法是更新内核,但您已经在使用最新的非当前内核。您可以尝试 10/current,但我怀疑它是否有效。不过值得一试。
或者修改内核源代码。如果你还没有,请下载它,然后:(
cd /usr/src/sys/dev/uart/
vim uart_bus_pci.c
/TOPIC Semiconductor TP560 56k modem
向前搜索包含以下内容的行TOPIC 半导体 TP560 56k 调制解调器)
添加标有加号的行。(使用i
进入插入模式)
{ 0x151f, 0x0000, 0xffff, 0, "TOPIC Semiconductor TP560 56k 调制解调器", 0x10 }, +{ 0x4348, 0x3253, 0xffff, 0, "WinChipHead 双端口 RS-232", 0x10 }, { 0x9710, 0x9820, 0x1000, 1, "NetMos NM9820 串口", 0x10 },
节省 (Escape:wq
)
重新编译内核。您已经使用 puc 和 COM_MULTIPORT 选项完成了此操作,因此您知道如何操作。对于遇到类似问题的其他读者,请参阅http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-building.html
如果一切顺利,内核现在将 [尝试] 附加驱动程序。希望是可以工作的驱动程序。
后者无法保证,因为并非所有串行卡都以完全相同的方式使用乘法器。