この記事では、お客様のイーサネットPCSがリンクアップできなかった場合に、T1024に基づいて段階的にデバッグする方法を説明します。
多くのイーサネットはSerDesによって設定されるため、リンクエラーの原因がSerDesまたはPCS自体であるかを確認するにはどうすればよいでしょうか。この記事ではいくつかのヒントを提供します。
SerDesレーン&ピンズ
まず、使用しているSerDesレーンを確認してください。SerDesレーンを確認するには、QorIQ T1024リファレンス・マニュアルを参照してください。以下の設定のように、ユーザーケースがRCW[128:136]にSRDS_PRCTL_S1=0x05Bと設定される場合、アプリケーションはSGMII.m1とSGMII.m2を利用します。
この記事では、SGMII.m1をユーザーケースとして検討します。次に、SGMIIはフレームマネージャのMAC1に配置されます。
SerDesのレーン割り当てを確認して、SerDesのレーンを確認してください。SGMII.m1の場合、特定のレーンピン名はSD1_TX3P/NとSD1_RX3P/Nで、レーン3として認識されます。
MAC番号はSerdesのレーン番号とは関係ありません。ピンを入手するには特定の表を確認する必要があります。
このイーサネットを使用したハードウェアテストは、ピンに関連している必要があります。以下のコンポーネントのピン番号を参照してください。
このレーンのRXピンのアイダイアグラムをテストすると、周波数が正しいかどうかを確認できます。このレーンをSGMII 1.25Gに設定すると、アイダイアグラムで速度が正しく設定されていることを確認できます。
上のアイダイアグラムは、SerDesの速度を示しています。
ループバックを正しく行うことは非常に重要ですが、他のデバイスに接続することも可能です。
SerDesのリンクアップを確認する方法
以下のQorIQ T1024リファレンス・マニュアルでレーンレジスタをご確認ください。
このユーザーケースはレーン3となるため、レーン3のレジスターを読み出して、SerDesレーン3が正常に動作するかどうかを確認してください。以下のように。
# レーン 3
md.l 0xFFE0EA8C0 1 - aa611080 # LN3GCR0
md.l 0xFFE0EA8C4 1 - 101c4019 # LN3GCR1
md.l 0xFFE0EA8CC 1 - 00002800 # LN3SSCR0
md.l 0xFFE0EA8D0 1 - 0f0fc01f # LN3RECR0
md.l 0xFFE0EA8D4 1 - 0f0f0fa8 # LN3RECR1
md.l 0xFFE0EA8D8 1 - 00003006 # LN3TECR0
md.l 0xFFE0EA8E0 1 - 39000400 # LN3TTLCR0
md.l 0xFFE0EA8E4 1 - 00000000 # LN3TTLCR1
md.l 0xFFE0EA8F4 1 - 00000000 # LN3TCSR1
md.l 0xFFE0EA8FC 1 - 04000000 # LN3TCSR3
SerDes_LNnTCSR3は重要なデバッグテストレジスタであり、CDR_LCKはCDRがロックされているかどうかを確認するためのものです。
CDR_LCK=0は、有効なビットストリームが検出されないことを意味します。テストとして、レーンをループバックモードLN2TCSR3[LPBK_EN]=01に設定できます。CDRはデジタルループバックモード(内部ループバック)でロックされる必要があります。そうでない場合、デバイス自体に問題がある可能性があります。
そのため、LPBK-ENを「01」ループバックモードに設定できれば、SerDes自身のTX信号とRX信号がループバックモードに設定され、外部信号が除外されます。CDR_LCKが1の場合は、SerDes自体が正常に機能します。とにかく、CDR_LCKは常に設定されているはずです。
"md.l 0xFFE0EA8FC 1 - 04000000 # LN3TCSR3"では、CDR_LCK=0となっており、SerDesレベルの問題が疑われます。
通常の状態では、以下の通りである必要があります:
=> md fe0ea8fc 1
fe0ea8fc: 08000000
PCSリンクアップを確認する方法
MACおよびPHYレジスタは、T1024DPAArm、QorIQ T1024 データ・パス・アクセラレーション・アーキテクチャ (DPAA) リファレンス・マニュアルから詳細を取得する必要があります。
DPAARMでオフセットアドレスを見つけてください。
SGMIIのMACアドレスはオフセット+0x1000でなければなりません。
T1024DPAARMの6.5.4 MDIOイーサネット管理インターフェイス に従って、MDIOレジスタを読み取ってください。
このアプリケーションでは、SGMII1、MAC1のMAC1アドレスはFM1_mEMAC1: 4E_0000であり、したがってFM1_mEMAC1 MDIOレジスタは4E_1000hになります。
ユーザーケースでは、プロトコルはSGMIIで、T1024DPAARMの6.5.4.3 22条項読み取りフローに従う必要があります。
6.5.4.3 第22条 読み出しフロー
1) MDIO_CFG[BSY] = 0になるまで待ちます。
2) MDIO_CTLに適切なPHY_ADDRとREGISTER_ADDRを設定し、ビット16をセットして書き込んでください。
3) MDIO_CFG[BSY] = 0になるまで待ちます。
もしアドレスされた PHY が応答しなければ、MDIO_CFG[MDIO_RD_ER]が設定されます。
それ以外の場合は、MDIO_DATAの値を読み取ってください。
このユーザーケースでは、MDIO_SGMII_SRを読むと、QorIQ T1024リファレンス・マニュアルの30.5.5 1000Base-KX PCS MDIO メモリマップ/レジスタ定義にレジスタ定義が見つかります
重要なビットは以下の通りです。
こちらがユーザーケースの結果です:
MDIO_SGMII_SRを読み取る際は、遅延時間の要件を満たすことができる手動入力を使用してください。
手動で入力できない場合は、フローに従い、「MDIO_CFG[BSY] = 0」を待ってから、MDIO_DATAの値を読み取ってください。
SGMII1 MDIOレジスタを読み取ってください
=== セルデステスト1 ===。
0xFFE0EA8FC 値: 0x08000000
PCS0レジスタ 0xFFE4E1030-0xFFE4E103Cをダンプしてください:
0x40001408
0x00000000
0x00001340
0x00001340
0x8002、devmem 0xFFE4E1034 32 0x8002を選択
読み取り:0x00000083
0x8003, devmem 0xFFE4E1034 32 0x8003を選択
読み取り:0x0000E400
0x8001、devmem 0xFFE4E1034 32 0x8001を選択
Serdes0 ステータス: 0x00000029
0x8001 devmem 0xFFE4E1034 32 0x8001を選択
Serdes0 ステータス: 0x0000002D
0x8001, devmem 0xFFE4E1034 32 0x8001を選択
Serdes0 ステータス: 0x0000002D
最初はリンクされておらず、LINK_STATは0(0x00000029)で、次に1(0x0000002D)に変わります。
これで、PCSリンクが確立され、HWループバックチェックが完了しました。