写在前面:
1.PC机上要搭建好一个TFTP server, 可以提供给target机tftp uImage 和 devicetree
2.在一个linux机上搭建好一个NFS server, 建立好一个目录用来将文件系统解压到NFS目录
一、烧写QSPIFLASH
1.在SD卡启动模块下启动,进入U-BOOT
Hit any key to stop autoboot: 0
zynq-uboot>
zynq-uboot>
2.确认QSPIFLASH
zynq-uboot> sf probe 0 0 0
SF: Detected S25FL128S_64K with page size 512 Bytes, erase size 128 KiB, total 32 MiB
zynq-uboot>
3.读出BOOT.bin,得到文件大小
zynq-uboot> fatload mmc 0 0x03000000 ${boot_image}
reading BOOT.bin
17909744 bytes read in 1513 ms (11.3 MiB/s)
4.计算出17909744这个大小的HEX值--> 0x11147f0
5.按这个企擦出QSPI-FLASH
zynq-uboot> sf erase 0 +0x11147f0
SF: 17956864 bytes @ 0x0 Erased: OK
6.将刚刚读出的BOOT.bin这个文件,从这个地址写入到qspi-flash的0地址处
zynq-uboot> sf write 0x03000000 0 0x11147f0
SF: 17909744 bytes @ 0x0 Written: OK
二、从NFS启动系统
1.正确的配置好跳线,从QSPI启动。
2.对应该的连接器也要接到EMMC接口上
3.上电进入U-Boot
Net: Gem.e000b000
Hit any key to stop autoboot: 0
zynq-uboot>
4.设置好本机IP
zynq-uboot> setenv ipaddr 10.180.8.223
5.设置好TFTP服务器IP
zynq-uboot> setenv serverip 10.180.8.171
6.从TFTP服务器上下载devicetree
zynq-uboot> tftpboot 0x2A00000 10.180.8.171:devicetree.dtb
Gem.e000b000 Waiting for PHY auto negotiation to complete.... done
Using Gem.e000b000 device
TFTP from server 10.180.8.171; our IP address is 10.180.8.223
Filename 'devicetree.dtb'.
Load address: 0x2a00000
Loading: ####
509.8 KiB/s
done
Bytes transferred = 44923 (af7b hex)
7.从TFTP服务器上下载uImage
zynq-uboot> tftpboot 0x3000000 10.180.8.171:uImage
Gem.e000b000:1 is connected to Gem.e000b000. Reconnecting to Gem.e000b000
Gem.e000b000 Waiting for PHY auto negotiation to complete.... done
Using Gem.e000b000 device
TFTP from server 10.180.8.171; our IP address is 10.180.8.223
Filename 'uImage'.
Load address: 0x3000000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
####
1.6 MiB/s
done
Bytes transferred = 4819144 (4988c8 hex)
8.设置好启动参数
zynq-uboot> setenv bootargs "noinitrd console=ttyPS1,115200 earlyprintk loglevel=8 rootwait root=/dev/nfs rootfstype=nfs rw nfsroot=10.180.8.200:/home/adolph/share/nfs_rootfs,vers=4,tcp ip=10.180.8.223:10.180.8.200:10.180.8.1:255.255.255.0::eth0::off"
9.启动Kernel
zynq-uboot> bootm 0x3000000 - 0x2A00000
## Booting kernel from Legacy Image at 03000000 ...
Image Name: Linux-4.14.0-g7cee85234c39
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 4819080 Bytes = 4.6 MiB
Load Address: 00008000
Entry Point: 00008000
Verifying Checksum ... OK
## Flattened Device Tree blob at 02a00000
Booting using the fdt blob at 0x2a00000
Loading Kernel Image ... OK
Loading Device Tree to 1fff2000, end 1fffff7a ... OK
Starting kernel ...
10. 状态
axi-jesd204-tx 44b90000.axi-jesd204-tx: axi_jesd204_tx_probe: enter
macb e000b000.ethernet eth0: link up (100/Full)
IP-Config: Complete:
device=eth0, hwaddr=00:0a:35:00:01:22, ipaddr=10.180.8.223, mask=255.255.255.0, gw=10.180.8.1
host=10.180.8.223, domain=, nis-domain=(none)
bootserver=10.180.8.200, rootserver=10.180.8.200, rootpath= nameserver0=238.0.0.0
ALSA device list:
: Mounted root (nfs4 filesystem) on device 0:15.
devtmpfs: mounted
Freeing unused kernel memory: 1024K
Starting rcS...
++ Mounting filesystem
mount: mounting /dev/mmcblk0p1 on /mnt failed: No such file or directory
mount: mounting /dev/mmcblk0 on /mnt failed: No such file or directory
++ Setting up mdev
++ Starting telnet daemon
++ Starting http daemon
++ Starting ftp daemon
++ Starting ssh daemon
/etc/init.d/rcS: line 34: /usr/sbin/sshd: not found
rcS Complete
zynq>