ZYNQ芯片+Linux系統(tǒng)搭建完成后,希望通過QSPI-Flash的方式來進行程序加載餐弱。
QSPI-Flash啟動則需要燒錄以下文件:
BOOT.bin : fsbl.elf + uboot.elf
uImage : linux內(nèi)核
zynq_board.dtb : zynq平臺的設(shè)備樹
uramdisk.image.gz : 文件系統(tǒng)
design.bit : FPGA程序比特流文件(注意:在第二種燒錄方法中需要使用design.bin文件)
準(zhǔn)備完成之后宴霸,將這些文件燒錄到QSPI Flash中有兩種方法:
1、以上5中文件在SDK中直接制作成一個BOOT.bin膏蚓,通過JTAG直接燒錄到Flash中瓢谢。
缺點:一旦程序需要更新,尤其是其中一種程序需要更新驮瞧,都要一起重新生成bin文件,繁瑣耗時论笔。
2采郎、通過SDK引導(dǎo)啟動UBOOT,然后通過UBOOT中的tftp和sf命令將以上5個文件分區(qū)燒錄到Flash中狂魔。
本文主要記錄如何通過SDK來引導(dǎo) UBOOT蒜埋,后續(xù)章節(jié)將會詳細介紹Flash如何分區(qū)且如何通過tftp和sf命令進行燒錄。
首先將VIVADO生成的bit文件導(dǎo)入到SDK中如下圖所示
啟動SDK后最楷,在SDK中啟動XMD控制中心
然后將開發(fā)平臺串口接入PC整份,因為在SDK中引導(dǎo)uboot后待错,在uboot啟動過程中將會把打印信息通過串口輸出。
完成以上操作之后皂林,在XMD控制中心輸入一下命令:
connect arm hw
cd D:/project_1/project_1.sdk/Top_hw_platform_0(根據(jù)自己生成的文件目錄)
fpga -f fpga.bit(**根據(jù)自己實際情況朗鸠,如果你的串口使用了EMIO則必須要首先啟動FPGA程序,否則后續(xù)無法進行串口打印**)
source ps7_init.tcl
ps7_init
dow u-boot.elf
con
之后可以看到uboot開始啟動础倍,并在串口進行打印烛占。
調(diào)試中的問題記錄:
1、通過第2中方法將程序燒錄到flash中需要注意fpga程序需要使用bin文件沟启。
2忆家、出現(xiàn)過串口不打印的現(xiàn)象是由于使用EMIO則必須要在xmd控制中心加載fpga程序
3、出現(xiàn)過網(wǎng)口不通的現(xiàn)象是由于zynq的硬件配置時沒有將網(wǎng)絡(luò)的相關(guān)管腳全部勾選德迹。
4芽卿、在ps_init過程中出現(xiàn)MMU section translation fault 主要是由于自己已經(jīng)燒錄的linux內(nèi)核已經(jīng)啟動,應(yīng)該將原來燒錄的停在uboot階段即可胳搞。