NUCLEO-H5E5ZJ 以太网(Ethernet)移植记录
# }: K/ i9 F) D7 f 1. 硬件分析1.1 方案概述 NUCLEO-H5E5ZJ 通过 LAN8742A-CZ-TR(U17)PHY + RJ45(CN14)支持 10/100M 以太网,PHY 与 STM32H5E5 之间走 RMII 接口。 关键硬件事实(来源:UM3601 §7.11 + MB2129 原理图交叉核对):
REF_CLKPA1CRS_DVPD1 MDIOPA2RXD0PC48 Z' |& Z$ }4 N MDCPC1RXD1PC5 TX_ENPA5TXD0PB12! {# [' E9 q: A( |' h% @ TXD1PG12 文档勘误:UM3601 Table 10 末尾列了 "ETH CLK → PD4",这是从其他板型 UM 拷贝的残留错误——原理图中 PD4 实际接电源开关控制信号 T_PWR_SEL1,与以太网完全无关。UM 表格本身是双栏排版,PDF 文本提取后会错位(例如把 RXD1 错标成 PB7),一切以原理图网络标号 RMII.xxx 为准。 与 LED 无冲突:本板 RMII_RXD1 走 PC5(部分 Nucleo 板型占用 PE5,会与 LD3 冲突,本板不存在此问题)。 2. Zephyr 侧改动2.1 设备树(nucleo_h5e5zj.dts)/* LAN8742A PHY (U17), RMII; PHY nRST tied to board NRST via SB35, addr 0 */# b) k2 R. v5 c* d; V6 P2 Z&mac {) z- O& l' O7 J, f status = "okay";+ }. A/ `, o) P8 h' A/ [/ b. Z' r pinctrl-0 = <ð_rmii_rxd0_pc4 ð_rmii_rxd1_pc5! h4 v- i3 D R3 d ð_rmii_ref_clk_pa16 H1 i$ h! B: {) ?) Y2 p ð_rmii_crs_dv_pd1 ð_rmii_tx_en_pa5 ð_rmii_txd0_pb12 ð_rmii_txd1_pg12>;+ S5 t+ H; [$ |0 R2 l5 @: V pinctrl-names = "default";2 c0 }* i- e; ?, U# K# l phy-connection-type = "rmii";# g& k# G% N: T1 B( N phy-handle = <ð_phy>; }; 4 ^$ n0 J0 l' ]6 T0 R6 P- m4 S &mdio {% D& b0 G' C' w' {9 v9 m* S status = "okay";- k: t/ b& `3 }& m pinctrl-0 = <ð_mdio_pa2 ð_mdc_pc1>;2 n! g, e% S: _/ r2 L pinctrl-names = "default"; eth_phy: ethernet-phy@0 {8 X) j0 ?6 Z' g [ compatible = "ethernet-phy"; reg = <0x00>;" ]$ q" t0 C9 W# F# @) C }; }; 说明:
configdefault NET_L2_ETHERNET default y endif # BOARD_NUCLEO_H5E5ZJ 这里有个坑(详见 §3):不要照抄 stm32h5f5j_dk 的 configdefault ETH_DRIVER,在 Zephyr v4.4 中必须默认打开 NET_L2_ETHERNET;ETH_DRIVER 自身带 default y if NET_L2_ETHERNET,链路会自动闭合,ETH_STM32_HAL 由设备树 DT_HAS_ST_STM32_ETHERNET_ENABLED 自动使能。 2.3 其他
现象:配置好设备树后编译 samples/net/dhcpv4_client,报: subsys/net/lib/shell/iface.c:899: error: implicit declaration of function 'net_eth_get_phy'排查过程:
修复:参考 nucleo_h563zi / nucleo_f429zi 的 Kconfig.defconfig,默认打开 NET_L2_ETHERNET(见 §2.2)。 经验:跨 Zephyr 版本抄板级 Kconfig 时要小心,同系列新板(main 上的)的写法在旧版本里可能不成立;遇到"隐式声明"错误先查 autoconf.h 里相关配置项的组合是否一致。 4. 构建与验证2 d0 |1 s. _) J1 n- Z4 G. Yexport ZEPHYR_SDK_INSTALL_DIR=/d/Zephyrproject/zephyr-sdk-1.0.1/zephyr-sdk-1.0.15 Z8 [$ h* g6 N2 f0 S' K9 i ' [, T+ B% `% P) _ west build -b nucleo_h5e5zj zephyr/samples/net/dhcpv4_client -d build_h5e5_net -p always -- -DBOARD_ROOT=D:/STM32/STM32H5E5/NUCLEO_H5E5ZJ west flash -d build_h5e5_net 网线插到 RJ45(CN14),对端需有 DHCP 服务(路由器/交换机)。串口(ST-LINK VCP,115200 8N1)观察启动日志。 实测结果(2026-10-16)[00:00:00.050,000] <inf> phy_mii: PHY (0) ID 7C131& X& l ~# j1 j: O& G*** Booting Zephyr OS build v4.4.0-25-ga51fc4394abb ***) m) e& @2 |1 b [00:00:00.051,000] <inf> net_dhcpv4_client_sample: Run dhcpv4 client [00:00:00.051,000] <inf> net_dhcpv4_client_sample: Start on ethernet: index=1 [00:00:02.853,000] <inf> phy_mii: PHY (0) Link speed 100 Mb, full duplex [00:00:05.941,000] <inf> net_dhcpv4: Received: 192.168.3.15 [00:00:05.941,000] <inf> net_dhcpv4_client_sample: Address[1]: 192.168.3.152 w# d0 t; h1 r$ B! @ [00:00:05.941,000] <inf> net_dhcpv4_client_sample: Subnet[1]: 255.255.255.0 [00:00:05.941,000] <inf> net_dhcpv4_client_sample: Router[1]: 192.168.3.1 PC 侧反向验证: C:\> ping 192.168.3.15已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),最短 = 0ms,最长 = 1ms,平均 = 0ms
|
微信公众号
手机版