A40i アプリケーション ノート: 頻繁に発生する 3 つの NIC ソフトウェアの問題とトラブルシューティングのアイデア

Forlinx Embedded OKA40i-C EVKにはネットワーク ポートが 1 つしかありませんが、Allwinner A40i-H プロセッサには 2 つのネットワーク コントローラーがあるため、Forlinx Embedded が提供するデータシートにはデュアル ネットワーク ポート ソリューションが記載されています。エンジニアは NIC 設計上の問題に遭遇する可能性があります。OKA40i-C EVK を使用する際に起こりやすい 3 種類の NIC ソフトウェアの問題と、トラブルシューティングのアイデアを共有します。

www.forlinx.net

01 問題分析

問題の説明 1: イーサネット初期化エラー phy が見つかりません

ifconfig eth0 up コマンドを実行すると、「No phy found」例外ログが表示されます。

Forlinx 組み込み OKA40i-C EVK

問題分析:

「No phy found」の一般的な理由は、phy に使用される 25M クロックが異常であり、これにより phy が異常に動作し、gmac ドライバーが mdio インターフェイスを介して phy デバイス情報を読み取ることができないことです。

MDIO ピンの構成または phy アドレスが正しくない場合、MDIO はプルアップ抵抗を行わず、GMAC は phy デバイス情報を読み取ることができません。オシロスコープを使用して、MDIO 波形が正しいかどうかを測定できます。また、物理チップのリセットが失敗した場合は、物理チップのリセット プルアップ抵抗を交換する必要があります。

問題分析

トラブルシューティングの手順:

  • (1) phy 電源の状態を確認します。
  • (2) phy によって使用される 25M クロック (Soc ephy25M または外部クリスタル) を確認します。
  • (3) phy-mode が実際のボードレベル (mii/rmii/rgmii) に従って構成されているかどうかを確認します。
  • (4) MDIO のプルアップ抵抗を確認します。
  • (5) MDIO ピンの構成を確認します。
  • (6) eMAC phy アドレスはハードウェアと一致していますか。
  • (7) リセット プルアップ抵抗が回路図のリファレンス スキームと一致していることを確認します。

MDIO 通信は正常に検証されます。

phytool ツールを使用して 0x02 0x03 レジスタを読み取ることができます。PHY チップ ID の読み取りに成功した場合は、MDIO 通信が正常であることを意味します。

問題の説明 2: イーサネット初期化エラー NO SUCN DEVICE

コマンド ifconfig -a/ifconfig eth0/ifconfig eth0 up を実行します。eth0 デバイスが見つかりません。

MDIO通信

問題分析:

イーサネット モジュールの設定が有効でないか、GPIO の競合が発生しています。

トラブルシューティングの手順:

ステップ 1: カーネル ブート ログをキャプチャし、「gmac」キー フィールドを検索して、gmac ドライバーが正常にプローブされたかどうかを確認します。

ステップ 2: カーネル ブート ログに Mac コントローラー プローブの失敗が示されている場合、一般的な原因は GPIO リソースの競合です。

解決:

GPIO の競合にはエラー メッセージが表示されます。エラーに従って、GPIO の競合ピンを確認してください。

Ethernetモジュールの構成を確認してください。

A40i SBC イーサネット モジュール

問題の説明 3: イーサネット初期化エラー ハードウェア初期化エラー

ifconfig eth0 up コマンドを実行すると、「Initialize hardware error」例外ログが表示されます。

問題分析:

「ハードウェアの初期化エラー」が表示されるのは、通常、phy が RX CLK を MAC コントローラーに出力せず、MAC コントローラー内でソフト リセットが失敗することが原因です。

一般的な原因は、phy の異常な電源または 25M クロックです。あるいは、データ ピンのクロックと RMILL RX CLK TX CLK をチェックすることもできます。

トラブルシューティングの手順:

オシロスコープで rx_clk クロック波形を取得し、クロックが 25M で安定しているかどうかを確認します。25M/2.5M で前後にジャンプしているように見える場合。つまり、MAC と phy が正常にリンクされていません。

解決:

ソフトウェアは、phy リセット後にレジスタ 0 を 100M 全二重に固定に設定することで正常にリンクできます。問題解決:

drivers/net/ethernet/allwinner/sunxi-gmac.c の geth_phy_init 関数の phy_connect_direct の前に phy_write(phydev, 0x0, 0x2100) を追加します。

OKA40i-C EVK 開発における一般的な NIC 設計の問題は次のとおりです。その一部は、ソリューションを参照するときの構成の問題、またはチップからの不適切な出力信号が原因である可能性があります。OKA40i-C EVK のデュアル ネットワーク ポート ソリューションについて言及する場合は、プロジェクトの問題を解決するためにこの記事にまとめられている問題を参照してください。

以下に、NIC ソフトウェアの一般的な問題のトラブルシューティング方法をいくつか示します。

02 トラブルシューティング方法

これらのメソッドは、phy のデバッグに関するアイデアを提供する可能性があります。次の記事で説明されているツールは、NIC の問題を迅速に発見して解決するのに役立ちます。

(1) menuconfig と dts Ethernet 設定がオンになっていることを確認します。
(2) phy モード設定が PHY と GMAC の間の物理インターフェイス (rgmii、rmii など) と一致するかどうかを確認します。
(3) IO 多重化機能、駆動能力など、GPIO 構成が正しいかどうかを確認します。
(4) phytool ツールで phy ID を読み取り、MDIO が正しいことを確認します。

以下に示すように、JL11x1 phy ID 読み取りが正常であれば、MDIO 通信が正常であることを意味します。

トラブルシューティング方法

phytool ツールを使用して phy ステータス レジスタを読み取り、phy チップのステータスを表示します。JL11x1 を例に挙げます。0x01 ステータス レジスタが 0x786d を読み取る場合、リンクが成功し、適切に動作できることを示します。

OKA40i-C SBC

OKA40i-C SBCデュアルネットワーク ポート NIC ソフトウェアの問題分析とトラブルシューティングの方向については以上です。あなたのプロジェクト開発に役立つことを願っています。

元は www.forlinx.net で公開されています。

www.forlinx.net