目錄
1. 工程搭建
平臺採用AX7Z100開發平臺。
1) 首先搭建好zynq框架,有一個完整的工程。
2)要固化程序必須使能 QSPI 或SD卡。 由於開發板上是由兩顆QSPI flash 組成8位的QSPI,因此這裏選擇Dual Quad SPI (8 bit ),選擇feedback 連接到MIO8 。
3) 添加 SD0 控制器,使用MIO40-45 ,使用 TF 卡接口
4) 保存設計,編譯生成 bit文件 ,再次導出硬件
2. 生成FSBL
FSBL是一個二級引導程序,完成MIO的分配、DDR控制器初始化、SD、QSPI控制器初始化,配置FPGA、然後加載用戶程序。
1) 啓動SDK。hw_platform選擇最新的那個。
2)新建一個名爲fsbl的APP,特別注意硬件平臺選擇最新的那個,可以把以前的都刪除了。
3) 模板選擇zynq fsbl
4) 添加調試宏定義FSBL_DEBUG_INFO,可以在啓動輸出FSBL的一些狀態信息,有利於調試,但會導致啓動時間變長。
5) SDK 默認會自動編譯,生成fsbl.elf文件
3. 創建BOOT文件
1)選擇fsbl工程,右鍵選擇 create boot image
2)彈出的窗口中可以看到生成的BIF文件路徑,BIF文件是生成BOOT文件的配置文件,bif文件和bin文件放在同一個根目錄下;還有生成BOOT.bin文件路徑,BOOT.bin文件是我們需要的啓動文件,可以放到SD卡啓動,也可以燒寫到QSPI flash 。(有次固化的時候,流程都正確的,但是固化代碼最後都提示失敗,後來換做加載MCS文件固化成功。分析原因可能是BIN文件比MSC文件小,可能一些東西被處理掉,對於複雜的工程來說,如果對應的FLASH SD 容量夠大,可以選擇MSC 文件加載)
3)在boot image partitions 列表中有要合成的文件,第一個文件一定是bootloader 文件,就是上面生成的fsbl.elf文件,第二個文件是FPGA配置文件,現在點擊ADD添加測試程序vdma_hdmi.elf
4) 點擊create image 生成
注意下面3個文件的路徑,不要更改,會出錯的。第一個就是FSBL 啓動文件,然後是PL 的bit,最後是PS 的ELF。
如果記不住上面的順序,可以到debug界面,也是先初始化系統(FSBL),program fpga (bit),run ps7 (elf)
5) 在生成的目錄下可以找到BOOT.bin文件, 或者BOOT.mcs文件
4. SD卡啓動測試
1)格式化SD卡,只能格式化爲FAT32格式,其他格式無法啓動
2) 放入BIN文件,在根目錄下
3)SD 卡插入開發板的SD卡插槽
4)啓動模式調整爲SD卡啓動
5.QSPI啓動測試
1)在SDK 菜單XILINX--program flash
2) hardware platform 選擇最新的,image file 文件選擇要燒寫的bin/msc,FSBL file選擇生成的fsbl.elf,flash type 根據硬件選擇,這裏選擇qspi_dual_parallel.
3) 點擊program 等待燒寫完成
4)設置啓動模式爲QSPI,再次啓動
6.在vivado 下燒寫QSPI
1)vivado 下 hardware manger 下選擇器件 ,右鍵add configuration memory device
2) 選擇flash型號
3)右鍵選擇編程文件
4) 選擇要燒寫的文件和fsbl文件,就可以燒寫了。如果燒寫時不是jtag啓動模式,軟件會給出一個警告,所以建議燒寫QSPI的時候設置到JTAG啓動模式