JetPack 6.0(R36.3.0) jetson orin nx ethernet

您好,我使用硬件是jetson orin nx,软件版本是JetPack 6.0(R36.3.0),目前载板有4路网口,1路为原生网口,其余3路使用PCIE转的,转换芯片为RTL8125,正常配置驱动后,启动只有两路网口正常,(原生eth0和PCIE一路eth1),剩余两路PCIE不能使用灯也没亮,像是没有识别,PCIE加载正常。目前排查定位问题像是没有添加root_dev节点导致,Linux_for_Tegra/p3767.conf.common文件有对节点的配置,请问我要怎么配置eth2、eth3的节点呢?才能使我的网口正常工作。

English :Hello, I am using Jetson orin nx hardware and JetPack 6.0 (R36.3.0) software version. Currently, the carrier board has 4 network ports, 1 is a native network port, and the remaining 3 are converted from PCIE using RTL8125 conversion chip. After configuring the driver normally, only two network ports are working properly when starting (native eth0 and PCIE eth1), and the remaining two PCIEs cannot be used and the lights are not on, as if they are not recognized. PCIE loads normally. At present, it seems that the location issue is caused by the lack of root_dev node. The Linux_for_Tegra/p3767.conf.common file has node configuration. How can I configure eth2 and eth3 nodes? Only then can my internet port work properly.

p3767.conf.common

你的問題跟rootdev完全沒有關係. rootdev的意思是你的filesystem從哪讀出來的…

請你先確認lspci -vvv 跟dmesg的結果. dmesg八成就會講原因了

首先,谢谢您的答复!我已经确认了lspci -vvv 和dmesg,lspci中能够识别到PCIE,说明PCIE驱动的加载是没问题的,我刚尝试将r8125驱动编译成ko模块对比了lspci的结果,然后使用ifconfig发现最后还是只有两路网络节点,以下是我整理的信息,麻烦您帮忙分析下。
未insmod前的lspci信息.txt (3.6 KB)

insmod后的lspci信息.txt (3.8 KB)

ifconfig查看节点.txt (2.5 KB)

加载驱动后的demsg.txt (58.5 KB)

你的另外兩路pcie網卡是接到哪個pcie controller? 你的lspci只認到一張卡而已…

是这样的,我们的硬件设计是pcie x1(1 lane)接的一路网口,这路能启动。另外两路不能启动的是通过pcie x2(2 lane)转出来的,每一个lane单独接的网口。请问硬件这样设计可以吗?
下面是原理图部分:
能启动的一路:pciex1

另外兩路的圖是…?


另外两路是这样的,刚才只能上传一张图片

你有把設定從x2改成兩個x1嗎?

还没有这样试,不确定是不是这个原因,现在硬件做的是X2版本的。
因为软件上我看36.3版本没带2lane的pcie ,没那个寄存器。
现在不能确定是哪里的原因就没有盲目去改硬件,改版时间有点长。
所以看您这边还有什么好的思路和建议吗?

刚才试了试将X2的PCIE,断开其中一路另外一路还是不能用

因为软件上我看36.3版本没带2lane的pcie ,没那个寄存器。

不太確定你這個是什麼意思
PCIe C7在你的log裡面已經有開了. 你的ODMDATA現在設定有更改過嗎? Pinmux有改過嗎?
還是說你聽不懂我在問什麼?

ODMDATA设定要改那个位置呢?pinmux 是改了的

pinmux改的東西先放上來確認一下好了

如果目前只想讓PCIe C7 RX/TX0 先動的話, ODMDATA不用改也沒關係

我之前修改是按照这个方式修改的,下图就是
修改pinmux:


按照这个方式改对吗?或者您告诉我下改哪里吧
上周您问我的:你有把設定從x2改成兩個x1嗎?
您的意思是不是把PCIEX2变成2个PCIEX1呢?我看官方资料可以这么改,下图:

硬件上已经改了,请问软件上需要改哪里呢?

我大概說明一下.

  1. pinmux的部份你要做的是類似這部份的改動
    Jetson AGX Orin Platform Adaptation and Bring-Up — NVIDIA Jetson Linux Developer Guide 1 documentation

  1. 你讀的文件是硬體文件. 我們的pcie/usb只要牽涉到下圖這種option 從#1切到#2的狀況, 軟體部份都一定得更改. 如果你沒改, 那預設就是左邊那種x2的狀況. 這種狀況下你也不可能一次操控兩張卡. 因為我們的controller一次就只能控制一個pcie裝置 (除非你接pcie switch).

至於這個切換就是ODMDATA, 以下文件有說明

https://docs.nvidia.com/jetson/archives/r36.4/DeveloperGuide/HR/JetsonModuleAdaptationAndBringUp/JetsonOrinNxNanoSeries.html?highlight=odmdata#uphy-lane-configuration

硬件量了量PCIE通道没输出,大概率可能是pinmux问题看来是之前改的不对,我看官网给出了两种方式一种是Excel表生成dtb file,另一种是devmem动态修改。我现在想修改PCIE2的复用在R36.3.0上,麻烦您那边能不能给一个详细修改pinmux的教程呢?
我看excle表中,PCIE2默认功能是CSI,是这个意思吗?下图:

麻煩你就照著我上面寫著做… 你說的東西並不需要改… 你講的東西也是錯的
CSI只是前面的名字 那沒有任何意義. 你要看的是後面的customer usage… 那邊已經設定成pcie了 所以不用動…

只要先確認我截圖貼的l7 rst跟clkreq有沒有改對就好了

好的,我现在按照您的思路来查! 您截的图l7_rst跟clkreq,在那个设备树确认呢?我这没看到,下面是我的36.3的设备树,如下图:

是你pinmux spreadsheet建出來的那個檔案… 他不是kernel dts. 你在你截圖那堆找是找不到的