在 Linux 上查找并行端口的内存地址
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/8829820/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Finding Memory Address of a Parallel Port on Linux
提问by Sam
I'm trying to find the base (memory) address of a parallel port I have connected to my laptop via a PCI express card. Running lspci -v
shows that my computer recognizes the parallel port and gives the I/O ports (1000 and 1008) but not the memory address (other entries have both ports and memory locations…this card is the only entry without a memory address). Also, when I look in /proc/ioports
I get the same ports given in lspci. However, when I try to use either of those addresses in the program I'm running (EMC2 to control stepper motors), it does not find a parallel port at that address.
我试图找到我通过 PCI express 卡连接到我的笔记本电脑的并行端口的基(内存)地址。运行lspci -v
显示我的电脑识别并口并提供 I/O 端口(1000 和 1008)但没有提供内存地址(其他条目有端口和内存位置......这张卡是唯一没有内存地址的条目)。此外,当我查看时,/proc/ioports
我得到了 lspci 中给出的相同端口。但是,当我尝试在我正在运行的程序中使用这些地址中的任何一个(EMC2 来控制步进电机)时,它在该地址找不到并行端口。
What would be really great is if there were an analogue to the Windows Device Manager -> Ports -> Resources. Is there any way to do this in Ubuntu? Is there a standard memory location for PCIe devices?
如果有一个类似于 Windows 设备管理器 -> 端口 -> 资源的东西,那将是非常棒的。有没有办法在 Ubuntu 中做到这一点?PCIe 设备是否有标准内存位置?
Edit:The output from lspci -v
编辑:输出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
And for reference, another entry that shows the memory location:
作为参考,另一个显示内存位置的条目:
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
采纳答案by crazydan
Try cat /proc/ioports | grep parport
to filter the output of ioports.
尝试cat /proc/ioports | grep parport
过滤 ioports 的输出。
回答by Michael Slade
Quick answer: there isno memory location for the parallel port. Parallel ports only ever have IO ports allocated to them. This is the way parallel port interfaces have worked for decades, and nobody has felt the need to make an incompatible memory mapped interface that would need special drivers.
快速回答:有是并行端口没有记忆位置。并行端口只分配有 IO 端口。这是并行端口接口几十年来一直工作的方式,没有人觉得需要制作一个需要特殊驱动程序的不兼容内存映射接口。
Now I must ask, why are you intent on finding the port's memory location? What do you want to do with it?
现在我必须问,你为什么要寻找端口的内存位置?你想用它做什么?