Scarthgap 6.6.52 上の iMX6ULL イーサネット 6.6.52 カーネルの Yocto ビルドに移行しましたが、イーサネットを動作させるのに苦労しています。移行時に、TX_CLK ラインは正弦波クロックではなく定数値であることに気付きました。メタサードパーティレイヤーから複数のボードのビルディングを試みましたが、クロック信号を確認できませんでした。 設定を変更する必要がある場合はアドバイスをお願いします: pinctrl_enet1: enet2grp { fsl、ピン = < MX6UL_PAD_GPIO1_IO07__ENET1_MDC 0x1b0b1 MX6UL_PAD_GPIO1_IO06__ENET1_MDIO 0x1b0b1 MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN 0x1b0b0 MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER 0x1b0b0 MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00 0x1b0b0 MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01 0x1b0b0 MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN 0x1b0b0 MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00 0x1b0b0 MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x1b0b0 MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1 0x4001b031 >; }; &fec1 { pinctrl-names = "デフォルト"; pinctrl-0 = <&pinctrl_enet1>; phy-mode = "rmii"; phy-handle = <ðphy2>; ステータス = "正常"; メディオ { #アドレスセル = <1>; #セルサイズ = <0>; ethphy2: イーサネット-phy@2 { クロック = <&clks IMX6UL_CLK_ENET2_REF>; クロック名 = "rmii-ref"; レジスタ = <1>; }; }; }; 同じ構成は、これらの行がなくてもバージョン 5.5.15 で動作しました。 クロック = <&clks IMX6UL_CLK_ENET2_REF>; クロック名 = "rmii-ref"; さらに、変更点を確認すると、Yocto リリース間で imx6ul.dtsi ファイルに次の変更があることに気付きました。 fec2: イーサネット@20b4000 { 互換性 = "fsl,imx6ul-fec", "fsl,imx6q-fec"; レジスタ = <0x020b4000 0x4000>; 割り込み名 = "int0", "pps"; 割り込み = 、 ; クロック = <&clks IMX6UL_CLK_ENET>, <&clks IMX6UL_CLK_ENET_AHB>, <&clks IMX6UL_CLK_ENET_PTP>, <&clks IMX6UL_CLK_ENET2_REF_125M>, <&clks IMX6UL_CLK_ENET2_REF_125M>; クロック名 = "ipg", "ahb", "ptp", 「enet_clk_ref」、「enet_out」; fsl、送信キュー数 = <1>; fsl、受信キュー数 = <1>; fsl、停止モード = <&gpr 0x10 4>; fsl、マジックパケット; fsl、wakeup_irq = <0>; ステータス = "無効"; }; なりました: fec2: イーサネット@20b4000 { 互換性 = "fsl,imx6ul-fec", "fsl,imx6q-fec"; レジスタ = <0x020b4000 0x4000>; 割り込み名 = "int0", "pps"; 割り込み = 、 ; クロック = <&clks IMX6UL_CLK_ENET>, <&clks IMX6UL_CLK_ENET_AHB>, <&clks IMX6UL_CLK_ENET_PTP>, <&clks IMX6UL_CLK_ENET2_REF_SEL>; クロック名 = "ipg", "ahb", "ptp", 「enet_clk_ref」; fsl、送信キュー数 = <1>; fsl、受信キュー数 = <1>; fsl、停止モード = <&gpr 0x10 4>; fsl、マジックパケット; fsl、wakeup_irq = <0>; ステータス = "無効"; }; ご協力をよろしくお願いいたします。 Re: iMX6ULL Ethernet on Scarthgap 6.6.52 イーサネットの動作、 root@imx6ul:~# ifconfig eth0: flags=4099 mtu 1500 inet6 fe80::230:64ff:fe3f:f7ff プレフィックス長 64 スコープID 0x20 ether 00:30:64:3f:f7:ff txqueuelen 1000 (イーサネット) RXパケット 0 バイト 0 (0.0 B) RXエラー 0 ドロップ 0 オーバーラン 0 フレーム 0 送信パケット 12 バイト 1558 (1.5 KiB) 送信エラー 0 ドロップ 0 オーバーラン 0 キャリア 0 衝突 0 lo: flags=73 mtu 65536 inet 127.0.0.1 ネットマスク 255.0.0.0 inet6 ::1 プレフィックス長 128 スコープID 0x10 loop txqueuelen 1000 (ローカルループバック) RXパケット 93320 バイト 7092320 (6.7 MiB) RXエラー 0 ドロップ 0 オーバーラン 0 フレーム 0 送信パケット 93320 バイト 7092320 (6.7 MiB) 送信エラー 0 ドロップ 0 オーバーラン 0 キャリア 0 衝突 0 root@imx6ul:~# ethtool eth0 eth0の設定: サポートされているポート: [ TP MII ] サポートされているリンクモード: 10baseT/Half 10baseT/Full 100baseT/ハーフ 100baseT/フル 1000baseT/フル 1000baseX/フル サポートされている一時停止フレームの使用: 対称 自動ネゴシエーションをサポート: はい サポートされているFECモード: 報告なし アドバタイズされたリンクモード: 10baseT/Half 10baseT/Full 100baseT/ハーフ 100baseT/フル 1000baseT/フル 1000baseX/フル 宣伝されている一時停止フレームの使用: 対称 宣伝されている自動ネゴシエーション: はい 宣伝されているFECモード: 報告なし 速度: 不明! デュプレックス: 不明! (255) 自動ネゴシエーション: オン マスタースレーブ設定: 優先スレーブ マスタースレーブステータス: スレーブ ポート: ツイストペア PHYAD: 0 トランシーバ: 外部 MDI-X: オン(強制) ウェイクオンをサポート: g ウェイクオン: d リンクが検出されました: いいえ いずれの場合も、イーサネット ケーブルとハードウェアは以前の BSP バージョンを使用して適切にテストされています。 Re: iMX6ULL Ethernet on Scarthgap 6.6.52 こんにちは、nxpさん gatesgarth(5.10) から scarthgap(6.6.52) への imx6ul BSP のアップグレードでも同じ問題が発生しています。使用されている dts と dtsi は添付されており、pinctrl および reg プロパティへの同じ最小限の変更が古い BSP(5.10) でも機能しました。 起動後のボードは IPv6 を割り当てることができますが、dmesg は以下のパニックを表示します (fec 以外のメッセージは無視してください) [ 27.822747] Micrel KSZ8081 または KSZ8091 2188000.イーサネット-1:00:接続されているPHYドライバ(mii_bus:phy_addr=2188000.イーサネット-1:00、irq=POLL) [ 28.170432] flexcan 2094000.can CAN1: ビットタイミングがまだ定義されていません [ 29.624259] flexcan 2090000.can CAN0: ビットタイミングがまだ定義されていません [ 29.929672] fec 2188000.イーサネット eth0: リンクはアップ - 不明/不明 - フロー制御オフ [ 30.969118] fec 2188000.イーサネット eth0: リンクがダウンしています [ 34.840743] weston[580]: MFD_EXECまたはMFD_NOEXEC_SEALが設定されていない状態でmemfd_create()が呼び出されました [ 37.241251] fec 2188000.イーサネット eth0: リンクはアップ - 不明/不明 - フロー制御オフ [ 38.249410] fec 2188000.イーサネット eth0: リンクがダウンしています [ 39.290339] Micrel KSZ8081 または KSZ8091 2188000.イーサネット-1:00:マスター/スレーブ解決に失敗しました [ 39.290406] ------------[ここでカット]------------ [ 39.290429] 警告: CPU: 0 PID: 126 /ドライバ/net/phy/phy.c:1259 phy_state_machine+0xb0/0x2e8 [ 39.290546] phy_check_link_status+0x0/0xc0: 返された値: -67 [ 39.290614] リンクされているモジュール: caam_jr caamkeyblob_desc caamhash_desc caamalg_desc crypto_engine authenc libdes caam secvio error 8021q [ 39.290858] CPU: 0 PID: 126 通信: kworker/0:5 汚染されていない 6.6.52-lts-next-gcec723603de8-dirty#1 [ 39.290911] ハードウェア名: Freescale i.MX6 Ultralite (デバイスツリー) [ 39.290943] ワークキュー: events_power_efficient phy_state_machine [ 39.291050] show_stack+0x10/0x14からのunwind_backtrace [ 39.291144] dump_stack_lvl+0x40/0x4c からの show_stack [ 39.291252] dump_stack_lvl from __warn+0x94/0xc0 [ 39.291357] __ warn_slowpath_fmt+0x130/0x1bc からの警告 [ 39.291443] phy_state_machine+0xb0/0x2e8 からの warn_slowpath_fmt [ 39.291537] process_one_work+0x140/0x298 からの phy_state_machine [ 39.291634] worker_thread+0x27c/0x4ac からの process_one_work [ 39.291712] kthread+0x110/0x12c からの worker_thread [ 39.291819] ret_from_fork+0x14/0x28 からの kthread [ 39.291915] 例外スタック(0xa0d05fb0 から 0xa0d05ff8) [ 39.291966] 5fa0: 00000000 00000000 00000000 00000000 [ 39.292021] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 39.292069] 5fe0: 00000000 00000000 00000000 00000013 00000000 [ 39.292099] ---[ トレース終了 00000000000000000 ]--- 注意: imx6ul.dtsi はまったく変更されておらず、evk からそのまま使用されています。 これに関してのご意見をいただければ幸いです。 Re: iMX6ULL Ethernet on Scarthgap 6.6.52 i.MX6 デュアル プロセッサを搭載した Digi CC6[N] SBC で、Thud / DEY-2.6 / 4.9.212 から Scarthgap / DEY-5.0 / 6.6.52 に移行する際に、まったく同じ問題が発生しています。 他のすべての組み込みシステム機能 (GPIO、USB、シリアルなど) を検証しましたが、FEC イーサネットは起動しません。私もあなたと同じように、デバイス ツリーやクロック ツリーに何か問題があるのではないかと疑っています。この投稿では、RGMII (?) クロックに関連するドライバの問題がある可能性も示唆されているようです。ただし、`fec_probe` と `fec_enet_init` をインストルメントしましたが、どちらも呼び出されることはなかったので、少なくとも `fec_probe` は一致する DTB エントリで呼び出されると思われるため、主な仮説はデバイス ツリーです。 私が実行して行き詰まった実験の 1 つは、Thud / DEY-2.6 / 4.9.212 の DTB を Scarthgap / DEY-5.0 / 6.6.52 カーネルで使用するというものでした。その結果、システムは「カーネルを起動しています...」というところまでしか進みませんでしたが、その後ハングしました。 次の実験では、4.9.212 システムと 6.6.52 システムで ` find /sys/kernel/debug/clk/ -type f -print -exec cat {} \;` を実行して、クロック ツリーを比較します。 Re: iMX6ULL Ethernet on Scarthgap 6.6.52 @Manuel_Salas以前の dtsi ベース ファイルと一致させるために、調整された IMX6ULL と IMX6UL の両方の dtsi ファイルを使用しました。どちらも機能的なイーサネット接続を実現していません。fdt ファイルをリバースすると、本質的に同じイーサネット ノードになりますが、機能は変更されていません。デバイスは FEC を取得しますが、IP アドレスを取得できません。さらに、ethtool を使用すると、両方のデバイスは同じに見えます。 以下は 2 つのイーサネット ノードです (両方のスニペットから MAC アドレスを削除しました) イーサネット動作中(6.1.15カーネル): イーサネット@20b4000 { ローカルMACアドレス = [] ; 互換性 = "fsl,imx6ul-fec" 、 "fsl,imx6q-fec" ; レジスタ = < 0x20b4000 0x4000 >; 割り込み名 = "int0" 、 "pps" ; 割り込み = < 0x00 0x78 0x04 0x00 0x79 0x04 >; クロック = < 0x01 0x90 0x01 0x91 0x01 0x30 0x01 0x2e 0x01 0x2e >; クロック名 = "ipg" 、 "ahb" 、 "ptp" 、 "enet_clk_ref" 、 "enet_out" ; fsl、送信キュー数 = < 0x01 >; fsl、受信キュー数 = < 0x01 >; fsl、停止モード = < 0x0b 0x10 0x04 >; fsl、マジックパケット; fsl、wakeup_irq = < 0x00 >; ステータス = "正常" ; pinctrl-names = "default" ; ピンコントロール-0 = < 0x0d >; phy-mode = "rmii" ; phy-handle = < 0x0e >; phy-reset-gpios = < 0x0f 0x08 0x01 >; phy-reset-duration = < 0xc8 >; メディオ{ #アドレスセル = < 0x01 >; #size-cells = < 0x00 >; イーサネット-phy@1 { 互換性 = "イーサネット-phy-ieee802.3-c22"; レジスタ = < 0x00 >; ファンドル = < 0x0e >; }; }; }; yocto カーネル 6.6.52 ではイーサネットが動作しません (これは、6.1.15 で動作している以前のカーネルの dtsi 定義を使用します)。 イーサネット@20b4000 { ローカルMACアドレス = [2a a8 1c a9 84 c7] ; 互換性 = "fsl,imx6ul-fec" 、 "fsl,imx6q-fec" ; レジスタ = < 0x20b4000 0x4000 >; 割り込み名 = "int0" 、 "pps" ; 割り込み = < 0x00 0x78 0x04 0x00 0x79 0x04 >; クロック = < 0x01 0x90 0x01 0x91 0x01 0x30 0x01 0x2e 0x01 0x2e >; クロック名 = "ipg" 、 "ahb" 、 "ptp" 、 "enet_clk_ref" 、 "enet_out" ; fsl、送信キュー数 = < 0x01 >; fsl、受信キュー数 = < 0x01 >; fsl、停止モード = < 0x0c 0x10 0x04 >; fsl、マジックパケット; fsl、wakeup_irq = < 0x00 >; ステータス = "正常" ; pinctrl-names = "default" ; ピンコントロール-0 = < 0x0d >; phy-mode = "rmii" ; phy-handle = < 0x0e >; phy-reset-gpios = < 0x0f 0x08 0x01 >; phy-reset-duration = < 0xc8 >; メディオ{ #アドレスセル = < 0x01 >; #size-cells = < 0x00 >; イーサネット-phy@1 { 互換性 = "イーサネット-phy-ieee802.3-c22"; レジスタ = < 0x00 >; ファンドル = < 0x0e >; }; }; }; Re: iMX6ULL Ethernet on Scarthgap 6.6.52 @Manuel_Salas申し訳ありません。6.1.55からの移行でした。(ミクルドア) から 6.6.52 (スカースギャップ) SO I see, 更新された FEC 構成は次のようになります。 &fec1 { pinctrl-names = "デフォルト"; pinctrl-0 = <&pinctrl_enet1>; phy-mode = "rmii"; phy-handle = <ðphy2>; ステータス = "正常"; メディオ { #アドレスセル = <1>; #セルサイズ = <0>; ethphy2: イーサネット-phy@2 { クロック = <&clks IMX6UL_CLK_ENET2_REF_125M>; クロック名 = "rmii-ref"; レジスタ = <1>; }; }; }; 古い imx6ul および 6ull 構成ファイルを dtsi ファイルとともに使用しようとしましたが、これも機能しませんでした。 Re: iMX6ULL Ethernet on Scarthgap 6.6.52 こんにちは@Rashaad
お元気でお過ごしのことと思います。
使用しているバージョンと使用していないバージョンについては少し混乱していますが、主な違いはデバイス ツリー 5.15.y が使用されていることです。
<&clks IMX6UL_CLK_ENET2_REF_125M>;
新しいバージョンでは、デバイス ツリー 6.6.yでわかるように使用されます。
<&clks IMX6UL_CLK_ENET2_REF_SEL>;
古い構成を新しいデバイスツリー バージョンにCANで追加してみることができます。
よろしくお願いいたします。
サラス。
Re: iMX6ULL Ethernet on Scarthgap 6.6.52 さらにバージョンは6.5.15でした Re: iMX6ULL Ethernet on Scarthgap 6.6.52 申し訳ありませんが、ピン構成は実際は次のとおりです。 pinctrl_enet2 : enet2grp { fsl、ピン = < MX6UL_PAD_GPIO1_IO07__ENET2_MDC 0x1b0b0 MX6UL_PAD_GPIO1_IO06__ENET2_MDIO 0x1b0b0 MX6UL_PAD_ENET2_RX_EN__ENET2_RX_EN 0x1b0b0 MX6UL_PAD_ENET2_RX_ER__ENET2_RX_ER 0x1b0b0 MX6UL_PAD_ENET2_RX_DATA0__ENET2_RDATA00 0x1b0b0 MX6UL_PAD_ENET2_RX_DATA1__ENET2_RDATA01 0x1b0b0 MX6UL_PAD_ENET2_TX_EN__ENET2_TX_EN 0x1b0b0 MX6UL_PAD_ENET2_TX_DATA0__ENET2_TDATA00 0x1b0b0 MX6UL_PAD_ENET2_TX_DATA1__ENET2_TDATA01 0x1b0b0 MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2 0x4001b031 >; }; &fec2 { pinctrl-names = "default" ; pinctrl-0 = < &pinctrl_enet2 >; phy-mode = "rmii" ; phy-handle = < ðphy1 >; // phy-reset-gpios = <&gpio5 8 GPIO_ACTIVE_LOW>; // phy-reset-duration = <200>; ステータス = "正常" ; メディオ{ #アドレスセル = < 1 >; #size-cells = < 0 >; ethphy1 :イーサネット-phy@1 { 互換性 = "イーサネット-phy-ieee802.3-c22"; クロック = < &clks IMX6UL_CLK_ENET2_REF >; クロック名 = "rmii-ref" ; reg = < 0 >; }; }; }; Re: iMX6ULL Ethernet on Scarthgap 6.6.52 こんにちは、 私も同じ問題を経験しています。解決策は見つかりましたか? 敬具 Re: iMX6ULL Ethernet on Scarthgap 6.6.52 こんにちは、 私も同じ問題を経験しています。解決策は見つかりましたか? 敬具 Re: iMX6ULL Ethernet on Scarthgap 6.6.52 こんにちは、東条です。 私たちも同じ問題を抱えていましたが、なんとか解決できました。NXP は、まずクロックの正弦波 (問題なし) をチェックし、i.MX6UL リファレンス マニュアルの IOMUXC_GPR_GPR1 レジスタが期待値に従って設定されていることを確認することを提案しました。 私たちのCASEでは、問題は時計とは関係がありませんでしたが、時計の問題ではないことが分かりました。実際の問題は、最新の BSP では PHY リセットのタイミングが厳しくなったことです。ボードの起動後に手動で PHY リセットを実行して確認することをお勧めします。 私たちのボードは GPIO ベースの PHY リセットを使用するカスタム ボードですが、EVK は SPI コントローラ ベースの PHY リセットを使用することに注意してください。 Re: iMX6ULL Ethernet on Scarthgap 6.6.52 こんにちは、Shangaさん。返信ありがとうございます。調べてみます。
記事全体を表示