【发布时间】:2012-01-12 03:41:04
【问题描述】:
我正在尝试查找通过 PCI Express 卡连接到笔记本电脑的并行端口的基本(内存)地址。运行lspci -v 表明我的计算机识别并口并给出 I/O 端口(1000 和 1008)但不给出内存地址(其他条目同时具有端口和内存位置……这张卡是唯一没有内存地址的条目) .此外,当我查看/proc/ioports 时,我得到的端口与 lspci 中给出的端口相同。但是,当我尝试在我正在运行的程序(EMC2 控制步进电机)中使用其中任何一个地址时,它在该地址找不到并行端口。
如果有类似 Windows 设备管理器 -> 端口 -> 资源,那就太好了。有没有办法在 Ubuntu 中做到这一点? PCIe 设备是否有标准内存位置?
编辑:
lspci -v的输出
04:00.0 Parallel controller: Oxford Semiconductor Ltd Device c110 (prog-if 02)
Subsystem: Oxford Semiconductor Ltd Device c110
Flags: bus master, fast devsel, latency 0, IRQ 18
I/O ports at 1000 [size=8]
I/O ports at 1008 [size=4]
Capabilities: [40] Power Management version 3
Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-
Capabilities: [70] Express Legacy Endpoint, MSI 00
Capabilities: [100] Device Serial Number 10-01-00-11-11-e0-30-00
Capabilities: [110] Power Budgeting <?>
Kernel driver in use: parport_pc
Kernel modules: parport_pc
作为参考,另一个显示内存位置的条目:
0c:03.0 FireWire (IEEE 1394): Agere Systems FW322/323 (rev 61) (prog-if 10)
Subsystem: Agere Systems FW322/323
Flags: bus master, fast Back2Back, medium devsel, latency 248, IRQ 19
Memory at 8c000000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [44] Power Management version 2
Kernel driver in use: ohci1394
Kernel modules: firewire-ohci, ohci1394
【问题讨论】:
-
您能否将
lspci -w的输出附加到您的并口卡上?我可以告诉你,PCIe 设备没有标准的内存位置,并且并行端口通常没有内存地址区域。 -
@adrian lspci 抱怨 -w 不是有效标志。我读过 0x378、0x278 和 0x3BC 是并行端口的三个标准位置,但我的似乎不在这些位置中的任何一个。有没有办法根据 I/O 端口号确定内存地址?
-
根据 EMC2 文档wiki.linuxcnc.org/emcinfo.pl?TroubleShooting,您必须卸载 linux 内核模块 parport_pc 因为它可能会控制并行端口地址并且您的软件无法访问它们。使用
lsmod和rmmod删除所有与parport 连接的模块(如parport_pc、parport、ppdev),然后重试。 -
@Sam 对不起 - 从 EMC2 文档粘贴的错字。应该是
lspci -v。并口卡一般只有I/O口,所以你的lspci输出是正常的。 -
所以我们不知道它是如何得到修复的,但它今天开始工作......之前 I/O 端口在启动时被禁用,但今天它们被启用。不知道这是如何或为什么发生的,但它似乎完成了工作。感谢大家的帮助!
标签: linux pci parallel-port memory-address