文章目录
本指南提供在 U-Boot 中设置网络和启动环境变量的步骤,以解决常见错误。
1 解决 serverip
未设置错误
在 U-Boot 中收到 “ ERROR: serverip not set" 错误通常是因为没有设置 TFTP 服务器的 IP 地址。要解决这个问题,需要正确设置 serverip
环境变量。
1.1 设置 serverip
首先,在 U-Boot 命令行中设置 serverip
,这是 TFTP 服务器的 IP 地址,例如:
setenv serverip 192.168.31.128
这个命令将 TFTP 服务器的 IP 地址设置为 192.168.31.128
。
1.2 设置 ipaddr
然后,设置开发板自身的 IP 地址:
setenv ipaddr 192.168.31.130
这个命令将开发板的 IP 地址设置为 192.168.31.130
,确保它在网络中是唯一的。
1.3 设置其他网络参数
为了确保网络通信正常,还需要设置其他网络参数,如网关和子网掩码:
setenv gatewayip 192.168.31.1
setenv netmask 255.255.255.0
这些命令分别设置默认网关为 192.168.31.1
和子网掩码为 255.255.255.0
。
1.4 保存环境变量
最后,使用以下命令保存这些环境变量,以确保在设备重启后仍然有效:
saveenv
saveenv
命令将当前设置保存到非易失性存储器中。
2 解决 ethaddr
未设置错误
在 U-Boot 中收到 “ ERROR: ethaddr not set” 错误,表示没有设置以太网的 MAC 地址。要解决这个问题,需要正确设置 ethaddr
环境变量。
2.1 设置 ethaddr
在 U-Boot 命令行中输入以下命令来设置 ethaddr
:
setenv ethaddr CE:99:D5:3E:A1:D8
请注意,CE:99:D5:3E:A1:D8
是一个示例 MAC 地址。可以将其替换为设备的实际 MAC 地址。
2.2 保存环境变量
设置完成后,使用以下命令保存这些设置,以确保下次启动时仍然有效:
saveenv
2.3 验证设置
为了验证设置是否成功,重启设备并在 U-Boot 启动时使用以下命令查看 ethaddr
:
printenv ethaddr
如果显示出刚刚设置的 MAC 地址,说明设置成功。
3 设置 bootcmd
和 bootargs
要在 U-Boot 中正确设置 bootcmd
和 bootargs
环境变量,可以按照以下步骤进行:
3.1 设置 bootcmd
在 U-Boot 命令行中,输入以下命令以设置 bootcmd
环境变量:
setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000'
这个命令会通过 TFTP 协议从服务器下载内核镜像 zImage
和设备树文件 imx6ull-alientek-emmc.dtb
。
3.2 设置 bootargs
接着,输入以下命令以设置 bootargs
环境变量:
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.31.128:/home/witheart/linux/nfs/rootfs ip=192.168.31.130:192.168.31.128:192.168.31.1:255.255.255.0::eth0:off'
在这个配置中,指定了内核启动时的控制台、使用 NFS 作为根文件系统等。
- 其中:
- nfsroot=192.168.31.128:/home/witheart/linux/nfs/rootfs 这个 ip 是服务器 ip
- ip=192.168.31.130:192.168.31.128:192.168.31.1:255.255.255.0 分别为 U-Boot 自身 ip、服务器 ip、网关地址、子网掩码
3.3 保存环境变量
为了确保这些环境变量在设备重启后依然有效,使用以下命令保存设置:
saveenv
4 总结
通过设置 serverip
、ipaddr
、gatewayip
、netmask
、ethaddr
、bootcmd
和 bootargs
,并保存这些设置,应该可以正确设置 U-Boot 的网络。
参考链接
封面
由 DALL-E-3 生成