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_EN0x1b0b0 MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER 0x1b0b0 MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA000x1b0b0 MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01 0x1b0b0 MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN 0x1b0b0 MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA000x1b0b0 MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x1b0b0 MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1 0x4001b031 > ; }; &fec1 { pinctrl-names ="default"; pinctrl-0 =<& pinctrl_enet1>; phy-mode ="rmii"; phy-handle =<& ethphy2>; status ="okay" ; mdio { #address-cells =<1>; #size-cells =<0> ; ethphy2: ethernet-phy @2 {cl ocks = < & clks IMX6UL_CLK_ENET2_REF >; 时钟名称 = " rmii-ref "; reg = <1>;};};相同配置在 5.5.15 版上运行,没有这些行:时钟 = < & clks imx6UL_CLK_ENET2_REF >; clock-names = " rmii-ref "; 此外,在查看更改时,我注意到 Yocto 版本之间的 imx6ul.dtsi 文件发生了以下变化:fec2:以太网 @20b4000 {兼容 = " fsl,imx6ul-fec ", " fsl, imx6q-fec "; reg = <0x020b4000 0x4000>;中断 名称 = " int0 "," pps ";中断 = ,< GIC_SPI 121 IRQ_TYPE_LEVEL_HIG H > ; 时钟 = < & clks IMX6UL_CLK_ENET >, < & clks imx6UL_CLK_ENET_AHB >, < & clks imx6UL_CLK_CLK_ENET_PTP >, < & >, < & 点击 IMX6UL_CLK_ENET2_REF_125M >; 时 钟名称 = " ipg ", " ahb ", " ptp ", " enet_clk_ref ", " enet_out "; fsl, num-tx-queues = <1>; fsl,num-rx-queues = <1>; fsl,停止模式 = < & gpr 0x10 4 >;fsl,magic-packet; fsl,wakeup_irq = <0>;状态 = " 禁用 ";};变成: fec2:以太网@ 20b4000 { 兼容 = " fsl,imx6ul-fec "," fsl,imx6q-fec ";reg = <0x020b4000 0x4000>;中断名称 = " int0 "," pps ";中断 = < GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH >, ; 时钟 = < & clks imx6UL_CLK_ENET >, < & clks imx6UL_CLK_CLK_ > < &ENET_PTP >, 86> & clks IMX6UL_CLK_ENET2_REF_SEL >; 时 钟名称 = " ipg ", " ahb ", " ptp ", " enet_clk_ref "; fsl, num-tx-queues = <1> <1> fsl,num-rx-queues = ; fsl,停止模式 = < & gpr 0x10 4 >;fsl,magic-packet; fsl,wakeup_irq = <0>; 状态 = " 已禁用 ";};感谢您的提前帮助。 Re: iMX6ULL Ethernet on Scarthgap 6.6.52 以太网行为, 根 @imx6ul:~# ifconfig eth0:flags=4099 < UP、BROADCAST、MULTU 1500 inet6 fe80:: 230:64 ff: fe3f: f7ff prefixlen 64 scopeid 0x20 eth er 00:30:64:3 f: f7: ff txqueuelen 1000(以太网)RX 数据包 0 字节 (0.0 B) RX 错误 0 已丢弃 0 溢出 0 帧 0 TX 数据包 12 字节 1558 (1.5 KiB) TX 错误 0 丢弃 0 超限 0 载波 0 载波 0 碰撞 0 > lo:flags=73 mtu 65536 inet 127.0.0.1 网络掩码 255.0.0.0 inet6:: 1 prefixlen 128 scopeid 0x10 loop txqueuelen 1000(本地 环回) RX 数据包 93320 字节 7092320 (6.7 MiB) RX 错误 0 丢弃 0 帧 0 个 TX 数据包 93320 字节 70320 字节 7092320 (6.7 MiB) RX 错误 0 丢弃 0 帧 0 个 TX 数据包 93320 字节 92320 (6.7 MiB) TX 错误 0 掉落 0 超支 0 载波 0 次碰撞 0 root @imx6ul:~# ethtool eth0 eth0 的设置: 支持的端口:[TP MII] 支持的链接模式:10BaseT/Half 10BaseT/Full 100BaseT/Half 1000BaseT/全 1000BaseT/全部 1000BaseX/完全支持暂停帧使用:对称 支持自动协商:未报告广告链接模式:10BaseT/Half 10BaseT/Full 100BaseT/Half 100BaseT/Full 100BaseT/Full 100BaseT/Full 100BaseT/Full 100BaseT/Full 100BaseT/Full 100BaseT/Full 100BaseT/Full 全部 1000BaseX/Full 广告暂停帧使用情况:对称 广告自动协商:是 广告的 FEC 模式:未报告速度:未知! 双工:未知! (255) 自动协商:开启 主从 cfg:首选从机 主从状态:从机 端口:双绞线 PHYAD:0 收发器:外部 MDI-X:开启(强制) 支持唤醒:g Wake-on:检测到了 d Link:否 在所有情况下,以太网电缆和硬件均使用先前的电路板支持包版本进行了正确测试。 Re: iMX6ULL Ethernet on Scarthgap 6.6.52 你好 nxp, 我们在将 imx6ul 电路板支持包 从 gatesgarth(5.10)升级到 scarthgap(6.6.52)时遇到了同样的问题。使用的 dts 和 dtsi 已附上,对旧的 电路板支持包(5.10)的 pinctrl 和 reg 属性的微小改动也同样适用。 启动后主板能够分配 ipv6 但是 dmesg 会出现以下紧急情况(忽略除 fec 以外的任何其他消息) [27.822747] Micrel KSZ8081 或 KSZ8091 2188000.ethernet-1:00:attached PHY driver (mii_bus:phy_addr=2188000.ethernet-1:00, irq=POLL) [ 28.170432] flexcan 2094000.can can1: bit-timing not yet defined [ 29.624259] flexcan 2090000.can can0: bit-timing 尚未定义 [ 29.929672] FEC 2188000.Ethernet eth0: Link is Up - Unknown/Unknown - flow control off [ 30.969118] FEC 2188000.ethernet eth0: Link is Down [ 34.840743] weston[580]: memfd_create() 被调用,但未设置 MFD_EXEC 或 MFD_NOEXEC_SEAL [ 37.241251] fec 2188000.ethernet eth0: Link is Up - Unknown/Unknown - flow control off [ 38.249410] FEC 2188000.ethernet eth0: Link is Down [ 39.290339] Micrel KSZ8081 or KSZ8091 2188000.ethernet-1:00:主/从解析失败 [ 39.290406] ------------[ cut here ]------------ [ 39.290429] WARNING: CPU:0 PID: 126 at /drivers/net/phy/phy.c:1259 phy_state_machine+0xb0/0x2e8 [ 39.290546] phy_check_link_status+0x0/0xc0: returned: -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 Comm: kworker/0:5 Not tainted 6.6.52-lts-next-gcec723603de8-dirty#1 [39.290911] 硬件名称:飞思卡尔 i.MX6 Ultralite(设备树)[39.290943] 工作队列:events_power_efficience phy_stack_machine [39.291050] unwind_backtrace 来自 show_stack+0x14 [39.291144] 来自 dump_stack_lvl+0x40/0xx14 [39.291144] show_stack 4c [39.291252] 来自 __warn+0x94/0xc0 [ 39.291357] __ 的 dump_stack_lvl 来自 warn_slowpath_fmt+0x130/0x1bc [39.291443] warn_slowpath_fmt 来自 phy_state_machine+0xstate_machine +0x140/0x290x290 8 [39.291634] process_one_w orkfrom worker_ thread+0x27c/0x4ac [39.291712] worker_thread 来自 kthread+0x110/0x12c [39.291819] kthread 来自 ret_from_fork+0x14/0x28 [39.291915] 异常堆栈 (0xa0d05fb0 到 0xa0d05ff8) [39.291966] 5fa0:00000 0000 00000000 00000000 00000000 [39.292021] 5fc0:00000000 00000000 00000000 00000000 00000000 00000000 [39.292069] 5fe0:00000000 00000000 00000000 [39.292099]---[结束跟踪 00000000000000]---注意: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”,两者都没有被调用,所以主要的假设是设备树,因为看来至少会在匹配的 DTB 条目上调用 “fec_probe”。 我进行的一项实验是将 Thud / DEY-2.6 / 4.9.212 的 DTB 与 Scarthgap / DEY-5.0 / 6.6.52 内核结合使用,但这项实验毫无结果。结果系统只运行到 "启动内核...... "就挂起了。 我的下一个实验是运行find /sys/kernel/debug/clk/ -type f -print -exec cat {}\;` 在 4.9.212 和 6.6.52 系统上比较时钟树。 Re: iMX6ULL Ethernet on Scarthgap 6.6.52 @Manuel_Salas 我使用了调整后的 IMX6ULL 和 IMX6UL dtsi 文件,以便与之前的 dtsi 基本文件保持一致。两台设备的以太网连接都无法正常工作。反转 fdt 文件后,我们的以太网节点基本相同,但功能没有改变。设备确实会接收 fec,但是它无法获取 IP 地址。此外,当使用ethtool时,两个设备看起来相同。 以下是两个以太网节点(我删除了两个片段中的 mac 地址) 工作以太网(6.1.15内核) : 以太网@20b4000{ 本地计算机地址 = []; 兼容 = "fsl、imx6ul-fec", "fsl,imx6q-fec"; 注册 =<0x20b4000 0x4000>; 中断名 = "中断名", "pps"; 中断 =<0x00 0x78 0x04 0x00 0x79 0x04>; 时钟 =<0x01 0x90 0x01 0x91 0x01 0x30 0x01 0x2e 0x01 0x2e>; 时钟名 = "ipg", "ahb", "ptp", "ENET_CLK_REF", "enet_输出"; fsl,num-tx-queues =<0x01>; fsl,num-rx-queues =<0x01>; fsl,停止模式 =<0x0b 0x10 0x04>; fsl、magic-packet; fsl,唤醒 IRQ =<0x00>; 状态 = "好的"; pinctrl-names = "默认"; pinctrl-0 =<0x0d>; 网络模式 = "rmii"; phy-handle =<0x0e>; phy-reset-gpios =; phy-reset-duration =; mdio{ #address-cells =<0x01>; #size-cells =<0x00>; 以太网-phy@1{ 兼容 = "ethernet-phy-ieee802.3-c22"; 注册 =<0x00>; phandle =<0x0e>; }; }; }; 以太网无法在 yocto 内核 6.6.52 上运行(使用了之前内核中的 dtsi 定义,该内核可在 6.1.15 上运行): 以太网@20b4000{ 本地计算机地址 = [2A A8 1C A9 84 C7] ; [2A A8 1C A9 84 C7] ; [2A A8 1C A9 84 C7]; 兼容 = "fsl、imx6ul-fec", "fsl,imx6q-fec"; 注册 =<0x20b4000 0x4000>; 中断名 = "中断名", "pps"; 中断 =<0x00 0x78 0x04 0x00 0x79 0x04>; 时钟 =<0x01 0x90 0x01 0x91 0x01 0x30 0x01 0x2e 0x01 0x2e>; 时钟名 = "ipg", "ahb", "ptp", "ENET_CLK_REF", "enet_输出"; fsl,num-tx-queues =<0x01>; fsl,num-rx-queues =<0x01>; fsl,停止模式 =<0x0c 0x10 0x04>; fsl、magic-packet; fsl,唤醒 IRQ =<0x00>; 状态 = "好的"; pinctrl-names = "默认"; pinctrl-0 =<0x0d>; 网络模式 = "rmii"; phy-handle =<0x0e>; phy-reset-gpios =; phy-reset-duration =; mdio{ #address-cells =<0x01>; #size-cells =<0x00>; 以太网-phy@1{ 兼容 = "ethernet-phy-ieee802.3-c22"; 注册 =<0x00>; phandle =<0x0e>; }; }; }; Re: iMX6ULL Ethernet on Scarthgap 6.6.52 @Manuel_Salas 我很抱歉,这是从 6.1.55 迁移过来的。(mickledore) to 6.6.52 (scarthgap) 好的,我明白了,那么更新后的 fec 配置应该是这样的: &fec1 { pinctrl-names ="default"; pinctrl-0 =<& pinctrl_enet1>; phy-mode ="rmii"; phy-handle =<& ethphy2>; status ="okay" ; mdio { #address-cells =<1>; #size-cells =<0> ; ethphy2: ethernet-phy@2 { clocks =<& clks IMX6UL_CLK_ENET2_REF_125M>; clock-names ="rmii-ref"; reg =<1>; }; }; }; 我曾尝试在 dtsi 文件中使用较早的 imx6ul 和 6ull 配置文件,但也没有成功。 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>;
你可以尝试将旧配置添加到新的设备树版本中。
顺祝商祺!
萨拉斯
Re: iMX6ULL Ethernet on Scarthgap 6.6.52 此外,版本为 6.5.15 Re: iMX6ULL Ethernet on Scarthgap 6.6.52 我很抱歉,针脚配置是正确的: pinctrl_enet2: enet2grp{ fsl,pins =< 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 = "默认"; pinctrl-0 =<&pinctrl_enet2>; 网络模式 = "rmii"; phy-handle =<ðphy1>; //phy-reset-gpios = < & gpio5 8 GPIO_ACTIVE_LOW >; //phy-reset-duration = <200>; 状态 = "好的"; mdio{ #address-cells =<1>; #size-cells =<0>; ethphy1: 以太网-phy@1{ 兼容 = "ethernet-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 Hi tojo, 我们也遇到了同样的问题,但设法解决了。恩智浦建议我们首先检查时钟正弦波(没问题),还要验证i.MX6UL参考手册中的IOMUXC_GPR_GPR1寄存器,以确保其设置符合预期值。 在我们的案例中,问题与时钟无关,但排除它很有帮助。真正的问题是,在最新的电路板支持包中,PHY的RESET时间变得更加严格。我建议在板上启动后手动 PHY RESET 然后看看。 请注意,我们的板是使用基于 GPIO 的 PHY RESET 的自定义板,而 EVK 使用基于 SPI 控制器的 PHY RESET。 Re: iMX6ULL Ethernet on Scarthgap 6.6.52 嗨,Shanga,感谢您的回复。我会调查的。
View full article