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.

[参考译文] TDA4VH-Q1:PCIe 流量类别设置

Guru**** 2463330 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1542422/tda4vh-q1-pcie-traffic-class-setting

器件型号:TDA4VH-Q1
Thread 中讨论的其他器件:TDA4VH

工具/软件:

你好

我在 TDA4VH 工作。

我通过 DMA 和 CPU 发起 PCIe 事务。

我需要根据事务的重要性设置流量类别 (TC)。

 

当事务由 DMA 发起时、我如何执行此操作?

当事务由 CPU 发起时、如何执行此操作?

 

TDA4VH 可以是根复合体或端点。

 

提前感谢您的答复,

 

JPH

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

    尊敬的 JPH:

    请参考 J721S2 TRM 的“12.2.2.3.9 PCIe 子系统服务质量 (QoS)“一节。

    此致、

    Takuma

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

    嗨、Takuma

    感谢您的回答。

    我尝试了解 QoS 机制。

    PCIe 入口:

    与 TC 的 PCIe 事务在 CBass PCIe 主事务中转换、根据 PCIe TC 和“TCI"寄存“寄存器选择通道 ID

    中对信道的 QoS 特性进行了编程  CBASS_HC2_QoS_Ipcie_g3x4_128_MAIN_0_PCIe_mst_rd_map 寄存器。

    这是正确的吗?

     

    PCIe 出口:

    其写法为:“PCIe 映射是使用 AXI 出站描述符寄存器在 VC 控制器中完成的。“

    我不明白这是什么意思。  我没有找到相应的寄存器。

    没有 TC 指示?

     

    感谢您的解释

     

    JPH

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

    尊敬的 JPH:

    要引用 TRM、请执行以下操作:

    “"</s>“

    TC 内核中的虚拟通道/传输类 (VC PCIe/PCIE) 功能以及器件系统
    CBASS 服务质量 (QoS) 功能、提供了一种在内部支持差异化 QoS 的机制
    PCIe 子系统。 流量区分策略由传输类 (TC) 和虚拟确定
    通道 (VC) 映射和基于 VC 的仲裁机制。


    当一个或多个 TCS 与指定的物理资源关联时、将建立虚拟通道
    VC ID 提供。 子系统内给定路径上支持的每个通信类别都必须映射到
    已启用的虚拟通道之一。 每个端口都必须支持默认 TC0/VC0 对–这是“硬接线“。
    任何额外的 TC 映射或额外的 VC 资源启用都是可选的。 VC 资源的数量
    在组件中配置或在给定子系统中启用可能会因实现和使用情况而异
    模型要求。


    PCIe 子系统中的 PCIe 内核配置为支持四个虚拟通道 (4VC/4TC)。 适用于这两种入口
    而出站流量 VC3(编号最大的虚拟通道)具有最高优先级。
    对于入口流量、来自 AXI 主信息上每个事务的 TC 信息映射到
    VBUSM 主接口的 CCHANID 信号。 系统级互连可以同时使用 CCHANID
    使用订单 ID 实现 QoS。 表 12-187 显示了 TC 到每个寄存器 12 位 CCHANID 的映射
    VBUSM 主接口。

    “"</s>“

    PCIe 寄存器位于随 TRM 压缩的 J784S4_PCIE20250116.xlsx Registers_Public_工作表的 PCIE 部分。

    此致、

    Takuma

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

    尊敬的 Takuma:

    感谢您的回答。

    正如您所说的、您的答案是对该文件的引用。

    我已经仔细阅读了 TRM 以及包含寄存器详细信息的 Excel 文件:我找到的信息让我猜到入站 QoS 是如何工作的(这是我要求确认的内容)。

    但是关于出站 QoS、我需要进一步解释以了解它的工作原理。 特别是:要获得与 PCIe 出站消息关联的虚拟通道、我必须调整哪些参数? 哪些寄存器受到影响? TRM 中只有 2 个关于出站 QoS 的一般句子。

    提前感谢您提供的任何解释。

    JPH

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

    尊敬的 JPH:

    虚拟通道配置是标准但可选的 PCIe 配置空间寄存器的一部分。 通常、0x029xxxxxx 寄存器是 PCIe 控制器器件的寄存器、而 0x0Dxxxxxx 寄存器是 PCIe 配置空间寄存器。  

    在寄存器 Excel 工作表中、它们将是带有 VC 的寄存器

    在 Linux 中、这将转换为可通过“lspci -vvv“获得的虚拟通道功能寄存器

            Capabilities: [4c0 v1] Virtual Channel
                    Caps:   LPEVC=0 RefClk=100ns PATEntryBits=1
                    Arb:    Fixed- WRR32- WRR64- WRR128-
                    Ctrl:   ArbSelect=Fixed
                    Status: InProgress-
                    VC0:    Caps:   PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
                            Arb:    Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
                            Ctrl:   Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
                            Status: NegoPending- InProgress-
                    VC1:    Caps:   PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
                            Arb:    Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
                            Ctrl:   Enable- ID=1 ArbSelect=Fixed TC/VC=00
                            Status: NegoPending- InProgress-
                    VC2:    Caps:   PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
                            Arb:    Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
                            Ctrl:   Enable- ID=2 ArbSelect=Fixed TC/VC=00
                            Status: NegoPending- InProgress-
                    VC3:    Caps:   PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
                            Arb:    Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
                            Ctrl:   Enable- ID=3 ArbSelect=Fixed TC/VC=00
                            Status: NegoPending- InProgress-
    

    此致、

    Takuma

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

    尊敬的 Takuma:

    感谢您的详细回答、这证实了我对虚拟渠道的理解。

    因此、我相信我大致了解了入站 PCIe 消息的 QoS 机制。

    但是、我仍然不了解当 TC 或对端点执行 VC 访问时如何分配 CPU/DMA。 该配置涉及哪些寄存器?

    感谢您对这篇文章的跟进。

    JPH

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

    尊敬的 JPH:

    到目前为止、我只看到 VC0/TC0 可用于。 我没有任何 Jacinto VC 用作 RC 并通过不同 SoC/SoC TC 对访问端点的示例。

    您是否考虑了特定的端点器件来实现更多 VC / TC?

    此致、

    Takuma

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

    尊敬的 Takuma:

    我们的用例是一个具有多个 TDA4VH 的 PCIe 网络、其中每个端点都可以访问另一个端点、处理具有不同优先级 TC 的事务(即不同的 VC)。  

    “即使您没有代码示例、您能否指出需要对哪些寄存器进行编程? 我正处于设计阶段、希望确保此功能成为可能。“

    感谢您的帮助、

    JPH

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

    尊敬的 JPH:

    [报价 userid=“99231" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1542422/tda4vh-q1-pcie-traffic-class-setting/5954324

    其写法为:“PCIe 映射是使用 AXI 出站描述符寄存器在 VC 控制器中完成的。“

    我不明白这是什么意思。  我没有找到相应的寄存器。

    [/报价]

    最有可能是 Ext_desc 寄存器。

    此致、

    Takuma

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

    尊敬的 Takuma:

    感谢您的答复、这有助于我增进理解。

    在 TDA4VH TRM 的“12.2.3.3.7.2 PCIe 出站地址转换旁路“段中、有一种机制允许覆盖 TC 值。

    我的印象是、只能从 DMA 生成与特定 TC 的事务、而不能从 CPU 生成事务(Casel 必须不为空)。  这是正确的吗?

    此外、这种机制是在绕过出站转换的情况下实现的。 我理解、绕过出站地址转换是能够设置 TC 的条件。 是真的吗?

    提前感谢您的答复。

    JPH

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

    尊敬的 JPH:

    我认为只能从 DMA 而不能从 CPU 生成与特定 TC 的事务(CASEL 必须不为空)。  这是正确的吗?

    这也是我的理解。 只有 UDMA 可以生成 ASEL 值为非零的事务。

    对于 ASEL 问题、我建议读取该线程以了解缓存一致性。 尽管主要关注点是一致性、但它讨论了如何设置 ASEL:关于  AM67:总线侦听以实现缓存一致性 

    引用某些部分:  

    从低级角度来看、PCI 似乎有一个 VBUSM-R 和 VBUSM-W 端口、每个端口有 8 个通道。  每个通道都将有一个 ASEL[...]

    以下是允许设置 ASEL 的 QoS 寄存器块和每通道地址。

    至于绕过地址转换、过去、我们的 SDK (  SK-AM68:旁路模式下的 VMAP) 不支持这一功能 

    此致、

    Takuma

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

    尊敬的 Takuma:

     

    感谢您的最后答复。

    现在、我需要时间检查寄存器并完善我的理解。

     

    本主题的最后一个问题与您有关 VC 配置的答案有关、您在其中提供了 lspci -vvv 屏幕截图。

    在根复合体完成网络发现期间、需要配置多个 VC 寄存器。

    是否有一个负责 VC 的 Linux 配置参数示例?

     

    再次感谢

     

    JPH

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

    尊敬的 JPH:

    我们没有在 TI 测试过的示例。 但是、VC 配置是 lspci 下显示的 PCIe 配置寄存器的一部分、因此应通过 setpci 对其进行配置。 要传递到 setpci 的特定值、我们尚未测试。

    此致、

    Takuma