2387735_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2387735_ja-JP

2387735_ja-JP

カスタムS32G399Aボード:スイッチ面RGMIIバスをクロスフレームなしでいずれの方向にも接続しません

基板: S32G-VNP-RDB3をベースにしたカスタムS32G399Aモジュール。PFE_MAC1 RGMII(PE_02–PE_13)を介してNXPのSJA1110Aスイッチポート2にコネクテッド、DSA CPUポートとして設定されていました(in-tree sja1105ドライバ、カーネル6.x BSP43.0)。

トポロジー:
- PFE_MAC0: SerDes1 レーン 1 経由の SGMII、モード 1
- PFE_MAC1: RGMII から SJA1110A ポート 2 (DSA CPU ポート) — 問題のポート
- PFE_MAC2: SerDes0レーン1経由のSGMII

S32G MACは以下のように構成されています。
+---------+--------------+------------------+
| | レーン0 | レーン1 |
+---------+--------------+------------------+
| SERDES0 | GMAC (SGMII) | PFE_MAC2 (SGMII) |
| SERDES1 | 未使用 | PFE_MAC0 (SGMII) |
+---------+--------------+------------------+

完全なU-Bootハードウェア構成:

hwconfig=pcie0:mode=sgmii,clock=ext,fmhz=100,xpcs_mode=both;pcie1:mode=sgmii,clock=ext,fmhz=100,xpcs_mode=0
pfeng_mode=enable,sgmii,rgmii,sgmii


port@2用DTS(スイッチ側):

			port@2 {
				reg = <2>;
				label = "OBC-1";
				ethernet = <&pfe_netif1>;
				phy-mode = "rgmii";
				rx-internal-delay-ps = <0>;
				tx-internal-delay-ps = <0>;
				fixed-link {
					speed = <1000>;
					full-duplex;
				};
			};


pfe_netif1 (MAC側) の DTS:

&pfe_netif1 {
    phy-mode = "rgmii";
    status = "okay";
	fixed-link {
        speed = <1000>;
        full-duplex;
    };
};

PFE_MAC1(pfe1)リンク状態 — Linux/ドライバーレベルで確認・正しく設定:

起動時のdmesg:

[    5.264108] pfeng 46000000.pfe: netif name: pfe1
[    5.274127] pfeng 46000000.pfe: netif(pfe1) linked phyif: 1
[    5.279692] pfeng 46000000.pfe: netif(pfe1) mode: std
[    5.284853] pfeng 46000000.pfe: netif(pfe1) HIFs: count 1 map 02
[    6.012884] pfeng 46000000.pfe pfe1 (uninitialized): Subscribe to HIF1
[    6.019438] pfeng 46000000.pfe pfe1 (uninitialized): Host LLTX disabled
[    6.026270] pfeng 46000000.pfe pfe1 (uninitialized): Enable HIF1
[    6.032374] pfeng 46000000.pfe pfe1 (uninitialized): setting MAC addr: 00:04:9f:be:ef:01
[    6.040545] pfeng 46000000.pfe pfe1 (uninitialized): PTP HW addend 0x80000000, max_adj configured to 46566128 ppb
[    6.060939] pfeng 46000000.pfe pfe1 (uninitialized): Registered PTP HW clock successfully on EMAC1
[    6.070441] pfeng 46000000.pfe pfe1: registered
[    6.207482] pfeng 46000000.pfe pfe1: configuring for fixed/rgmii link mode
[    6.214306] pfeng 46000000.pfe pfe1: Set TX clock to 125000000Hz
[    6.220158] pfeng 46000000.pfe pfe1: Link is Up - 1Gbps/Full - flow control off

[    5.257995] pfeng 46000000.pfe: EMAC0 interface mode: 4
[    5.290707] pfeng 46000000.pfe: EMAC1 interface mode: 9
[    5.323320] pfeng 46000000.pfe: EMAC2 interface mode: 4
[    5.354571] pfeng 46000000.pfe: Interface selected: EMAC0: 0x4 EMAC1: 0x9 EMAC2: 0x4
[    5.382609] pfeng 46000000.pfe: TX clock on EMAC0 for interface sgmii installed
[    5.390050] pfeng 46000000.pfe: RX clock on EMAC0 for interface sgmii installed
[    5.404998] pfeng 46000000.pfe: TX clock on EMAC1 for interface rgmii installed
[    5.419918] pfeng 46000000.pfe: Defer enabling of RX clock on EMAC1 for interface rgmii (ret: -5)
[    5.434235] pfeng 46000000.pfe: TX clock on EMAC2 for interface sgmii installed
[    5.448374] pfeng 46000000.pfe: RX clock on EMAC2 for interface sgmii installed
[    5.667058] pfeng 46000000.pfe: EMAC timestamp external mode bitmap: 0
[    5.998447] pfeng 46000000.pfe pfe0 (uninitialized): Registered PTP HW clock successfully on EMAC0
[    6.060939] pfeng 46000000.pfe pfe1 (uninitialized): Registered PTP HW clock successfully on EMAC1
[    6.130296] pfeng 46000000.pfe pfe2 (uninitialized): Registered PTP HW clock successfully on EMAC2
[    6.215040] pfeng 46000000.pfe: RX clock on EMAC1 for interface rgmii installed

Live DTBは、カーネルがソースDTSと一致することを確認します。

# cat /proc/device-tree/soc/pfe@46000000/ethernet@11/phy-mode
rgmii

ip a の出力:

6: pfe1:  mtu 1536 qdisc mq state UP group default qlen 1000
link/ether 00:04:9f:be:ef:01 brd ff:ff:ff:ff:ff:ff
inet6 fe80::204:9fff:febe:ef01/64 scope link


SJA1110 DSAスレーブポートはすべて正しく列挙されました。これにより、sja1105のDSAドライバが正常にバインドされていることが確認されました
pfe1をCPUポート/DSAマスターとして設定し、静的設定を誤りなく解析しました。

クロックツリー: TXおよびRXのRGMIIクロックが両方とも有効で、正しいコンシューマーに接続されています。

# cat /sys/kernel/debug/clk/clk_summary | grep pfe1
 pfe1_tx_mii                         0       0        0        125000000   0          0     50000      Y   deviceless                      no_connection_id         
 pfe1_rx_mii                         0       0        0        125000000   0          0     50000      Y   deviceless                      no_connection_id         
 pfe1_tx_rmii                        0       0        0        125000000   0          0     50000      Y   deviceless                      no_connection_id         
 pfe1_rx_rmii                        0       0        0        125000000   0          0     50000      Y   deviceless                      no_connection_id         
 pfe1_tx_rgmii                       1       1        0        125000000   0          0     50000      Y   ethernet@11                     tx_rgmii                 
 pfe1_rx_rgmii                       1       1        0        125000000   0          0     50000      Y   ethernet@11                     rx_rgmii                 
 pfe1_tx_sgmii                       0       0        0        125000000   0          0     50000      Y   deviceless                      no_connection_id         
 pfe1_rx_sgmii                       0       0        0        125000000   0          0     50000      Y   deviceless                      no_connection_id         

SO pfe1はUP、LOWER_UP、DSAマスターとして正しくSJA1110バインドされ、RGMIIモードで動作しています
両方のクロックが有効になっている場合 — これによりPFE1がダウン、アンバウンド、または誤った設定で
Linux/ドライバレベル。未解決の問題は、フレームが実際に
PFE_MAC1とSJA1110ポート2間の物理的なRGMIIピン。

問題
PFE_MAC1とSJA1110ポート2間のRGMIIバスでは、バスの両側の機器がすべて独立して稼働しているにもかかわらず、どちらの方向にもトラフィックが流れていないようです。

テスト1 — S32G ->スイッチ方向

セットアップ:

ip addr add 192.168.1.100/24 dev EPS-100bt1-9
ethtool -S pfe1 | grep '^ p02_' > before
tcpdump -i pfe1 -e -nn -c 20 > capture.txt &
arping -c 10 -I EPS-100bt1-9 192.168.1.6
ethtool -S pfe1 | grep '^ p02_' > after

# arping -c 10 -I EPS-100bt1-9 192.168.1.6
ARPING 192.168.1.6 from 192.168.1.100 EPS-100bt1-9
Sent 10 probes (10 broadcast(s))
Received 0 response(s)

$ cat capture.txt
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on pfe1, link-type NULL (BSD loopback), snapshot length 262144 bytes
18:08:36.352535 AF Unknown (4294967295), length 64:
        0x0000:  ffff 0004 9fbe ef01 dadb 0c09 0806 0001  ................
        0x0010:  0800 0604 0001 0004 9fbe ef01 c0a8 0164  ...............d
        0x0020:  ffff ffff ffff c0a8 0106 0000 0000 0000  ................
        0x0030:  0000 0000 0000 0000 0000 0000            ............
[... 9 more identical ARP frames, all correctly DSA-tagged (dadb 0c09) and well-formed,
     plus one unrelated IPv6 background frame interleaved ...]

# diff before after
--- before
+++ after
@@ -1,4 +1,4 @@
-     p02_: 1
+     p02_: 0
      p02_n_runt: 0
      p02_n_soferr: 0
      p02_n_alignerr: 0

# grep n_rxfrm before after
before:     p02_n_rxfrm: 0
after:      p02_n_rxfrm: 0


テスト2 — スイッチ-> S32G方向
セットアップパートナーボードは別のスイッチベースのSJA1105ボードです。

# ping -c 10 -I t1-6 192.168.1.100 (run on a separate SJA1105/1110-family switch board
connected to our port 9 / 100BASE-T1 / EPS-100bt1-9)

# diff before after (ethtool -S EPS-100bt1-9)
- n_rxfrm: 0
+ n_rxfrm: 9 <- port 9 physically received 9 frames from the wire

 # diff before after 
- p02_n_txfrm: 0
+ p02_n_txfrm: 9 <- switch fabric forwarded all 9 toward the CPU port

# tcpdump -i pfe1 -e -nn -c 20 (same window)
listening on pfe1, link-type NULL (BSD loopback), snapshot length 262144 bytes
[-- nothing captured --]


ポート9は9つの実際のフレームを受信しました。ファブリックは9つすべてをポート2に転送しましたが、
pfe1には何も届きませんでした。

SO、SJA1110自身のファブリックカウンターでは、ポート9からポート2の出口へ9フレームすべてが正常に転送されたことが示されています。

しかし、このテスト中にS32Gでtcpdump -i pfe1 -e -nnを実行すると、何も受信されなかったことが示されます。

つまり、S32G側のDSA/ソフトウェア層は送信していると認識しています(CASE 1)。スイッチの内部ファブリックはCPUポートに向かって送信していると認識しています(CASE 2)。どちらの側も、相手側が物理的なRGMIIバスを介して実際に何かを受信したという確証は得ていない。このバスに隣接する各層は個別に機能します。バス自体は、どちらの方向にも正常に通過したことが確認されていません。

これまでに除外されたこと:
- pfeng_mode / hwconfig (xpcs_mode) — 正確であることが確認されています。EMAC1モードはRGMII(0x9)であり、SGMIIではありません(以前はSerDes1でxpcs_mode=両方がPFE_MAC1のXPCSSをSGMIIに強制的に入ったためSGMIIとして誤って設定されていました。PFE_MAC0単独でXPCS0が必要なため、xpcs_mode=0に修正します)
- PFE_MAC1 TX/RXクロックのイネーブルメント — clk_summaryで正しいレート(125MHz)で有効化が確認されています
- DSAタグ付けおよびCPUポートバインディング — 動作確認済み(netdevのポートが存在し、フレームにDSAヘッダーで正しい宛先ポートがタグ付けされる)
- SJA1110内部ファブリック/転送 — 実際の外部トラフィックを用いて他の2つのポート(9と2)間で動作が確認されました
- BASE-T1リンクパートナー — 実際のフレームをスイッチに渡すことを確認しました(ポート9 n_rxfrm実際のワイヤートラフィックからのインクリメント)

まだ排除されていないこと/未解決の疑問:
- MAC側とスイッチ側の両方で内部遅延ゼロ(rx/tx-internal-delay-ps=0、単に「rgmii」ではなく「rgmii-id」)の1000 Mbps RGMIIがボードトレース長による遅延なしに互換性があるかどうか — タイミングマージンテストとしてリンクを100 Mbpsに強制的に落とす試みはまだしていません

1. 1000 Mbps RGMII において、両端で rx/tx-internal-delay-ps=0 は正常に動作すると想定されますか?それとも、PCB が明示的に遅延を考慮していない限り、この組み合わせでは通常、遅延補償が必要になりますか?
2. 他に何か設定漏れはありますか?

必要であれば、完全なレジスタダンプを提供いたします。PE_02-13バスをロジックアナライザで探査する前に、何かアドバイスをいただけるとありがたいです(基板レイアウトのためプローブへのアクセスが限られているため、現状はあまり便利ではありません)。

ありがとう。

Re: Custom S32G399A board: No frames cross switch-facing RGMII bus in either direction

こんにちは、 @Joey_z さん、@db16122 さん。回路図の関連部分をここに添付します。接続の流れは以下のとおりです。

PFE_MAC1には、s32g3_pfe_mac1_connections.pngに示されているS32G3チップ上のPE_02からPE_13を使用します。基板間コネクタ( Board_to_board_connectorに示されています)。png)を使い、これらの信号をスイッチを持つ別のボードにルーティングします。スイッチ接続は SJA1110_Aで示されています。png および SJA1110_B.png。

接続はPE_xxピン - >基板コネクタ - >スイッチ(SJA1110)

ご質問があればお知らせください。同じ詳細でサポートチケット( #00990408)も提出しました。

Re: Custom S32G399A board: No frames cross switch-facing RGMII bus in either direction

こんにちは、 pcentauri92

ご返信よろしくお願いします。

貴社のETHに関する回路図、特にPFE_MCA1およびSJA1110セクションの回路図をご提供ください。
内部サポートシステムのケースを作成することもできます。情報の説明欄に、 @Joey さん、回路図の情報を提供してください。こちらのウェブサイトを参照してください: https://support.nxp.com

BR

ジョーイ

Re: Custom S32G399A board: No frames cross switch-facing RGMII bus in either direction

こんにちは、 @Joey_z さん

ご回答ありがとうございます。

ここで扱っているモジュールは、S32G399AチップとNXP SJA1110Aイーサネットスイッチを組み合わせたカスタム設計です。このデザインはS32G-VNP-RDB3の開発プラットフォームを基にしましたが、ベースデザインからかなりの変更を加えました。RGMIIを使用するPFE_MAC1は、そうした変更点の1つです。

また、PFE_MAC1モードとピン多重化を変更するdtsファイルのオーバーライドも添付します。

PFE_MAC1モードの設定:

/* pfe_mdio1 is already disabled in the base config in s32gxxxa-rdb.dtsi */
&pfe_mdio1 {
	/* occupied by GMAC0 */
	status = "disabled";
};

/*
 * pfe_netif1 = PFE_MAC1 — management port to Switch-A port 2.
 * Overrides the base "sgmii" stub in s32gxxxa-rdb.dtsi.
 * Plain "rgmii" (no -id/-txid) since both MAC and switch add zero delay.
 * No phy-handle: the link partner is the SJA1110A switch, described as a
 * fixed-link on switch port@2. MDIO is not needed for link management here.
 */
&pfe_netif1 {
    phy-mode = "rgmii";
    status = "okay";
	fixed-link {
        speed = <1000>;
        full-duplex;
    };
};


PFE_MAC1ピンマルチプレクサ:

		/*
		* PFE_MAC1 RGMII pinmux — management port to Switch-A.
		*
		* All RX pad SSS values confirmed from S32G3 IOMUX spreadsheet.
		* TX path: output pads only, no IMCR needed.
		* RX path: input pads + IMCR registers to route pads into PFE_MAC1.
		*
		* Note: PE_07 (TXD3) uses FUNC3, not FUNC2. Similarly PE_08 (RX_CLK) output uses FUNC3; its IMCR (CR#859) uses FUNC2.
		*/

		pfe1rgmii_pins: pfe1rgmii_pins {
			/* TX outputs: PE_02=TX_CLK, PE_03=TX_EN, PE_04=TXD0,
			PE_05=TXD1, PE_06=TXD2 PE_07 (TXD3) */
			pfe1rgmii_grp0 {
				pinmux = ,   /* PE_02: PFE_MAC1_TX_CLK */
						,   /* PE_03: PFE_MAC1_TX_EN  */
						,   /* PE_04: PFE_MAC1_TXD0   */
						,   /* PE_05: PFE_MAC1_TXD1   */
						,   /* PE_06: PFE_MAC1_TXD2   */
						;   /* PE_07: PFE_MAC1_TXD3 */
				output-enable;
				slew-rate = ;
			};

			/* RX inputs — pads set to FUNC0 (input mode); routing into PFE_MAC1
			is handled by the IMCR entries in pfe1rgmii_grp2 below.
			NXP input mux pattern: pad=FUNC0 + IMCR=FUNC2 */
			pfe1rgmii_grp1 {
				pinmux = ,   /* PE_08: input */
						,   /* PE_09: input */
						,   /* PE_10: input */
						,   /* PE_11: input */
						,   /* PE_12: input */
						;   /* PE_13: input */
				input-enable;
				slew-rate = ;
			};

			/* IMCR input mux — selects which pad drives each PFE_MAC1 RX signal.
			CR#866 routes PE_02 (TX_CLK pad) back into PFE_MAC1_TX_CLK_I; required
			even for RGMII TX because the MAC samples its own TX_CLK internally.
			All entries at FUNC2 per S32G3 IOMUX spreadsheet. */
			pfe1rgmii_grp2 {
				pinmux = ,  /* CR#866: PFE_MAC1_TX_CLK_I ← PE_02 */
						,  /* CR#859: PFE_MAC1_RX_CLK_I ← PE_08 */
						,  /* CR#865: PFE_MAC1_RXDV_I   ← PE_09 */
						,  /* CR#861: PFE_MAC1_RXD_I[0] ← PE_10 */
						,  /* CR#862: PFE_MAC1_RXD_I[1] ← PE_11 */
						,  /* CR#863: PFE_MAC1_RXD_I[2] ← PE_12 */
						;  /* CR#864: PFE_MAC1_RXD_I[3] ← PE_13 */
			};
		};


他に何か情報が必要な場合はお知らせください。
 

Re: Custom S32G399A board: No frames cross switch-facing RGMII bus in either direction

PFE_MAC1とSJA1110ポート2間のRGMIIバスに関するハードウェア側の回路図を共有していただけませんか?

Re: Custom S32G399A board: No frames cross switch-facing RGMII bus in either direction

こんにちは、 pcentauri92

詳細な情報を提供していただきありがとうございます。

私の理解では、開発ボード上でRGMAIIとポート2を使うPFE_MAC1通信に問題があるようですSJA1110A。それは正しいですか?

S32G-VNP-RDB3のデフォルト構成は、PFE_MAC0/1がSGMIIモードで動作し、SJA1110にコネクテッドです。開発ボードでRGMIIモードを使うことを考えたのはなぜですか?対応するソフトウェア構成を変更することが推奨されます。

BR

ジョーイ


タグ(1)
評価なし
バージョン履歴
最終更新日:
8 時間前
更新者: