Thread 中讨论的其他器件:TDA4VH
工具/软件:
你好
我在 TDA4VH 工作。
我通过 DMA 和 CPU 发起 PCIe 事务。
我需要根据事务的重要性设置流量类别 (TC)。
当事务由 DMA 发起时、我如何执行此操作?
当事务由 CPU 发起时、如何执行此操作?
TDA4VH 可以是根复合体或端点。
提前感谢您的答复,
JPH
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.
嗨、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
尊敬的 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