背景
使用 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