Thread 中讨论的其他器件:TDA4VH、 AM62P、 AM67
工具/软件:
您好、
在 TDA4VH TRM 中有关 PCIe CBA 基础设施的段落中、介绍了 PCIE_DAT2 区域“用于将 Casel 不等于零的所有请求路由到 PCIe 控制器从端口“。
其中是该区域的地址、因为它既未在 TRM 存储器映射中列出、也未在 Excel 文件中列出。
提前感谢、
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.
工具/软件:
您好、
在 TDA4VH TRM 中有关 PCIe CBA 基础设施的段落中、介绍了 PCIE_DAT2 区域“用于将 Casel 不等于零的所有请求路由到 PCIe 控制器从端口“。
其中是该区域的地址、因为它既未在 TRM 存储器映射中列出、也未在 Excel 文件中列出。
提前感谢、
JPH
尊敬的 JPH:
非零 ASEL 值将导致出站 ATU 旁路。 当 PCIe 控制器用作端点并需要从远程根复合体的存储器读取或写入时、这会很有用。 如果没有出站 ATU 旁路、则必须设置出站 ATU、以便将本地 (EP) 地址读取/写入事务转换为针对远程根复合体存储器的 PCIe 总线地址事务。 使用 ATU 旁路时、本地地址可以与远程根复合体的存储器本身相同、但 ASEL 位除外、该位将在通过 PCIe 链路发送地址而不进行转换之前被删除 — 本地地址的位 0 至 47 也将用作 PCIe 链路上的读取/写入事务地址。
PCIen_DAT0 => 32 位本地地址空间中的 128MB 窗口=>由 ATU 转换、以生成一个针对 PCIe 根复合体存储器中的缓冲区的地址
PCIEN_DAT1 =>由 ATU 转换的 64 位本地地址空间中的 4GB 窗口=>生成一个针对 PCIe 根复合体存储器中缓冲区的地址
PCIen_DAT2=> 48 位本地地址空间中的 2^48 字节窗口=>未转换地址、该地址与 PCIe 根复合体的存储器中的缓冲区地址相同
此致、
Takuma
尊敬的 JPH:
每个地址的位 48 到位 51 对应于 ASEL。 T.R.M.中记录的 SOC 存储器映射对应于 ASEL 0。 ASEL 1 是 PCIE0 的 DAT2、ASEL 2 是 PCIE1 的 DAT2、依此类推。
与大多数其他接口类似、PCIe 相关驱动器/dts 目前仅使用 0 作为 ASEL。 我知道 Linux SDK 中不使用非零 ASEL 的主要示例是 J722S/AM62P 的 CPSW DTS、它使用 DMA 属性中的 ASEL 值 15 将数据路由到 ACP 以实现高速缓存一致性: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi?h=ti-linux-6.12.y#n711
此致、
Takuma
尊敬的 JPH:
我对 ASEL 的理解是、对于 AM67、AM64、AM62P 以及其他 Sitara 系列器件、如果 A 内核集群前面没有 MSMC 存储器、因此数据可以路由到 ACP 以实现高速缓存一致性、也与 PCIe 相关、以便实现地址转换旁路。 我在上一个响应中分享的示例是针对 J722S (AM67) 和 AM62P、以展示如何在器件树中设置 ASEL。 TDA4VH 有一个 MSMC、因此不需要使用 ARM A 内核的 ACP。
因此、我们没有任何使用非零 ASEL 的 C7x 示例。
此致、
Takuma