Troubleshooting PCIe Communication Between an ARM-based Board and Jetson Orin NX

We are trying to establish PCIe communication between an ARM-based board and a Jetson Orin NX, which is mounted on a carrier board via a slot.

We modified ODMDATA according to the official documentation as follows:

ODMDATA="gbe-uphy-config-8,hsstp-lane-map-3,hsio-uphy-config-41"

Then, we applied the following commands:

# For Orin NX/Nano, configure PCIE_EP_ADDR to correspond with the C4 controller:
PCIE_EP_ADDR=14160000

# modprobe pci-epf-dma-test
# cd /sys/kernel/config/pci_ep/
# mkdir functions/tegra_pcie_dma_epf/func1
# echo 0x10de > functions/tegra_pcie_dma_epf/func1/vendorid
# echo 0x229a > functions/tegra_pcie_dma_epf/func1/deviceid
# echo 16 > functions/tegra_pcie_dma_epf/func1/msi_interrupts
# ln -s functions/tegra_pcie_dma_epf/func1 controllers/${PCIE_EP_ADDR}.pcie-ep/
# echo 1 > controllers/${PCIE_EP_ADDR}.pcie-ep/start

After applying these commands, we booted the root port system.
However, when we ran lspci on both the root port and Jetson Orin NX, neither detected a PCIe connection.
When running dmesg | grep pcie, pcie-ep is correctly displayed.


We have already verified that a 100MHz reference clock is being properly received from the ARM board to the Jetson Orin NX.
However, according to the datasheet, it seems that Orin NX does not receive the reference clock from an external source.
Due to this, we also tried using the internal clock instead, but it still failed to establish a PCIe connection.

Questions:

  1. Are there any hardware-related issues that I might have overlooked?
  2. Should the reference clock come from an external source, or should the internal clock be used instead?
  3. Does Jetson Orin NX only support endpoint connections between Jetson devices, or can it work with other systems as well?

I am currently collaborating with that person.
The version of L4T being applied is 36.4.3.
All the conditions required to activate the endpoint have been fully satisfied.

You could check this hardware note. Though it is for Xaiver, it is still same for Orin.

Default setting is external clock.

Please also provide your log from EP side.

The default test was based on Orin to Orin. No other system is validated with it.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.