This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] XIO2001:XIO2001

Guru**** 2539500 points
Other Parts Discussed in Thread: XIO2001

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/729845/xio2001-xio2001

器件型号:XIO2001

我们在单板计算机中使用 PCIe 转 PCI 总线桥接器、这是基于英特尔的主板。

我们将 XIO2001用于 PCIe 至 PCI 接口。  

制造商器件型号

  XIO2001IZGU

说明

  IC PCI-Express /总线桥169BGA

我们已经检查了此网桥上的所有现代 PCI 卡,我们能够识别 PCI 卡,并且它在操作系统环境中工作。

我们的问题是、我们有一张卡、它是1990年代开发的。 这是网卡。  

PCI 卡连接在此总线上、请求的内存高于 MMIO 空间(4GB)。 您能告诉我们它的行为吗?

谢谢、

Imthiyaz

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    "超过4GB"意味着该器件为64位。 实际上是这样吗?

    该卡在其配置寄存器中确切报告了什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    该卡仅为32位。 但它正在请求4GB 以上的内存。

    PCI 配置空间数据如下所示:

    PCI 段00总线05设备00功能00 [EFI 0005000000]
    00000000:00 01 00 00 80 4A-AA 3C C3 55 10 20 00 *… J.<.U. 000010
    :08 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 *.......... *
    00000020:00 00 00 00 00 00 00-00 00 00 00 FF FF 7F *.......... *
    00000030:00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 *.......... *
    
    00000040:20 00 00 02 00 01 00-00 00 00 00 00 00 00 00 * *
    00000050:00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 *.......... *
    00000060:00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 *.......... *
    00000070:00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 *.......... *
    00000080:00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 *.......... *
    00000090:00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 *.......... *
    000000A0:00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 *.......... *
    000000B0:00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 *.......... *
    000000C0:00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 *.......... *
    000000D0:00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 *.......... *
    000000E0:00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 *.......... *
    000000F0:00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 *.......... *
    
    供应商 ID (0):0000 器件 ID (2):0001
    
    命令(4):0000
    (00) I/O 空间访问被启用: 0 (01)内存空间访问被启用:0
    (02)运行为总线主控: 0 (03)启用监视器特殊周期:0
    (04)启用内存写入和失效:0 (05)启用组件面板侦听:0
    (06)在奇偶校验错误时断言 PERR#:0 (07)执行地址/数据步进: 0
    (08) SERR#驱动器被启用: 0 (09)快速背对背转换...:0
    
    状态(6):4A80
    (04)新功能链接列表:0 (05) 66MHz 功能: 0
    (07)快速背对背功能: 1 (08)主数据奇偶校验错误: 0
    (09) DEVSEL 时序: 介质(11)信号目标中止: 1
    (12)接收到的目标中止: 0 (13)接收到的主机中止: 0
    (14)个信号系统错误: 1 (15)检测到奇偶校验错误: 0
    
    修订 ID (8): AA BIST (0F):不能
    缓存行大小(C):10 延迟定时器(D):20
    接头类型(0E):00、单功能、PCI 器件
    类:未定义-未定义-未定义
    基址寄存器(10):
    Start_Address Type Space Prefetchable? 尺寸 限制-------------------------------------------------------
    
    00000000存储器32位是 80080000 8007FFFF
    00000000存储器32位是 80040000 8003FFFF
    ----------------------------
    扩展 ROM 已禁用(30)
    
    Cardbus CIS PTR (28):00000000
    Sub VendorID (2C): FFFF 子系统 ID (2E): 7FFF
    功能 ptr (34): 00
    中断线(3C): 00 中断引脚(3D): 00
    min_Gnt (3E): 00 MAX_Lat (3F): 00
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如上所示、基地址寄存器用于32位存储器空间。

    您确切地看到4 GB 以上的要求在哪里? (基址寄存器未配置、配置后、高位为零的地址为有效值。)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Base Address Registers(10):
         Start_Address  Type  Space    Prefetchable?     Size             Limit
      --------------------------------------------------------------------------
              00000000  Mem   32 bits  YES            80080000          8007FFFF
              00000000  Mem   32 bits  YES            80040000          8003FFFF
      --------------------------------------------------------------------------
    如上面突出显示的文本中所述、单个条码大小分别为(2GB+512KB)、(2GB+256KB)。 因此、总大小超过4GB。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    根据 PCI 规范:

    在您的情况下、"Type"位为零、因此这些是32位地址范围。 范围内的任何地址都不能超过4 GB;这些地址将会换行。

    无论如何、显示的大小值不会发生。 第6.5.2.1节规定:

    加电软件可以通过向寄存器写入一个全为1的值、然后读回该值来确定器件所需的地址空间大小。 器件将在所有无关地址位中返回0、从而有效地指定所需的地址空间。 未执行的基地址寄存器被硬接线至零。

    此设计意味着使用的所有地址空间都是大小为二的幂、并且自然对齐。

    和:

    实现注释: 调整32位基地址寄存器示例的大小

    在确定基地址寄存器的大小之前、通过命令寄存器禁用寄存器的解码(I/O 或存储器)。 软件保存基地址寄存器的原始值、将0FFFFFFFFh 写入寄存器、然后读回。 通过首先清除编码信息位(I/O 位0、存储器位0-3)、反相所有32位(逻辑非)、然后递增1、可以从读取的32位值中完成大小计算。 得到的32位值是由寄存器解码的存储器/ I/O 范围大小。

    显然、该器件不会实现基址寄存器的最高有效位、即、它有一条31位总线。 此硬件错误会破坏上述大小调整算法。 无论如何、这与 XIO2001没有任何关系。