绪论
本文将以操作指南的形式教大家如何烧录ACZ702开发板的出厂固件。
补充
如果用户只是给开发板进行过Qspi固化,覆盖掉了Qspi-Flash里的出厂程序,而并没有破坏过板载的eMMC里的文件,那么请直接跳到第三步,只需执行第三步,第三步完成后进入第五步启动系统。
如果用户并没有给开发板进行过Qspi固化,只破坏了eMMC里的文件,那么只需执行第一二四五步,无需执行第三步。
第一步:烧录固件的前期准备
1.打开网盘资料,找到以下路径,其中“win32diskimager-binary.rar”为必须下载的文件,其余的文件为不同型号与版本的开发板对应的镜像压缩文件,根据你购买的开发板型号与版本号,选择下载对应的镜像压缩文件即可,例如我购买的是ACZ702的7010型号的V2.0版本,就下载V2.0版本硬件镜像文件夹下的“ACZ702_7010_V2_0.zip”这个压缩包。
2.找出购买开发板时赠送的SD卡和读卡器,将SD卡插到读卡器上,再将读卡器插到电脑上,可以看到电脑上显示了一个空白U盘“F盘”
第二步:将镜像烧录进SD卡中
1.解压“win32diskimager-binary.rar”和刚刚下载的对应版本的镜像文件“ACZ702_XXXX.zip”,并将它放在一个不含中文和特殊字符的路径下,进入win32diskimager-binary/win32diskimager-binary下,双击Win32diskimager.exe运行烧录软件。
2.在软件界面选择你解压之后的ACZ702_XXXX.img镜像文件,右边的Device选则你插入的读卡器的盘符,租后点击Write,在弹出的弹窗选择确定,等待烧录完成即可。
3.烧录完成后弹出读卡器,至此我们就拥有了一张带有ACZ702出厂镜像的SD启动卡了,将这张卡直接插到开发板的卡槽,然后先将开发板的启动模式切换成SD卡启动,然后再给开发板上电启动,就可以使用SD卡启动Linux系统了。如果用户只是想启动开发板的Linux系统,而不需要对开发板进行固化,到这一步就可以停止了。
第三步:固化Qspi-Flash里的启动固件
这一步只针对那些进行过Qspi固化导致里面的启动文件被覆盖的用户,如果你的Qspi里的启动固件是完好的,可以跳过这步,直接进入第四步。
1.根据自己的开发板版本(版本号见开发板右侧丝印,目前有V1.3和V2.0版本)下载本文末尾的BOOT.zip附件,解压后放在一个英文路径,然后打开任意一个Vivado工程的SDK工程,点击Program Flash Memory图标
2.在弹出的窗口中分别点击Image Files和FSBL Files右侧的Browse,添加刚刚下载的BOOT.BIN文件和zynq_fsbl.elf文件
3.将开发板调整为Jtag模式,然后用type-c数据线将开发板的调试接口连接到电脑,按一下右下角的“Reset”按键将开发板复位
4.点击Program,将文件烧写到Qspi芯片中
5.烧写中
6.烧写完成
第四步:烧写eMMC
1.把SD卡放在读卡器里面,插在任意一个USB口,使用跳线帽切换到HOST模式,启动模式设置为qspi启动。
2.打开开发板电源。在u-boot的倒计时界面按任意键停止系统自启动,在当前界面输入以下命令:(直接复制全部代码,在终端界面单击鼠标滚轮,粘贴即可),然后按下回车键
env default -a
setenv bitstream_load_address 0x100000
setenv bitstream_image system.bit
setenv bitstream_size 0x300000
setenv kernel_image zImage
setenv devicetree_image system.dtb
setenv bootargs 'console=ttyPS0,115200 earlyprintk root=/dev/sda2 rw rootwait'
setenv bootcmd 'run usbboot || run distro_bootcmd'
setenv usbboot 'if usb start; then run uenvboot; echo Copying Linux from USB to RAM... && load usb 0 ${bitstream_load_address} ${bitstream_image} && fpga loadb 0 ${bitstream_load_address} ${bitstream_size} && load usb 0 ${kernel_load_address} ${kernel_image} && load usb 0 ${devicetree_load_address} ${devicetree_image} && bootz ${kernel_load_address} - ${devicetree_load_address}; fi'
saveenv
boot
3.单击鼠标滚轮粘贴后会出现以下界面,点击ok即可
4.然后会进入启动界面,最后linux系统启动完成,显示如下:
5.在这个界面输入以下命令
./burn_eMMC.sh
如果让你输入密码,直接输入123即可,加密码是为了防止某些用户在正常使用时误操作输入了烧写命令,导致eMMC或SD卡被格式化。
6.上图表示烧写完成,此时可以输入以下命令关机
poweroff
7.关机以后,我们拔下读卡器
第五步:进入烧写好的系统
1.按下右下角写着“Reset”的系统复位按键,可以重新启动系统,在u-boot的倒计时界面按任意键停止系统自启动,在当前界面输入以下命令:(直接复制全部代码,在终端界面单击鼠标滚轮,粘贴即可),然后按下回车键
env default -a
setenv bitstream_load_address 0x100000
setenv bitstream_image system.bit
setenv bitstream_size 0x300000
setenv kernel_image zImage
setenv devicetree_image system.dtb
setenv bootargs 'console=ttyPS0,115200 earlyprintk root=/dev/mmcblk0p2 rw rootwait'
setenv bootcmd 'run sdboot || run distro_bootcmd'
setenv sdboot 'if mmcinfo; then run uenvboot; echo Copying Linux from SD to RAM... && fatload mmc 0 ${bitstream_load_address} ${bitstream_image} && fpga loadb 0 ${bitstream_load_address} ${bitstream_size} && fatload mmc 0 ${kernel_load_address} ${kernel_image} && fatload mmc 0 ${devicetree_load_address} ${devicetree_image} && bootz ${kernel_load_address} - ${devicetree_load_address}; fi'
saveenv
boot
2.下图表示系统启动成功,也证明我们的eMMC烧写完成!
附件
(BOOT_V2_0已于20230414更新)