0

イーサネットリンクが実際に実行されている速度を判断するために、標準の(まあ、標準的な)イーサネットPHYレジスタを解釈する最良の方法を探しています。(例: 10/100/1000 および全二重/半二重)

これはLinuxなどのソースにあると思いますが、今すぐそこを見に行きますが、誰かが良い参考文献を持っているなら、私は興味があります.

私が興味を持っているのは、それが実際にリンクされているかどうか、そしてそれが何にリンクされているかであり、各エンドが最初に宣伝した可能性の広大な海ではありません.

4

2 に答える 2

1

Linuxカーネルがどのようにそれを行うかを理解するのを助けるために:各ドライバーは独自のことを行うことができますが、チップが標準に十分に厳密に従っている場合に使用されることになっている汎用バージョンがあります:Generic Media Independent Interface device support

于 2008-11-26T01:39:07.527 に答える
1

答えてくれてありがとう。ほとんどすべての MII/GMII イーサネット PHY が同じ基本レジスタを持っているため、これは言語とプラットフォームに依存しない質問として意図されています。私はたまたま組み込みプラットフォームを使用しています。

しかし、Linux ドライバー ソースのさまざまなビットを調べることで、制限されたアプリケーションに十分適した賢明なシーケンスを見つけました。基本的には次のとおりです。

基本ステータス (0x1) でリンクアップをチェックします リンクがアップしている場合は、基本ステータス (0x1) でネゴシエーション完了をチェックします ネゴシエーションが完了している場合は、1000M ステータス レジスタ (0xa) で 1G をチェックします1G を取得すると、100M を取得できます。(それは一般的な規則ではありませんが、このアプリケーションに適用されます)

おそらく、これはソフトウェアの問題ではなく、ハードウェアの問題でした...

于 2008-11-25T19:55:27.503 に答える