【问题标题】:Finding Memory Address of a Parallel Port on Linux在 Linux 上查找并行端口的内存地址
【发布时间】: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 因为它可能会控制并行端口地址并且您的软件无法访问它们。使用lsmodrmmod 删除所有与parport 连接的模块(如parport_pc、parport、ppdev),然后重试。
  • @Sam 对不起 - 从 EMC2 文档粘贴的错字。应该是lspci -v。并口卡一般只有I/O口,所以你的lspci输出是正常的。
  • 所以我们不知道它是如何得到修复的,但它今天开始工作......之前 I/O 端口在启动时被禁用,但今天它们被启用。不知道这是如何或为什么发生的,但它似乎完成了工作。感谢大家的帮助!

标签: linux pci parallel-port memory-address


【解决方案1】:

尝试cat /proc/ioports | grep parport 过滤 ioports 的输出。

【讨论】:

    【解决方案2】:

    快速回答:没有用于并行端口的内存位置。并行端口只有分配给它们的 IO 端口。这是并行端口接口几十年来的工作方式,没有人觉得需要制作一个需要特殊驱动程序的不兼容内存映射接口。

    现在我必须问,你为什么要寻找端口的内存位置?你想用它做什么?

    【讨论】:

    • 我们试图配置 EMC2(计算机控制加工设备的软件)以与我的计算机一起使用,但它无法识别通过并行端口连接的设备。但后来它开始起作用了。
    • 但如果你一定要问,现在可以回答吗?
    猜你喜欢
    • 2010-09-27
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多