前提: 本文档适合zynqMP平台,如果需要在其他平台使用的话,请自行更改,文章禁止转载,谢谢合作。
由于板子没有外挂EMMC,只设置了一个32MB的flash,所以为了节约空间,在uboot上把所有能够压缩的文件都给压缩了。
FPGA是由BIT文件在linux系统上打包成gz的格式,内核也是打包成gz格式了,需要特别注意。
1. 首先设置uboot上的环境变量(注意,环境变量的地址是在uboot上改过的)
setenv ipaddr 192.168.0.74
setenv serverip 192.168.0.10
setenv netmask 255.255.255.0
setenv gatewayip 192.168.0.254
setenv uboot_name BOOT.bin
setenv uboot_addr 0x0
setenv uboot_size 0x1C0000
setenv uboot_env_addr 0x1C0000
setenv uboot_env_size 0x40000
setenv fpga_name download.bit.gz
setenv fpga_addr 0x200000
setenv fpga_size 0x600000
setenv fpga_unzip_addr 0x18000000
setenv fpga_unzip_size 0x1A000000
setenv image_name image.ub
setenv image_addr 0x800000
setenv image_size 0x1000000
setenv apps_name apps.jffs2
setenv apps_addr 0x1800000
setenv apps_size 0x800000
setenv loadaddr 0x12000000
setenv update_uboot 'sf probe 0 && mw.b $loadaddr 0xff $uboot_size && tftpboot $loadaddr $uboot_name && sf erase $uboot_addr $uboot_size && sf write $loadaddr $uboot_addr $uboot_size'
setenv update_fpga 'sf probe 0 && mw.b $loadaddr 0xff $fpga_size && tftpboot $loadaddr $fpga_name && sf erase $fpga_addr $fpga_size && sf write $loadaddr $fpga_addr $fpga_size'
setenv update_image 'sf probe 0 && mw.b $loadaddr 0xff $image_size && tftpboot $loadaddr $image_name && sf erase $image_addr $image_size && sf write $loadaddr $image_addr $image_size'
setenv update_apps 'sf probe 0 && mw.b $loadaddr 0xff $apps_size && tftpboot $loadaddr $apps_name && sf erase $apps_addr $apps_size && sf write $loadaddr $apps_addr $apps_size'
setenv bootargs 'mem=1024M earlycon console=ttyPS1,115200 clk_ignore_unused root=/dev/ram0 rw mtdparts=spi0.0:2M(uboot),14M(fpga),14M(image),2M(apps)'
setenv load_fpga 'sf probe 0 && sf read $loadaddr $fpga_addr $fpga_size && unzip $loadaddr $fpga_unzip_addr $fpga_unzip_size && fpga loadb 0 $fpga_unzip_addr $fpga_unzip_size'
setenv netphy_reset 'gpio set 73 && gpio clear 73'
setenv bootcmd 'run load_fpga && sf read $loadaddr $image_addr $image_size && bootm $loadaddr'
savee
2. nor flash空间分布:
| 2M boot | 6M bit | 16M image | 8M apps
3. 升级方式,电脑端打开tftp32
升级BOOT,进入uboot,输入:run update_uboot
升级FPGA,进入uboot,输入:run update_fpga
升级内核,进入uboot,输入:run update_image
升级应用,进入uboot,输入:run update_apps
4. 后续都采用mkimage -f xxx.its image.ub方式打包好kernel+dtb+rootfs,应用单独放到apps分区内。