ザイリンクスでのLinuxブートプロセス中のPHY自動ネゴシエーションの無効化


9

LinuxをFPGAボードにインストールしようとしています。Linuxフレーバーは、ザイリンクスFPGAチップ用のpetalinuxです。

現在のザイリンクスSoCには、Cortex A9プロセッサとプログラム可能なハードウェアロジック、つまりFPGAがあります。端末でブートメッセージをキャプチャしました。

.....................U-boot time.......................partition.......................................................

[Fri Dec 27 15:18:53.108 2013] Copying Linux from SD to RAM...
[Fri Dec 27 15:18:53.129 2013] Device: SDHCI
[Fri Dec 27 15:18:53.129 2013] Manufacturer ID: 2
[Fri Dec 27 15:18:53.129 2013] OEM: 544d
[Fri Dec 27 15:18:53.129 2013] Name: SA04G 
[Fri Dec 27 15:18:53.129 2013] Tran Speed: 25000000
[Fri Dec 27 15:18:53.129 2013] Rd Block Len: 512
[Fri Dec 27 15:18:53.129 2013] SD version 1.10
[Fri Dec 27 15:18:53.129 2013] High Capacity: Yes
[Fri Dec 27 15:18:53.129 2013] Capacity: 3951034368
[Fri Dec 27 15:18:53.129 2013] Bus Width: 1-bit
[Fri Dec 27 15:18:53.129 2013] reading zImage
[Fri Dec 27 15:18:59.367 2013] 
[Fri Dec 27 15:18:59.367 2013] 2304852 bytes read
[Fri Dec 27 15:18:59.381 2013] reading devicetree.dtb
[Fri Dec 27 15:18:59.475 2013] 
[Fri Dec 27 15:18:59.475 2013] 2709 bytes read
[Fri Dec 27 15:18:59.491 2013] reading ramdisk8M.image.gz
[Fri Dec 27 15:19:06.121 2013] 
[Fri Dec 27 15:19:06.121 2013] 2501584 bytes read
[Fri Dec 27 15:19:06.144 2013] Trying to set up GEM link...
[Fri Dec 27 15:19:06.144 2013] Resetting PHY...
[Fri Dec 27 15:19:06.144 2013] 
[Fri Dec 27 15:19:06.144 2013] PHY reset complete.
[Fri Dec 27 15:19:06.144 2013] Waiting for PHY to complete auto-negotiation...
[Fri Dec 27 15:19:18.176 2013] ***Error: Auto-negotiation stalled...
[Fri Dec 27 15:19:18.176 2013] ping failed; host 10.10.70.101 is not alive

私はこれらの行に特に興味があります:

[Fri Dec 27 15:19:06.144 2013] PHY reset complete.
[Fri Dec 27 15:19:06.144 2013] Waiting for PHY to complete auto-negotiation...
[Fri Dec 27 15:19:18.176 2013] ***Error: Auto-negotiation stalled...
[Fri Dec 27 15:19:18.176 2013] ping failed; host 10.10.70.101 is not alive

質問#1:これらの行はTCP / IP用だと思いますか?

見てわかるように、ここでは約12秒が無駄になっています。問題は、高速ブートシステムが必要であり、最終アプリケーションでTCP / IPをまったく必要としないことです。

これまでにインストールしたLinuxは、ザイリンクスが提供するビルド済みのイメージを使用していました。TCP / IP部分を取り除くために(私はそれを必要としないので、OSにない場合、この12秒は節約される可能性があります-これは私の理解です)、独自のLinuxカーネル。

ホストシステムからクロスコンパイルする必要があると想定して、PetaLinuxのソースコードをダウンロードしました。

質問#2:しかし、OSの起動時にTCP / IP部分を除外して、OSの起動時に時間のかかるTCP / IPルーチンが実行されないようにするにはどうすればよいですか?

質問#3:ビルド済みのイメージで、TCP / IPパーツを無効にするオプションがあるかどうかもわかりません。

私の目的は、起動プロセス中にこれらの行を取り除くことです。

[Fri Dec 27 15:19:06.144 2013] PHY reset complete.
[Fri Dec 27 15:19:06.144 2013] Waiting for PHY to complete auto-negotiation...
[Fri Dec 27 15:19:18.176 2013] ***Error: Auto-negotiation stalled...
[Fri Dec 27 15:19:18.176 2013] ping failed; host 10.10.70.101 is not alive

ステップ1:使用されているinitシステムを確認します。ステップ2:その構成ファイルをつついてください。
ストジー

カーネルソースはありますか?現在、どのように起動していますか?関係するデバイスツリーはありますか?
Stark07 2014年

そのメッセージはU-Bootからのものであり、Linuxはその時点ではまだ起動していません。
Gilles「SO-邪悪なことをやめなさい」2014

回答:


2

質問2:それらのプリントはubootからのものだと思います。その場合、「CONFIG_PHY_RESET」が定義されていると思います。そのためにuboot構成を確認してください。この機能を無効にするには、おそらく設定を確認する必要があります。通常、。/ include / configs / YourBoardConfigFile.hのようなもので、ubootが使用するものです。

他の回答の1つがKconfigを使用するように要求されました-私はubootのmenuconfigを確認しましたが、そのオプションはありませんでした。

あなたはubootソースファイルを見てみた場合: ./drivers/net/4xx_enet.c、「CONFIG_PHY_RESET」を検索、コードが実行されているように思われます。

#if defined(CONFIG_PHY_RESET)
/*
 * Reset the phy, only if its the first time through
 * otherwise, just check the speeds & feeds
 */
if (hw_p->first_init == 0) {

その後すぐに、「PHYオートネゴシエーションの完了を待機しています」というテキストが表示されるので、これは問題が発生している場所(またはそれに近い場所)にあるはずです。

なんらかの理由で、最上位のubootソースのREADMEファイルはCONFIG_PHY_RESET_DELAYを呼び出しますが、CONFIG_PHY_RESETを呼び出さないため、そこで見落としている可能性があります。

質問3: CONFIG_PHY_RESETが問題である場合、これはコンパイル時に設定する必要があります。ボードにザイリンクスのuBootソースをダウンロードできるはず です。

リセットが必要な理由がわからないので、質問1には実際には回答しませんでしたが、一部のPHYは初期化時にリセットするための要件が​​異なり、一部のPHYにもある程度の遅延が必要なようです。


0

そのシステムは明らかにIPアドレス10.10.70.101にpingを送信することを望んでいます。これはおそらく、システムが自身のIPアドレスまたはゲートウェイをチェックしているためです。この部分は、システムがそのIPアドレスまたは同様のIPアドレスを持つネットワークインターフェイスで構成されていることを意味します。

一時停止が発生するのは、IPの構成プロセスで、PHY自動ネゴシエーションを実行するイーサネットネットワークドライバーをロードし、接続されているものを確認しようとするためです。接続されていないため、タイムアウトします。

このLinuxディストリビューションがネットワークインターフェイス設定を保持している場所を探す必要があります。大まかなGoogle検索は、このU-Bootにhttp://www.denx.de/wiki/view/DULG/UBootEnvVariablesipaddrごとの変数があることを示しています


-1

Kconfigカーネルのコンパイル時にネットワーキングを無効にするには、またはそのグラフィカルな類似物を使用します。例:これを参照してください


2
リンクを投稿するだけでなく、関連するコンテンツをこのサイトに直接含めてください。リンク先のサイトがなくなると、回答の価値がなくなります。
slm
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.