背景
使用 Vivado配置好网络,并在PetaLinux中构建了完整的uboot、kernel、rootfs以后,发现网络有问题。
> ping 192.168.168.1
ethernet@e000b000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
ping failed; host 192.168.168.1 is not alive
Zynq> ping 192.168.168.1
Using ethernet@e000b000 device
ARP Retry count exceeded; starting again
ping failed; host 192.168.168.1 is not alive
一直ping不通,检查了一遍以后发现配置很正常。
pri打印了一下环境变量以后发现问题。
ipaddr=192.168.168.168
...
serverip=192.168.168.1
细心的读者肯定也发现哪里不对劲了。
是的,缺少了gateway(网关)。
Zynq> set gateway 255.255.255.0
Zynq> ping 192.168.168.1
Using ethernet@e000b000 device
host 192.168.168.1 is alive
附录:常见调试命令
ZYNQ(QSPI 不保存 env)
从网络加载image.ub(内含内核、设备树、文件系统,但无法修改)
set serverip 192.168.168.1; set ipaddr 192.168.168.16; set gateway 192.168.168.1; set bootargs 'root=/dev/nfs nfsroot=192.168.168.106:/home/schips/nfs/rootfs_16c,tcp rw ip=192.168.168.16:192.168.168.211:192.168.168.1:255.255.255.0 ::eth0:on consloe=ttyAMA0,115200'; tftpboot 10000 image.ub_ext4_16c_todo;bootm 10000
从网络加载内核、设备树、文件系统
set serverip 192.168.168.1; set ipaddr 192.168.168.16; set gateway 192.168.168.1; set bootargs 'root=/dev/nfs nfsroot=192.168.168.106:/home/schips/nfs/rootfs_16c_ext4,tcp rw ip=192.168.168.16:192.168.168.211:192.168.168.1:255.255.255.0 ::eth0:on consloe=ttyAMA0,115200'; tftpboot 8000 zImage; tftpboot 103cdd00 system.dtb; bootz 8000 - 103cdd00
从emmc加载内核、设备树、文件系统
set bootargs 'root=/dev/mmcblk1p2 rootfstype=ext4 rootwait rw' ; mmc dev 1; fatload mmc 1 8000 zImage ; fatload mmc 1 103cdd00 system.dtb ; bootz 8000 - 103cdd00
从sd卡启动系统
set bootargs 'root=/dev/mmcblk0p2 rootfstype=ext4 rootwait rw' ; mmc dev 0; fatload mmc 0 8000 zImage ; fatload mmc 0 103cdd00 system.dtb ; bootz 8000 - 103cdd00
fatload mmc 0 8000 emmc/BOOT.bin ; sf probe ; sf erase 0x0 0x800000 ; sf write 0x8000 0x0 0x800000 ;set bootargs 'root=/dev/mmcblk0p2 rootfstype=ext4 rootwait rw' ; mmc dev 0; fatload mmc 0 8000 zImage ; fatload mmc 0 103cdd00 system.dtb ; bootz 8000 - 103cdd00
其他
## 网络调试 + 本地文件系统
### 一次性命令
tftpboot 8000 zImage.intr; tftpboot 103cdda8 system.dtb.intr; set bootargs 'root=/dev/mmcblk1p2 rw rootwait consloe=ttyAMA0,115200'; bootz 8000 - 103cdda8
### 🌟每次启动都可以
set debugboot "tftpboot 8000 zImage.intr; tftpboot 103cdda8 system.dtb.intr; set bootargs 'root=/dev/mmcblk1p2 rw rootwait consloe=ttyAMA0,115200'; bootz 8000 - 103cdda8" ; set bootcmd "run debugboot" ;saveenv ; reset
#################命令片段###################
# 下载内核,设备树, 以 xx 文件系统 启动
tftpboot 8000 zImage; tftpboot 103cdda8 system.dtb; set 'xxx'; bootz 8000 - 103cdda8
# 下载内核+设备树,文件系统由image.ub 指定
tftpboot ${netstart} image.ub; bootm ${netstart}
# 从EMMC读取文件,启动
fatload mmc 0 ${netstart} image.ub; bootm ${netstart}
fatload mmc 0 8000 zImage;fatload mmc 0 103cdda8 system.dtb; set 'xxx'; bootz 8000 - 103cdda8
uio_pdrv_genirq.of_id="generic-uio"
# 指定文件系统路径
## nfs
set bootargs 'root=/dev/nfs nfsroot=192.168.168.106:/home/schips/nfs/rootfs,tcp rw ip=192.168.168.168:192.168.168.211:192.168.168.1:255.255.255.0 ::eth0:on consloe=ttyAMA0,115200';
## 0 for sd-card
set bootargs 'root=/dev/mmcblk0p2 rw rootwait consloe=ttyAMA0,115200';
## 1 for emmc
set bootargs 'root=/dev/mmcblk1p2 rw rootwait consloe=ttyAMA0,115200';
set serverip 192.168.168.16; set ipaddr 192.168.168.168; set gateway 192.168.168.1;
## 带UIO,NFS,TFTP
set bootargs 'root=/dev/nfs nfsroot=192.168.168.106:/home/schips/nfs/rootfs,tcp rw ip=192.168.168.168:192.168.168.211:192.168.168.1:255.255.255.0 ::eth0:on consloe=ttyAMA0,115200 uio_pdrv_genirq.of_id="generic-uio"';
set bootargs 'root=/dev/nfs nfsroot=192.168.168.106:/home/schips/nfs/rootfs,tcp rw ip=192.168.168.168:192.168.168.211:192.168.168.1:255.255.255.0 ::eth0:on consloe=ttyAMA0,115200';
sete nb "tftpboot 8000 zImage; tftpboot 103cdda8 system.dtb; bootz 8000 - 103cdda8";
sete bootcmd "run nb"
savee
run nb