# Mini-Howto for Xilinx Flash Download 當我們要將我們的設計燒錄到Xilinx的Zynq家族系列時,我們可以藉由Xilinx的SDK tool來完成。 ## Steps ### 1. 開啟Vivado IDE (此版本是使用Vivado 2018.2)。 ![](https://i.imgur.com/gmjrIOb.png) ### 2. 開啟專案。 ![](https://i.imgur.com/5OSruP8.png) ### 3. 專案開啟之後,如果您是第一次作完設計的implementation,並且成功產生了bitstream,那請使用Export-->Export Hardware。 ![](https://i.imgur.com/bFOCyUr.png) 然後記得勾選Include bitstream,讓bitstream可以被export到對應的SDK資料夾底下。 ![](https://i.imgur.com/btlcn44.png) ### 4. Launch SDK。 ![](https://i.imgur.com/dUx5sdz.png) ### 5. 按下 OK。 ![](https://i.imgur.com/Xo3wxC1.png) ### 6. 跳出SDK視窗。 ![](https://i.imgur.com/9CW1FWd.png) ### 7. 選擇File-->New-->Application Project ![](https://i.imgur.com/hqdetl9.png) ### 8. 產生一個Fast Stage Bootloader (FSBL)。 ![](https://i.imgur.com/fHBlukz.png) ![](https://i.imgur.com/dVyczsR.png) 成功產生後,將可以在左邊的Project Explorer看見fsbl application已經產生成功。 ![](https://i.imgur.com/bjbiQ6d.png) ### 9. 重複步驟 7.,這此選擇Hello World ![](https://i.imgur.com/k2PvoMS.png) 選擇Hello World是為了讓使用者程式可以直接有基本範例。 ![](https://i.imgur.com/TVShYIf.png) 為了讓user application可以永遠執行,我們可以把原本的printf ![](https://i.imgur.com/FhqI9X7.png) 改成一個無窮迴圈。 ![](https://i.imgur.com/yv40P8f.png) ### 10. 完成fsbl與user applicatoin後,就可以進行產生boot image。 ![](https://i.imgur.com/Qhqny6Y.png) 將Output BIF file path指定到你想要儲存的資料夾下面。 並且將檔案名稱命名成你想要的名字。 Output format選MCS檔案。Output path也指定到想要儲存的資料夾下,檔名如果不想要使用預設的Output.mcs 也可以改成有意義的名稱。 ![](https://i.imgur.com/uWlHXk9.png) ### 11. 加入boot image的partition 1. 先將fsbl加入bootloader ![](https://i.imgur.com/FpVi5Ke.png) ![](https://i.imgur.com/gvsEsQr.png) 2. 再來將硬體.bit檔加入 ![](https://i.imgur.com/9Di5Obn.png) ![](https://i.imgur.com/cxDlKqs.png) 3. 最後將user application加到最後的partition。 ![](https://i.imgur.com/H4Hh9RG.png) 然後create image。 ![](https://i.imgur.com/85ncpJH.png) ### 12. 成功創建boot image之後,我們還需要將boot image下載到FPGA的FLASH上面, 如此才完成整個程式的燒錄流程。 如果你使用vivado 2016.2的版本,直接執行底下script版本即可。 ```script= /opt/Xilinx/SDK/2016.2/bin/program_flash -f xillybus128.mcs -offset 0 -flash_type qspi_dual_parallel ``` 但如果使用vivado 2018.2的版本,要指定fsbl的檔案所在,否則會發生如下錯誤。 猜測應該是tool版本的所造成。 ![](https://i.imgur.com/LC3GXKj.png) 本範例是使用vivado 2018.2,因此我們使用底下script。 ```script= /opt/Xilinx/SDK/2018.2/bin/program_flash -f xillybus128.mcs -offset 0 -flash_type qspi_dual_parallel -fsbl fsbl.elf ``` 下載完成之後應該會有Successful的訊息。 ![](https://i.imgur.com/qNE9Nwf.png)