<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【ZYNQ Ultrascale+ MPSOC FPGA教程】第十九章 Hello World(下)

FPGA技術專欄 ? 來源:芯驛電子科技 ? 作者:芯驛電子科技 ? 2021-01-26 09:54 ? 次閱讀

原創聲明:

本原創教程由芯驛電子科技(上海)有限公司(ALINX)創作,版權歸本公司所有,如需轉載,需授權并注明出處。

適用于板卡型號:

AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG

此文基于第十八章內容進行軟件開發

【ZYNQ Ultrascale+ MPSOC FPGA教程】第十八章Hello World(上)

ALINX:【ZYNQ Ultrascale+ MPSOC FPGA教程】第十八章Hello World(上)zhuanlan.zhihu.com

軟件工程師工作內容

Vitis工程目錄為“ps_hello/vitis”

以下為軟件工程師負責內容。

1.Vitis調試;

2.創建Application工程;

1)新建一個文件夾,將vivado導出的xx.xsa文件拷貝進來;

2)Vitis是獨立的軟件,可以雙擊Vitis軟件打開;

也可以通過在Vivado軟件中選擇ToolsLaunch Vitis打開Vitis軟件

o4YBAGAKML2AW8SOAABu2rrtFg0463.jpg

選擇之前新建的文件夾,點擊”Launch”

pIYBAGAKML6AfGPSAAA6KdBSG2g316.jpg

3)啟動Vitis之后界面如下,點擊“Create Application Project”,這個選項會生成APP工程以及Platfrom工程,Platform工程類似于以前版本的hardware platform,包含了硬件支持的相關文件以及BSP。

o4YBAGAKML6AG2NxAABcNxXmbmk962.jpg

4)第一頁為介紹頁,直接跳過,點擊Next

pIYBAGAKML-AfC1LAACNEbLTRVQ133.jpg

5)選擇“Create a new platform from hardware(XSA)”,選擇“Browse”

o4YBAGAKML-AU1oaAABoDU7hcEs082.jpg

選擇之前生成的xsa,點擊打開

pIYBAGAKMMCAWzPGAACL5xYg66I850.jpg

6)最下面的Generate boot components選項,如果勾選上,軟件會自動生成fsbl工程,我們一般選擇默認勾選上。

o4YBAGAKMMCAIdCuAABzLYgmc9Q034.jpg

7)填入APP工程名稱,在方框處點擊可以選擇對應的處理器,我們這里保持默認

pIYBAGAKMMGABj4OAACEnRF_Wik917.jpg

8)在這個界面可以修改Domain名稱,選擇操作系統,ARM架構等,這里保持默認,操作系統選擇standalone,也就是裸機。

o4YBAGAKMMKACcHPAABoUmRoAUY517.jpg

9)選擇”Hellow World”模板,點擊“Finish”完成

pIYBAGAKMMKAa4alAABpmmKym8A211.jpg

10)完成之后可以看到生成了兩個工程,一個是硬件平臺工程,即之前所說的Platfrom工程,一個是APP工程

o4YBAGAKMMKAcFGDAACZVckSmBA294.jpg

11)展開Platform工程后可以看到里面包含有BSP工程,以及zynq_fsbl工程(此工程即選擇Generate boot components之后的結果),雙擊platform.spr即可看到Platform對應生成的BSP工程,可以在這里對BSP進行配置。軟件開發人員比較清楚,BSP也就是Board Support Package板級支持包的意思,里面包含了開發所需要的驅動文件,用于應用程序開發??梢钥吹絇latform下有多個BSP,這是跟以往的SDK軟件不一樣的,其中zynqmp_fsbl即是fsbl的BSP,domain_psu_cortexa53_0即是APP工程的BSP。也可以在Platform里添加BSP,在以后的例程中再講。

pIYBAGAKMMOAAE5pAACAKyOQmho370.jpg

12)點開BSP,即可看到工程帶有的外設驅動,其中Documentation是xilinx提供的驅動的說明文檔,Import Examples是xilinx提供的example工程,加快學習。

o4YBAGAKMMOALSlAAACelel-B0E190.jpg

13)選中APP工程,右鍵Build Project,或者點擊菜單欄的“錘子”按鍵,進行工程編譯

pIYBAGAKMMSAHXC3AACcwxTzHDY282.jpg

14)可以在Console看到編譯過程

o4YBAGAKMMSAfgEiAAAmVARZH3s753.jpg

編譯結束,生成elf文件

pIYBAGAKMMWAemFlAAA8iQCIGqA478.jpg

15)連接JTAG線到開發板、UARTUSB線到PC

16)使用PuTTY軟件做為串口終端調試工具,PuTTY是一個免安裝的小軟件

o4YBAGAKMMWASZFjAACrz30OUvw109.jpg

17)選擇Serial,Serial line填寫COM3,Speed填寫115200,COM3串口號根據設備管理器里顯示的填寫,點擊“Open”

pIYBAGAKMMWAZ5TWAACWkEtU9ow057.jpg

18)在上電之前最好將開發板的啟動模式設置到JTAG模式,拔到”ON”的位置

o4YBAGAKMMaALIuRAACpOGfRvIk453.jpg

19)給開發板上電,準備運行程序,開發板出廠時帶有程序,這里可以把運行模式選擇JTAG模式,然后重新上電。選擇“hello”,右鍵,可以看到很多選項,本實驗要用到這里的“Run as”,就是把程序運行起來,“Run as”里又有很對選項,選擇第一個“Launch on Hardware(Single Application Debug)”,使用系統調試,直接運行程序。

pIYBAGAKMMeAfIWCAACtPf6fvkU612.jpg

20)這個時候觀察串口軟件,即可以看到輸出”Hello World”

o4YBAGAKMMeAMXo8AAAOqdVwwEs992.jpg

21)為了保證系統的可靠調試,最好是右鍵“Run As -> Run Configuration...”

pIYBAGAKMMeAFOqDAAC1Z13DeGs652.jpg

22)我們可以看一下里面的配置,其中Reset entire system是默認選中的,這是跟以前的SDK軟件不同的。如果系統中還有PL設計,還必須選擇“Program FPGA”。

o4YBAGAKMMiAWKP-AADhz9j9468436.jpg

23)除了“Run As”,還可以“Debug As”,這樣可以設置斷點,單步運行

pIYBAGAKMMmAD7eVAACi-qRo4-4416.jpg

24)進入Debug模式

o4YBAGAKMMmARUefAADNWa5knI4744.jpg

25)和其他C語言開發IDE一樣,可以逐步運行、設置斷點等

pIYBAGAKMMqAflRFAAC3yKJerX0983.jpg

26)右上角可以切換IDE模式

o4YBAGAKMMqAJW41AADlKqdCfyw728.jpg

3. 固化程序

普通的FPGA一般是可以從flash啟動,或者被動加載,ZYNQ的啟動是由ARM主導的,包括FPGA程序的加載,ZYNQ MPSoC啟動一般為三個步驟,在UG1085中也有介紹:

Pre-configuration satge :預加載階段由PMU控制,執行PMU ROM中的代碼設置系統。PMU處理所有的復位和喚醒過程。

Configuration stage : 接下來進入最重要的一步,當BootRom(CSU ROM代碼的一部分)搬運FSBL到OCM后,處理器開始執行FSBL代碼,FSBL主要有以下幾個作用:

  • 初始化PS端配置,MIO,PLL,DDR,QSPI,SD等

  • 如果有PL端程序,加載PL端bitstream

  • 搬運用戶程序到DDR,并跳轉執行

Post-configuration stage : FSBL開始執行后,CSU ROM代碼進入post-configuration階段,負責起系統干預響應,CSU為驗證文件正確性、通過PCAP加載PL、存儲管理安全密鑰、解密等提供持續的硬件支持。

3.1 生成FSBL

FSBL是一個二級引導程序,完成MIO的分配、時鐘、PLL、DDR控制器初始化、SD、QSPI控制器初始化,通過啟動模式查找bitstream配置FPGA,然后搜索用戶程序加載到DDR,最后交接給應用程序執行。

1) 由于在新建時選擇了Generate boot components選項,所以Platform已經導入了fsbl的工程,并生成了相應的elf文件。

pIYBAGAKMMuAQSjiAABB9oRSVwU193.jpg

2) 修改調試宏定義FSBL_DEBUG_INFO_VAL,可以在啟動輸出FSBL的一些狀態信息,有利于調試,但是會導致啟動時間變長。保存文件??梢钥匆幌耭sbl里包含了很多外設的文件,包括psu_init.c,qspi,sd等,大家可以再仔細讀讀代碼。當然這個fsbl模板也是可以修改的,至于怎么修改根據自己的需求來做。

o4YBAGAKMMuAWwSKAACIREUrsmY323.jpg

3) 重新Build Project

pIYBAGAKMMyAS5_SAABZci2Nx0o641.jpg

4) 接下來我們可以點擊APP工程的system,右鍵選擇Build project

o4YBAGAKMM2AeBxnAABjMcUtBtw334.jpg

5) 這個時候就會多出一個Debug文件夾,生成了對應的BOOT.BIN

pIYBAGAKMM2AXFC-AAA-X5hoe6Y174.jpg

6) 還有一種方法就是,點擊APP工程的system右鍵選擇Creat Boot Image,彈出的窗口中可以看到生成的BIF文件路徑,BIF文件是生成BOOT文件的配置文件,還有生成的BOOT.bin文件路徑,BOOT.bin文件是我們需要的啟動文件,可以放到SD卡啟動,也可以燒寫到QSPI Flash。

o4YBAGAKMM6AHNUqAABvt-9iJRg659.jpgo4YBAGAKMM6AcJsYAACaiIyITSw908.jpg

7) 在Boot image partitions列表中有要合成的文件,第一個文件一定是bootloader文件,就是上面生成的fsbl.elf文件,第二個文件是FPGA配置文件bitstream,在本實驗中由于沒有FPGA的bitstream,不需要添加,第三個是應用程序,在本實驗中為hello.elf,由于沒有bitstream,在本實驗中只添加bootloader和應用程序。點擊Create Image生成。

pIYBAGAKMM-AMlZyAACZn8Ch21M883.jpg

8) 在生成的目錄下可以找到BOOT.bin文件

o4YBAGAKMNCAFPRdAAArO43zbSA740.jpg

3.2 SD卡啟動測試

1) 格式化SD卡,只能格式化為FAT32格式,其他格式無法啟動

pIYBAGAKMNCAcDncAABFYi62cmY826.jpg

2) 放入BOOT.bin文件,放在根目錄

o4YBAGAKMNCAC1PWAAAvavcxpbs909.jpg

3) SD卡插入開發板的SD卡插槽

4) 啟動模式調整為SD卡啟動

pIYBAGAKMNGALxHWAADJg42vpis292.jpg

5) 打開串口軟件,上電啟動,即可看到打印信息,紅色框為FSBL啟動信息,黃色箭頭部分為執行的應用程序helloworld

o4YBAGAKMNKAFxHQAABN6QBItOM203.jpg

3.3 QSPI啟動測試

1) 在Vitis菜單Xilinx -> Program Flash

pIYBAGAKMNKANd5WAABbM01BldU547.jpg

2) Hardware Platform選擇最新的,Image FIle文件選擇要燒寫的BOOT.bin,FSBL file選擇fsbl.elf。選擇Verify after flash,在燒寫完成后校驗flash。

o4YBAGAKMNKAUxpiAABwAKfAm4I719.jpg

3) 點擊Program等待燒寫完成

pIYBAGAKMNOAIphBAABCBnwHYRA787.jpg

4) 設置啟動模式為QSPI,再次啟動,可以在串口軟件里看到與SD同樣的啟動效果。

o4YBAGAKMNOAPjSDAAC4Pe86Sf8561.jpgpIYBAGAKMNSAZim-AABV4p4I_Pw489.jpg

3.4 Vivado下燒寫QSPI

1) 在HARDWARE MANGER下選擇器件,右鍵Add Configuration Memory Device

o4YBAGAKMNSATjq7AABg4J_b0B0397.jpg

2) 選擇嘗試Micron,類型選擇qspi,寬度選擇x4-single,Density選擇256,這時候出現wt25qu256,選擇紅框型號。

pIYBAGAKMNWARz8FAABnnlelJoY309.jpg

3) 右鍵選擇編程文件

o4YBAGAKMNWAVCS9AABorem8QSo629.jpg

4) 選擇要燒寫的文件和fsbl文件,就可以燒寫了,如果燒寫時不是JTAG啟動模式,軟件會給出一個警告,所以建議燒寫QSPI的時候設置到JTAG啟動模式

pIYBAGAKMNaASwQ1AABimcsSyXg034.jpg

3.5 使用批處理文件快速燒寫QSPI

1) 新建一個program_qspi.txt文本文件,擴展名改為bat,內容填寫如下,

E:\XilinxVitis\Vitis\2020.1\bin\program_flash 為我們工具路徑,按照安裝路徑適當修改,-f 為要燒寫的文件,-fsbl為要燒寫使用的fsbl文件,-verify為校驗選項。

callE:\XilinxVitis\Vitis\2020.1\bin\program_flash -f BOOT.bin -offset 0 -flash_type qspi-x4-single -fsbl fsbl.elf -verifypause

2) 把要燒錄的BOOT.bin、fsbl、bat文件放在一起

o4YBAGAKMNeAWjD2AAAPHE1SWgc539.jpg

3) 插上JTAG線后上電,雙擊bat文件即可燒寫flash。

pIYBAGAKMNiAcaifAABBaP7zAws869.jpg

4. 常見問題

4.1 僅有PL端邏輯的固化

有很多人會問,如果只有PL端的邏輯,不需要PS端該怎么固化程序呢?不帶ARM的FPGA固化是沒問題的,但是對于ZYNQ來說,必須要有PS端的配合才能固化程序。那么對于前面的”PL的“Hello World”LED實驗”該怎么固化程序呢?

1) 根據本章的PS端添加ZYNQ核并配置,最簡單的方法就是在本章工程的基礎上添加LED實驗的verilog源文件,并進行例化,組成一個系統,并需要生成bitstream。

o4YBAGAKMNiAHjvQAABM4GcHyXI994.jpgpIYBAGAKMNmAZVoiAAAKhgFJOxY116.jpg

2) 生成bitstream之后,導出硬件,選擇include bitstream

o4YBAGAKMNmABcCMAAA2Ax8P7Ck811.jpg

3) 在生成BOOT.BIN時,還是需要一個app工程hello,僅僅是為了生成BOOT.BIN,默認情況下在system右鍵Build Project,即可生成包含bitstream的BOOT.BIN。

pIYBAGAKMNqAZEelAAB8h2EVx3U497.jpg

打開Create Boot Image界面可以看到,Boot Image Partitions的文件順序是fsbl、bitstream、app,注意順序不要顛倒,利用這樣生成的BOOT.BIN就可以按照前面的啟動方式測試啟動了

o4YBAGAKMNuAfbGmAACwXel454U839.jpg

在course_s2文件夾,我們提供了一個名為led_qspi_sd的工程,大家可以參考。

5. 使用技巧分享

在頻繁的修改源文件,并進行編譯的時候,最好選擇APP工程進行Build Project,這種情況下只會生成elf文件。

pIYBAGAKMNyAIYLqAABxWtoKRO8893.jpg

如果想生成BOOT.BIN文件,可以選擇system進行編譯,這種情況既會生成elf也會生成BOOT.BIN,筆者最開始用的時候就吃過虧,每次編譯都是選擇system,結果每次都要等待生成BOOT.BIN,浪費時間,大家可以注意一下。

o4YBAGAKMNyAOhkpAABqAmvQ98U889.jpg

6. 本章小結

本章從FPGA工程師和軟件工程師兩者角度出發,介紹了ZYNQ開發的經典流程,FPGA工程師的主要工作是搭建好硬件平臺,提供硬件描述文件hdf給軟件工程師,軟件工程師在此基礎上開發應用程序。本章是一個簡單的例子介紹了FPGA和軟件工程師協同工作,后續還會牽涉到PS與PL之間的聯合調試,較為復雜,也是ZYNQ開發的核心部分。

同時也介紹了FSBL,啟動文件的制作,SD卡啟動方式,QSPI下載及啟動方式,Vivado下載BOOT.BIN方式,本章沒有FPGA加載文件,后面的應用中會再介紹添加FPGA加載文件制作BOOT.BIN。

后續的工程都會以本章節的配置為準,后面不再介紹ZYNQ的基本配置。

千里之行,始于足下,相信經過本章的學習,大家對ZYNQ開發有了基本概念,高樓穩不穩,要看地基打的牢不牢,雖然本章較為簡單,但也有很多知識點待諸位慢慢消化。加油?。?!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1608

    文章

    21358

    瀏覽量

    594369
  • ARM
    ARM
    +關注

    關注

    134

    文章

    8708

    瀏覽量

    362609
  • 工程師
    +關注

    關注

    59

    文章

    1553

    瀏覽量

    67588
  • Zynq
    +關注

    關注

    9

    文章

    600

    瀏覽量

    46757
  • MPSoC
    +關注

    關注

    0

    文章

    194

    瀏覽量

    24143
收藏 人收藏

    評論

    相關推薦

    我的hello world(基于米爾MPSOC開發板)

    ``XILINX 新一代 SOC,Zynq UltraScale+ MPSOC 系列性能強悍無比,相比ZYNQ 7000系列每瓦性能提升5倍,作為一名電子發燒友,都想體驗一把這高性能的
    發表于 08-07 15:05

    如何利用ZYNQ MPSoC玩DOOM?

    賽靈思和 DornerWorks 的系統軟件團隊在賽靈思的 Zynq? Ultrascale+? MPSoC 上啟動 Xen Project 管理程序時,我們發現可通過運行當年叱詫一時的流行電子游戲
    發表于 10-09 06:21

    如何調試Zynq UltraScale+ MPSoC VCU DDR控制器

      如何調試Zynq UltraScale+ MPSoC VCU DDR控制器  Zynq UltraScale+
    發表于 01-07 16:02

    如何調試Zynq UltraScale+ MPSoC VCU DDR控制器

    如何調試 Zynq UltraScale+ MPSoC VCU DDR 控制器?
    發表于 01-22 06:29

    ZYNQ Ultrascale+ MPSOC FPGA教程

    ZYNQ Ultrascale+ MPSOC FPGA教程
    發表于 02-02 07:53

    閑話Zynq UltraScale+ MPSoC(連載4)

    作者:Hello,Panda Part 2 : Zynq UltraScale+ MPSoC啟動 熊貓君在這里討論啟動(Boot),主要是想聊它的啟動設備和啟動方式??纯磫釉O備是否廣
    發表于 02-08 08:31 ?375次閱讀
    閑話<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>(連載4)

    Zynq UltraScale+ MPSoC的發售消息

    Zynq?UltraScale+?MPSoC,現已開始發售。視頻向您重點介紹了Xilinx UltraScale +產品組合的第一位成員
    的頭像 發表于 11-27 06:47 ?3335次閱讀

    MPSOC開發板教程之HELLO WORLD

    ?,F在用米爾MPSOC開發板來一個hello world。MPSOC學習之HELLO WORLD
    發表于 08-02 11:43 ?371次閱讀
    <b class='flag-5'>MPSOC</b>開發板教程之<b class='flag-5'>HELLO</b> <b class='flag-5'>WORLD</b>

    米爾科技HELLO WORLD主板介紹

    XILINX 新一代 SOC,Zynq UltraScale+ MPSOC系列性能強悍無比,相比ZYNQ 7000系列每瓦性能提升5倍,作為一 名電子發燒友,都想體驗一把這高性能的
    的頭像 發表于 11-26 15:38 ?2132次閱讀
    米爾科技<b class='flag-5'>HELLO</b> <b class='flag-5'>WORLD</b>主板介紹

    ZYNQ Ultrascale+ MPSOC FPGA教程】第十九章Hello World(下)

    此文基于第十八章內容進行軟件開發
    發表于 01-26 09:44 ?14次下載
    【<b class='flag-5'>ZYNQ</b> <b class='flag-5'>Ultrascale+</b> <b class='flag-5'>MPSOC</b> <b class='flag-5'>FPGA</b>教程】<b class='flag-5'>第十九章</b><b class='flag-5'>Hello</b> <b class='flag-5'>World</b>(下)

    如何調試 Zynq UltraScale+ MPSoC VCU DDR 控制器?

    Zynq UltraScale+ MPSoC VCU DDR 控制器是一款專用 DDR 控制器,只支持在 Zynq UltraScale+
    發表于 02-23 06:00 ?15次下載
    如何調試 <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b> VCU DDR 控制器?

    米爾電子zynq ultrascale+ mpsoc底板外設資源清單分享

    米爾電子推出的國內首款zynq ultrascale+ mpsoc平臺核心板(及開發板):MYC-CZU3EG吸引了人工智能、工業控制、嵌入式視覺、ADAS、算法加速、云計算、有線/無線通信
    發表于 01-07 15:20 ?3次下載
    米爾電子<b class='flag-5'>zynq</b> <b class='flag-5'>ultrascale+</b> <b class='flag-5'>mpsoc</b>底板外設資源清單分享

    ZYNQ Ultrascale+ MPSoC系列FPGA芯片設計

    基于 Xilinx 公司ZYNQ Ultrascale+ MPSoC系列 FPGA 芯片設計,應用于工廠自動化、機器視覺、工業質檢等工業領域
    發表于 11-02 14:35 ?1253次閱讀

    Zynq UltraScale+ MPSoC中的隔離方法

    電子發燒友網站提供《Zynq UltraScale+ MPSoC中的隔離方法.pdf》資料免費下載
    發表于 09-13 17:11 ?1次下載
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>中的隔離方法

    Zynq UltraScale+ MPSoC的隔離設計示例

    電子發燒友網站提供《Zynq UltraScale+ MPSoC的隔離設計示例.pdf》資料免費下載
    發表于 09-13 11:28 ?2次下載
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>的隔離設計示例
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>