工具与软件:
您好!
我有一个配置、其中 Sitara (am64xx)配置为 PCIe 端点、Jacinto (j784s4)配置为 PCIe 根复合体。
要将 Sitara 配置为端点、我遵循了以下准则: https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/08_06_00_42/exports/docs/linux/Sitara/Kernel/schirl Foundational_Components Kernel_Drivers PCIe/384.html Ie_End_Point。
在 Jacinto 侧、我实现了 R5F 的应用、旨在通过 PCIe 配置和执行通信。 为了开发该应用、我使用了 Sitara SDK 代码作为基础。
使用此代码、我现在可以建立链路、并从 Jacinto 访问远程器件的供应商 ID、同时查看其他配置寄存器。
由于我使用 AM64x SDK 中的相同函数来在 J784S4的 R5F 上实现、因此我也使用相同的结构来配置输入和输出区域。
例如:
出站配置(obAtuConfigPcie1):
Pcie_ObAtuCfg obAtuConfigPcie1[] =
{
{
.regionIndex = 1,
.tlpType = PCIE_TLP_TYPE_MEM,
.lowerBaseAddr = <expected value>,
.upperBaseAddr = 0x0,
.regionWindowSize = 4095,
.lowerTargetAddr = <expected value>,
.upperTargetAddr = 0x0,
},
};入站配置(ibAtuConfigPcie1):
Pcie_IbAtuCfg ibAtuConfigPcie1[] =
{
{
.regionIndex = 0,
.tlpType = PCIE_TLP_TYPE_MEM,
.lowerBaseAddr = <expected value>,
.upperBaseAddr = 0x0,
.regionWindowSize = 4095,
.lowerTargetAddr = (uint32_t)dst_buf,
.upperTargetAddr = 0x0,
.barAperture = PCIE_RCBARA_4K,
.barCfg = PCIE_BARC_32B_MEM_BAR_NON_PREFETCH,
},
{
.regionIndex = 1,
.tlpType = PCIE_TLP_TYPE_MEM,
.lowerBaseAddr = <expected value>,
.upperBaseAddr = 0x0,
.regionWindowSize = 255,
.lowerTargetAddr = <expected value>,
.upperTargetAddr = 0x0,
.barAperture = PCIE_RCBARA_4K,
.barCfg = PCIE_BARC_32B_MEM_BAR_NON_PREFETCH,
},
};
现在、考虑到我要配置根复合体中的一个输出区域和两个输入区域、我想确认:
lowerTargetAddr 和 lowerBaseAddr 字段需要哪些值? 我不要求绝对值,但表示地址类型应该是本地的还是远程的。
谢谢你。