網(wǎng)站開發(fā)教育培訓(xùn)百度排名點(diǎn)擊器
? ? ? ? ?之前在Vivado2018.3通過QSPI方式固化程序時出現(xiàn)問題,顯示flash擦除成功,但最后總是不能寫入到flash中。
? ? ? ? 查資料發(fā)現(xiàn)從VIVADO 2017.3版本開始,Xilinx官方為了使Zynq-7000和Zynq UltraScale +實(shí)現(xiàn)流程相同,在QSPI FLASH使用上做了變化,即Zynq-7000編程flash需要“指定的fsbl”。因?yàn)樵赒SPI引導(dǎo)模式下啟動,則“指定的fsbl”將嘗試從flash加載分區(qū),從而導(dǎo)致flash編程的錯誤行為。導(dǎo)致不能下載flash或下載flash后不能啟動。
? ? ? ? ? ?總結(jié)一下,就是需要建兩個FSBL程序,也可以生成BOOT.BIT以后,修改當(dāng)前FSBL工程(本例程),一個用于生成BOOT.bin文件,一個用于加載,即Program flash。完整步驟如下:
(1)新建系統(tǒng)環(huán)境變量:我的電腦—屬性—高級系統(tǒng)設(shè)置—環(huán)境變量;之后重啟一下電腦。
??????? 變量名:XIL_CSE_ZYNQ_UBOOT_QSPI_FREQ_HZ
??????? 變量值:10000000
(2)在vivado界面PS端選中QSPI方式,其中single SS 4bit IO與Dual Quad SPI方式要根據(jù)板卡上幾顆QSPI flash以及位數(shù)選擇,這里選擇single SS 4bit IO;
(3)保存設(shè)計(jì),編譯生成bit文件;
(4)啟動SDK,注意要將bit文件選中。新建fsbl程序,不用修改,此程序用于生成BOOT.bin文件。
??????? 1)選擇你的代碼工程,右鍵選擇 create boot image
???????????????????????
??? ????2)彈出的窗口中可以看到生成的BIF文件路徑,BIF文件是生成BOOT文件的配置文件,bif文件和bin文件放在同一個根目錄下,并且再次確認(rèn)是否是最新生成的文件;
之后點(diǎn)擊Create Image,生成BOOT.bin文件。
當(dāng)看到有這兩文件時:說明已生成BOOT.bit文件
?(4)在不變的工程新建fsbl程序,先點(diǎn)擊 Clean project,在main.c主程序中找到“Read bootmode register”的位置,并添加代碼BootModeRegister = JTAG_MODE;再點(diǎn)擊Build ?project此處是為了將QSPI編程改為以JTAG模式啟動,為了解決bug,
?也可以在fsbl_debug.h文件中加上#define FSBL_DEBUG_INFO語句,這是為了能夠讓串口打印出 Bootloader 的信息,之后保存并編譯;
(5)QSPI flash固化
??????? 1)FPGA板卡模式開關(guān)切換到QSPI啟動模式;
??????? 2)點(diǎn)擊Xilinx—Program Flash,加載剛剛fsbl文件生成的BOOT.bin與fsbl_load文件生成的fsbl_load.elf,
其中Flash Type根據(jù)(2)中QSPI選中方式而定;
??????? 3)點(diǎn)擊Program,即可完成QSPI方式的程序固化。
重點(diǎn)+干貨來了:
??環(huán)境實(shí)驗(yàn):硬件板卡暫未有串口調(diào)試輸出。?
當(dāng)固化進(jìn)去以后,如果你發(fā)現(xiàn)PL已經(jīng)啟動,但是PS暫未啟動,那此時就需要修改這個選項(xiàng):把這兩個關(guān)閉。再重新固化以后,關(guān)機(jī)、重啟,發(fā)現(xiàn)PL和PS均能正常運(yùn)行。這就是妥妥的干貨。