JAJAA83A December   2023  – November 2025 DP83822H , DP83822HF , DP83822I , DP83822IF , DP83826I

 

  1.   1
  2.   概要
  3.   商標
  4. 1DP83822 アプリケーションの概要
  5. 2PHY アプリケーションのトラブルシューティングを行う
    1. 2.1 回路図とレイアウトのチェックアウト
    2. 2.2 デバイスの正常性チェック
      1. 2.2.1 電源ランプシーケンスチェック
        1. 2.2.1.1 XI クロックが不安定な場合の電源ランプ
      2. 2.2.2 電圧チェック
      3. 2.2.3 RESET_N 信号をプローブします
      4. 2.2.4 RBIAS ピンのプローブ
      5. 2.2.5 XI クロックをプローブします
      6. 2.2.6 初期化中にストラップ ピンをプローブします
      7. 2.2.7 シリアル管理インターフェース信号のプローブ (MDC、MDIO)
        1. 2.2.7.1 レジスタ値の読み出しと確認
          1. 2.2.7.1.1 拡張レジスタ アクセス
    3. 2.3 MDI ヘルス チェック
      1. 2.3.1 磁気
      2. 2.3.2 MDI 信号をプローブします
      3. 2.3.3 リンク品質チェック
      4. 2.3.4 ファイバ接続のデバッグ
      5. 2.3.5 フレーム開始検出 (SFD) のデバッグ
      6. 2.3.6 コンプライアンス
    4. 2.4 MII ヘルス チェック
      1. 2.4.1 MII チェック
      2. 2.4.2 RMII チェック
      3. 2.4.3 RGMII チェック
    5. 2.5 ループバックと PRBS
      1. 2.5.1 ループバック モード
      2. 2.5.2 MAC とのパケットの送受信
      3. 2.5.3 BIST を使用してパケットを送受信しています
  6. 3ツールとリファレンス
    1. 3.1 DP83822 のレジスタアクセス
    2. 3.2 Linux でのソフトウェアおよびドライバのデバッグ
      1. 3.2.1 一般的な端子出力とソリューション
  7. 4まとめ
  8. 5参考資料
  9. 6改訂履歴

一般的な端子出力とソリューション

端子コマンド「dmesg | grep mdio」を使用すると、ソフトウェアの観点から PHY が適切に機能しない原因について、いくつかの手がかりが得られる可能性があります。

$ dmesg | grep "mdio"

出力例の 1 つを以下に示します。

$ mdio_bus xxx.ethernet-x: MDIO device at address 8 is missing

このメッセージは、PHY が MDIO バス上に見つからないことを示しています。これはいくつかの問題が原因である可能性があります。最も一般的な原因はデバイスツリーの欠落または誤りですが、PHY が機能していない、または SMI 接続が不良であることも考えられます。

MDIO バス上で PHY が検出されると、次のような一般的なエラーメッセージが表示されます。

$ Generic PHY xxx.ethernet-x: attached PHY driver [Generic PHY]

このメッセージは、対応する PHY のドライバファイルが正しくロードされていないか、全く存在せず、Linux が PHY で動作しない可能性が高い汎用ドライバをロードしたことを示しています。その場合、ドライバが正常にコンパイルされ、Linux に追加されたことを確認し、使用している PHY のモデルと一致していることを確認してください。

最後に、次のようなメッセージが表示される場合があります。

$ am65-cpsw-nuss c000000.ethernet eth3: PHY [c000f00.mdio:05] driver [TI DP83822] (irq=POLL)

このメッセージは、PHY に正しいドライバがロードされ、正常に検出されたことを示しています。ifconfig を実行して、ネットワークインターフェースが存在することを確認します。

PHY がネットワークアダプターとして正常に認識された場合の ifconfig の出力例を示します。

root@j7-evm:~# ifconfig
eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500  metric 1
        ether 24:76:25:a2:62:8b  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536  metric 1
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 82  bytes 6220 (6.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 82  bytes 6220 (6.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

次のステップは、データ転送が成功したことを確認することです。