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.

[参考译文] Linux/AM5716:PCIe 字节访问问题

Guru**** 2549240 points
Other Parts Discussed in Thread: XIO3130, AM5716, AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/604000/linux-am5716-pcie-byte-access-issue

器件型号:AM5716
主题中讨论的其他器件:XIO3130AM5728

工具/软件:Linux

我们将 AM5716与通过 XIO3130 PCI Express 开关连接的 XR17V358 (PCIe UART)配合使用。  操作系统是 TI SDK 中提供的 Linux 4.4.32内核。  我们在 X1中使用 PCIe-0。

Linux 检测并枚举根复合体。 XIO3130和 XR17V358上的端口、但我们发现、仅当地址在4字节边界上时、对 UART 的字节访问才返回正确的值。

如果我们在4字节边界上发出 DWORD 读取、则4字节将被正确读取。

有什么想法导致这种行为?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请参阅 AM571x 勘误表 i870。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的理解是、勘误表 i870适用于 EP 模式、而不是我们使用的 RC 模式。

    我还看到了勘误表 i909、但我们的器件树将存储器范围定义为0x20013000-0x2ffffff。

    我在 am5728上看到另一篇关于类似问题的文章(e2e.ti.com/.../2212507)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    i870适用于 EP 和 RC 模式。

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

    你是对的。 尽管勘误表 i870的说明中不清楚、但它似乎适用于两种 EP 和 RC 模式。
    我设置 CTRL_CORE_SMA_SW_7控制模块寄存器中的 PCIe_SS1_AXI2OCP_LEGACY_MODE_ENABLE 位
    现在、即使对于非32位对齐的地址、也会返回正确的字节值。
    但是、这对于我们的情况不是一种实际的权变措施、因为这会将所有字节使能设置为1
    读取 TLP。
    这对我们来说是个问题、因为我们的端点器件是一个寄存了8位的 XRV17358 (UART)
    包含相同4字节区域中的中断状态、Rx 数据等。
    对中断状态寄存器的读取似乎也会导致端点器件读取
    RX 数据寄存器。 现在、当中断服务例程检查是否有任何数据时、就没有了。

    是否有其他解决此问题的解决方案?

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

    您好!

    我同意可以更清楚地说明这一问题。 我已提交内部文档更新请求、以向 i870添加澄清说明;它应出现在勘误文档的下一修订版中。

    否、没有针对此特定问题的其他解决方法。