3. 硬件环境准备:开发板网络接口确认与连接测试
做网络启动,硬件是基础。我见过不少朋友,软件配得天花乱坠,结果网线一插灯都不亮——那真是白忙活一场。这一节,咱们把硬件环境彻底搞定。
3.1 确认开发板的MAC地址
MAC地址,说白了就是网卡的身份证。每个网卡出厂时都有一个全球唯一的MAC地址。但在嵌入式开发板上,情况有点特殊。
很多开发板的MAC地址是存储在EEPROM或OTP区域里的。U-Boot启动时会去读这个地址。如果读不到,U-Boot就会随机生成一个。嗯,这里要注意:随机生成的MAC地址,每次重启都可能变,网络环境会乱套。
怎么确认?
在U-Boot命令行下,执行:
=> printenv ethaddr
ethaddr=00:11:22:33:44:55
如果返回空,或者显示「ethaddr not defined」,那就说明MAC地址没设置。我曾经遇到过一块板子,出厂时EEPROM是空的,结果每次DHCP都拿不到IP,折腾了半天才发现是MAC地址全零。
=> setenv ethaddr 00:11:22:33:44:01
=> saveenv
3.2 确认PHY芯片状态
PHY芯片是网卡的物理层芯片,负责把数字信号变成电信号。U-Boot能不能识别PHY,直接决定了网络能不能通。
查看PHY信息:
=> mii info
PHY 0x01: OUI = 0x0800, Model = 0x22, Rev = 0x01
PHY 0x02: OUI = 0x0040, Model = 0x61, Rev = 0x00
如果返回「No PHY found」,那就麻烦了。我遇到过的情况是:PHY芯片的复位引脚没拉高,导致芯片一直处于复位状态。检查一下硬件原理图,看看PHY的复位电路是否正常。
常见PHY芯片速查表:
| PHY型号 | 常见于 | U-Boot驱动 |
|---|---|---|
| RTL8211F | Rockchip、Allwinner | drivers/net/phy/realtek.c |
| AR8035 | NXP i.MX系列 | drivers/net/phy/atheros.c |
| KSZ9031 | TI AM335x | drivers/net/phy/micrel.c |
| LAN8720 | STM32MP1 | drivers/net/phy/smsc.c |
3.3 路由器/交换机配置
开发板要接入网络,路由器或交换机得先配好。这里我建议用静态IP,简单可靠。
配置要点:
- DHCP服务器: 开启,地址池范围建议 192.168.1.100 - 192.168.1.200
- 静态IP绑定: 把开发板的MAC地址绑定一个固定IP,比如 192.168.1.100
- 关闭防火墙: 至少关闭针对开发板IP的防火墙规则
- 确认网段: 开发板和主机要在同一个网段,比如都是 192.168.1.x
3.4 网线连接与物理测试
网线这东西,看着简单,坑却不少。我踩过最大的坑,就是用了条交叉线,结果怎么都ping不通。
网线类型:
- 直通线: 开发板接路由器/交换机,用这个
- 交叉线: 开发板直连电脑,老设备才需要。现在大部分网卡都支持自动翻转,直通线也能用
测试步骤:
- 插上网线,看开发板网口灯是否亮起。绿灯常亮表示链路建立,黄灯闪烁表示有数据收发
- 在U-Boot里执行
ping 192.168.1.1(路由器的IP),看能不能通 - 如果ping不通,检查网线、交换机端口、IP配置
=> ping 192.168.1.1
Using ethernet@ff3e0000 device
host 192.168.1.1 is alive
看到「is alive」,说明网络通了。如果显示「timed out」,那就得回头检查了。
3.5 本章知识体系
下面这张图,把硬件环境准备的流程串起来了。你照着走一遍,基本不会出问题。
硬件环境准备,说白了就是三板斧:看MAC、查PHY、通网络。这三步走完,你的开发板就已经具备了网络启动的基本条件。下一节,咱们开始配置U-Boot的网络参数。