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>;
ステータス = "無効";
};
ご協力をよろしくお願いいたします。
こんにちは、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 からそのまま使用されています。
これに関してのご意見をいただければ幸いです。
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 {} \;` を実行して、クロック ツリーを比較します。
@Manuel_Salas以前の dtsi ベース ファイルと一致させるために、調整された IMX6ULL と IMX6UL の両方の dtsi ファイルを使用しました。どちらも機能的なイーサネット接続を実現していません。fdt ファイルをリバースすると、本質的に同じイーサネット ノードになりますが、機能は変更されていません。デバイスは FEC を取得しますが、IP アドレスを取得できません。さらに、ethtool を使用すると、両方のデバイスは同じに見えます。
以下は 2 つのイーサネット ノードです (両方のスニペットから MAC アドレスを削除しました)
イーサネット動作中(6.1.15カーネル):
yocto カーネル 6.6.52 ではイーサネットが動作しません (これは、6.1.15 で動作している以前のカーネルの dtsi 定義を使用します)。
@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 ファイルとともに使用しようとしましたが、これも機能しませんでした。
こんにちは@Rashaad
お元気でお過ごしのことと思います。
使用しているバージョンと使用していないバージョンについては少し混乱していますが、主な違いはデバイス ツリー 5.15.y が使用されていることです。
<&clks IMX6UL_CLK_ENET2_REF_125M>;
新しいバージョンでは、デバイス ツリー 6.6.yでわかるように使用されます。
<&clks IMX6UL_CLK_ENET2_REF_SEL>;
古い構成を新しいデバイスツリー バージョンにCANで追加してみることができます。
よろしくお願いいたします。
サラス。
さらにバージョンは6.5.15でした
申し訳ありませんが、ピン構成は実際は次のとおりです。
こんにちは、
私も同じ問題を経験しています。解決策は見つかりましたか?
敬具
こんにちは、
私も同じ問題を経験しています。解決策は見つかりましたか?
敬具
こんにちは、東条です。
私たちも同じ問題を抱えていましたが、なんとか解決できました。NXP は、まずクロックの正弦波 (問題なし) をチェックし、i.MX6UL リファレンス マニュアルの IOMUXC_GPR_GPR1 レジスタが期待値に従って設定されていることを確認することを提案しました。
私たちのCASEでは、問題は時計とは関係がありませんでしたが、時計の問題ではないことが分かりました。実際の問題は、最新の BSP では PHY リセットのタイミングが厳しくなったことです。ボードの起動後に手動で PHY リセットを実行して確認することをお勧めします。
私たちのボードは GPIO ベースの PHY リセットを使用するカスタム ボードですが、EVK は SPI コントローラ ベースの PHY リセットを使用することに注意してください。