Thread 中讨论的其他器件: TMDS64EVM
工具/软件:
您好、专家。
我有两个 TMDS243EVM、并且正在运行 PCIe 示例代码。
我将下图中的 PCIe 电缆连接到两个电路板的 PCIe 连接器
并分别下载 pcie_benchmark_ep 和 pcie_benchmark_RC、然后运行该函数:
但 RC 没有响应(输出)。


此致、
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.
工具/软件:
您好、专家。
我有两个 TMDS243EVM、并且正在运行 PCIe 示例代码。
我将下图中的 PCIe 电缆连接到两个电路板的 PCIe 连接器
并分别下载 pcie_benchmark_ep 和 pcie_benchmark_RC、然后运行该函数:
但 RC 没有响应(输出)。


此致、
您好、
由于 MCU+ SDK 09.02.01、pcie_benchmark_RC/EP 示例已损坏、请参阅 MCU+ SDK 版本说明中的已知问题:
PCIe 驱动程序在该版本中进行了扩展、以支持与 x86 RC (Windows 或 Linux) 一起使用、但大多数现有示例并未进行调整。
唯一可行的示例是 pcie_msi_IRQ_EP/RC。
我认为、在 RC 和 EP 上应该断开 J34 跳线、对于 TMDS243EVM 设置来说、J35 无关紧要。
首先为 EP 上电、加载应用程序并使其运行、然后为 RC 上电、加载应用程序并使其运行。
如果您得到以下信息:
Endpoint Device ID: FFFFX Endpoint Vendor ID: 1X
修改 pcie_msi_irq_rc_main 中读取这些 ID 的代码:
/*
* retry reading vendor and device ID in case of CRS completion
*/
do {
status = Pcie_getVendorId(gPcieHandle[CONFIG_PCIE0], PCIE_LOCATION_REMOTE, &vndId, &devId);
} while (status == SystemP_SUCCESS && vndId == 0x0001 && devId == 0xffff);
此致、
Dominic
RC 示例似乎正常工作。
当我连接另一个 PCIe 设备(例如 NIC)时、EP 的设备/供应商 ID 将正常输出。
但 EP 示例似乎无法正常工作。
放入 pcie_msi_irq_EP 示例代码并将 PCIe 连接到 RC 供电电路板时、
pcie_waitLinkUp (object->handle) 代码不会“链接起来“、而是在 while 语句中循环。
(SDK 版本:11.01.00.17)
(未连接 J34。 无论 PCIE_SERDES_REFCLK0_P (REFCLK0+)、 PCIE_SERDES_REFCLK0_N (REFCLK1-) 连接到电缆,都不能正常工作)
我该怎么办?
仅当您焊接 R661 等特定电阻器时、该示例代码才起作用吗?


您好、
[引述 userid=“572738" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1546877/tmds243evm-pcie-example-does-not-work-tmds243evm-tmds243evm/5953288放入 pcie_msi_irq_EP 示例代码并将 PCIe 连接到 RC 供电电路板时、
pcie_waitLinkUp (object->handle) 代码不会“链接起来“、而是在 while 语句中循环。
[/报价]这是使用两个 AM24x/AM64x EVM 上的 pcie_msi_IRQ_EP/RC、还是其他一些 RC?
[引述 userid=“572738" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1546877/tmds243evm-pcie-example-does-not-work-tmds243evm-tmds243evm/5953288(未连接 J34。 无论 PCIE_SERDES_REFCLK0_P (REFCLK0+)、 PCIE_SERDES_REFCLK0_N (REFCLK1-) 连接到电缆,都不能正常工作)
我该怎么办?
仅当您焊接 R661 等特定电阻器时、该示例代码才起作用吗?
[/报价]pcie_msi_IRQ 示例应使用未修改的 EVM(例如,保留 R661 和 pcie_enumerate_ep 示例中提到的其他电阻器,按原样)。 在这种情况下、电缆不应连接 REFCLK。
如果您根据 pcie_enumerate_ep 指令修改了 EVM 以用作 EP、则您的 PCIe 电缆必须连接 REFCLK。
[引述 userid=“572738" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1546877/tmds243evm-pcie-example-does-not-work-tmds243evm-tmds243evm/5957820主机驱动程序示例仅适用于基于 x86 的 RC:

主要原因是需要 IOMMU、允许将示例作为用户空间应用程序通过 VFIO 映射 DMA 缓冲区。 可以修改该示例以仅使用 4KB DMA 缓冲器、以便它也可以在没有 IOMMU 的基于 ARM 的 RC 上运行。 我已经在基于 AM64x Linux 的 RC 上成功使用了该示例。
此致、
Dominic
您好、
我可以尝试在今天晚些时候查看是否使用 SDK 11.01 验证 pcie_msi_irq_EP/RC。
关于您的最终目标、pcie_enumerate_ep 是您的最佳选择、但您需要修改该示例以使用仅 4KB 的较小 DMA 缓冲器。 您是否能够在该设置中枚举 AM24x? lspci 输出仅显示 RPi 组件。
您使用的总线/器件/功能没有太大意义。 示例文档解释了必要的步骤:

如果您看不到 Cadence 设备、则说明您的设置根本无法正常工作。
此致、
Dominic
您好、
我们按照参考图像中所示修改了 TMDS243EVM 电路板(我们的理解是此配置允许 AM243 接收 RPi CM5 提供的 REFCLK—这是否正确?)。
刷写 pcie_enumerate_ep 示例并连接 PCIe 链路后、我们重新启动了 RPi CM5、但似乎链路没有出现。 我们怀疑在此设置下没有发生枚举。
由于我们目前只有一个 TMDS243EVM 可用、因此我们想检查 AM243 上的 PCIe 模块是否正常工作。
在寄存器级别、我们应检查哪些特定的寄存器以验证 PCIe 模块是否正确启用?
此外、即使在 RPi CM5 上减小 DMA 缓冲区大小后、枚举仍然失败。 在这种情况下、我们应该考虑哪些潜在问题?

我们按照参考图像中所示修改了 TMDS243EVM 电路板(我们的理解是,此配置允许 AM243 接收 RPi CM5 提供的 REFCLK—是否正确?)。
是的。
您能否验证电缆是否连接了 REFCLK 1:1、一端的 TX+-连接到另一端的 RX+-、反之亦然?
[引述 userid=“572738" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1546877/tmds243evm-pcie-example-does-not-work-tmds243evm-tmds243evm/5958925刷写 pcie_enumerate_ep 示例并连接 PCIe 链路后、我们重新启动了 RPi CM5、但似乎链路没有出现。 我们怀疑在此设置下没有发生枚举。
由于我们目前只有一个 TMDS243EVM 可用、因此我们想检查 AM243 上的 PCIe 模块是否正常工作。
在寄存器级别、我们应检查哪些特定的寄存器以验证 PCIe 模块是否正确启用?
您是否可以尝试以下步骤:
如果 EP 一直检查链路、则否、枚举无法继续。 链路是第一个要求。
此外、即使在 RPi CM5 上减小 DMA 缓冲区大小、枚举仍然失败。 在这种情况下、我们应该考虑哪些潜在问题?
这不会影响枚举。 DMA 缓冲区大小仅影响 Linux RC 示例程序。
此致、
Dominic
我刚刚使用 RPi5 以及“GeeekPi P02 适用于 Raspberry Pi 5 的 PCIe 插槽“和 TMDS64EVM 对此进行了测试、RPi5 成功枚举了 pcie_enumerate_ep 示例、没有出现任何问题:

在 AM64x 终端上、我看到此输出:
PCIe: EP initialized and waiting for link PCIe: link detected PCIe link parameter: PCIe Gen2 with 5.0 GT/s speed, number of lanes: 1 EP is in D0 state PCIe: signaling APPL ready APPL: pcie ready
在 Linux shell 中、我可以看到 AM64x:
vmaster@krikkit:~ $ lspci
0000:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries Device 2712 (rev 21)
0000:01:00.0 Unassigned class [ffff]: Cadence Design Systems, Inc. Device 0100
0001:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries Device 2712 (rev 21)
0001:01:00.0 Ethernet controller: Device 1de4:0001
vmaster@krikkit:~ $ sudo lspci -vvv -s 0000:01:00.0
0000:01:00.0 Unassigned class [ffff]: Cadence Design Systems, Inc. Device 0100
Subsystem: Cadence Design Systems, Inc. Device 0000
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Region 0: Memory at 1b00200000 (32-bit, non-prefetchable) [disabled] [size=32K]
Region 1: Memory at 1b00000000 (32-bit, prefetchable) [disabled] [size=1M]
Region 2: Memory at 1b00100000 (64-bit, non-prefetchable) [disabled] [size=1M]
Capabilities: [80] Power Management version 3
Flags: PMEClk- DSI- D1+ D2- AuxCurrent=0mA PME(D0+,D1+,D2-,D3hot+,D3cold-)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [90] MSI: Enable- Count=1/16 Maskable- 64bit+
Address: 0000000000000000 Data: 0000
Capabilities: [b0] Null
Capabilities: [c0] Express (v2) Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <1us, L1 <1us
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 0W
DevCtl: CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
MaxPayload 128 bytes, MaxReadReq 512 bytes
DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
LnkCap: Port #0, Speed 5GT/s, Width x1, ASPM L1, Exit Latency L1 <8us
ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
LnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 5GT/s, Width x1
TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Range B, TimeoutDis+ NROPrPrP- LTR+
10BitTagComp- 10BitTagReq- OBFF Via message, ExtFmt+ EETLPPrefix+, MaxEETLPPrefixes 1
EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
FRS- TPHComp- ExtTPHComp-
AtomicOpsCap: 32bit- 64bit- 128bitCAS-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ 10BitTagReq- OBFF Disabled,
AtomicOpsCtl: ReqEn-
LnkCap2: Supported Link Speeds: 2.5-5GT/s, Crosslink- Retimer- 2Retimers- DRS-
LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-
EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
Retimer- 2Retimers- CrosslinkRes: unsupported
Capabilities: [100 v2] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
HeaderLog: 00000000 00000000 00000000 00000000
Capabilities: [150 v1] Device Serial Number 00-00-00-00-00-00-00-00
Capabilities: [160 v1] Power Budgeting <?>
Capabilities: [1b8 v1] Latency Tolerance Reporting
Max snoop latency: 0ns
Max no snoop latency: 0ns
Capabilities: [1c0 v1] Dynamic Power Allocation <?>
Capabilities: [300 v1] Secondary PCI Express
LnkCtl3: LnkEquIntrruptEn- PerformEqu-
LaneErrStat: 0
Capabilities: [400 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Capabilities: [440 v1] Process Address Space ID (PASID)
PASIDCap: Exec+ Priv+, Max PASID Width: 14
PASIDCtl: Enable- Exec- Priv-
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-
Capabilities: [900 v1] L1 PM Substates
L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
PortCommonModeRestoreTime=255us PortTPowerOnTime=26us
L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
T_CommonMode=0us LTR1.2_Threshold=287744ns
L1SubCtl2: T_PwrOn=26us
Capabilities: [a20 v1] Precision Time Measurement
PTMCap: Requester:+ Responder:- Root:-
PTMClockGranularity: Unimplemented
PTMControl: Enabled:- RootSelected:-
PTMEffectiveGranularity: Unknown
我使用的是 AM64x EVM、但除了在这种情况下未使用的 A53 内核外、AM64x 和 AM243x EVM 应该完全相同。 我使用的电缆是 Adex Electronics PE-FLEX1-G2.MMCX-12-TI1。 在这种情况下、电缆未连接 REFCLK、未修改 AM64x EVM。 如果修改了 EVM、则需要一根连接 REFCLK 的电缆。
此致、
Dominic