玩轉(zhuǎn)Zynq連載28——[ex50] 第一個(gè)Zynq系統(tǒng)工程“Hello Zynq” 更多資料共享 騰訊微云鏈接:https://share.weiyun.com/5s6bA0s 百度網(wǎng)盤鏈接:https://pan.baidu.com/s/1XTQtP5LZAedkCwQtllAEyw 提取碼:ld9c ![]() 騰訊微云鏈接:https://share.weiyun.com/5s6bA0s 百度網(wǎng)盤鏈接:https://pan.baidu.com/s/1XTQtP5LZAedkCwQtllAEyw 提取碼:ld9c 如圖所示,Zynq系統(tǒng)的PS部分有豐富的外設(shè)接口,常見(jiàn)的USB、UART、SPI、I2C、SDIO、CAN、GPIO、以太網(wǎng),一應(yīng)俱全,能夠滿足大多數(shù)的嵌入式應(yīng)用需求。這么強(qiáng)大的外設(shè)系統(tǒng),是不是有些迫不及待了,不著急,萬(wàn)丈高樓平地起,我們要從最簡(jiǎn)單的流程跑起,帶大家先從工具層面玩轉(zhuǎn)Zynq,再深入其中。
![]() 本實(shí)例,我們要搭建第一個(gè)Zynq系統(tǒng)工程,并且在這個(gè)Zynq系統(tǒng)的Cortex A9上在線跑一個(gè)通過(guò)UART打印“Hello Zynq!”的軟件程序。當(dāng)然了,重點(diǎn)不是Hello Zynq,而是如何新建Zynq系統(tǒng)模塊、配置PS的參數(shù)、導(dǎo)出硬件、新建軟件工程并且在線板級(jí)運(yùn)行起來(lái)。流程很重要,大家在開(kāi)始的時(shí)候總要先走一遍流程了解開(kāi)發(fā)的全貌,然后再細(xì)細(xì)把玩,逐個(gè)精通。 新建文件夾zstar_ex50,注意它的整個(gè)存放路徑中不要有中文、符號(hào)或空格(只能是數(shù)字和字母)。 打開(kāi)Vivado,參考《玩轉(zhuǎn)Zynq-工具篇:新建Vivado工程.pdf》新建一個(gè)Vivado工程。 在IP Integrator(IP集成器)下點(diǎn)擊Create Block Design(創(chuàng)建新的設(shè)計(jì)模塊)。
![]() 如圖所示,在彈出的Create Block Design窗口中,Design name后面輸入創(chuàng)建的模塊名稱(這里命名為zstar_zynq_ps),后面的Directory即文件存放路徑使用默認(rèn),Specify source set即指定文件的子集也使用默認(rèn)。
![]() 此時(shí),在Vivado的主視圖中,出現(xiàn)了如圖所示的Block Design界面。在Diagram中,點(diǎn)擊中央的小加號(hào),準(zhǔn)備添加zynq的處理器IP核。
![]() 如圖所示,在彈出IP列表的Search后面,我們輸入關(guān)鍵詞zynq,隨后篩選出唯一的ZYNQ7 Processing System選項(xiàng),點(diǎn)擊它。
![]() 此時(shí),Diagram界面中央出現(xiàn)了一個(gè)名為processing_system7_0的模塊,可以雙擊這個(gè)模塊,將彈出該模塊的配置頁(yè)面。
![]() Zynq系統(tǒng)配置頁(yè)面如圖所示。
![]() 點(diǎn)擊Presets按鈕,彈出菜單如圖,接著點(diǎn)擊Apply Configuration。
![]() 定位到當(dāng)前工程路徑下,找到zstar_ex50.tcl腳本,選中它,然后點(diǎn)擊OK應(yīng)用該tcl腳本的設(shè)定。這不操作的意義在于,將筆者已經(jīng)配置好的ZYNQ7 Processing System參數(shù)整個(gè)應(yīng)用到當(dāng)前新建工程的系統(tǒng)中。下面我們會(huì)看看都有哪些特殊的需要注意的配置,這些配置通常是和我們所使用的板級(jí)硬件電路設(shè)計(jì)相關(guān)的。
![]() 如圖,設(shè)置正在應(yīng)用生效中。
![]() 完成配置加載后,Zynq系統(tǒng)的當(dāng)前配置就能夠用于我們后續(xù)的軟件實(shí)例。如圖所示,在Peripheral I/O Pins選項(xiàng)卡中,UART 1被勾選上了,它對(duì)應(yīng)的MIO48和MIO49列是高亮的,表示UART 1所使用的引腳是MIO48和MIO49。點(diǎn)擊OK完成設(shè)置。
![]() 回到Diagram中,可以看到ZYNQ模塊的接口發(fā)生了變化,現(xiàn)在只有FIXED_IO是可以引出的,實(shí)際上我們后面的實(shí)例中也不使用這個(gè)引出的FIXED_IO。點(diǎn)擊箭頭所指的Run Block Automation按鈕。
![]() 彈出圖示的對(duì)話框,使用默認(rèn)設(shè)置,點(diǎn)擊OK就可以。
![]() 這時(shí)我們看到,FIXED_IO果然被引出了。
![]() 在Sources頁(yè)面中,我們可以看到Design Sources下面,我們剛剛創(chuàng)建的系統(tǒng)模塊zstar_zynq_ps。
![]() 點(diǎn)擊選中zstar_zynq_ps模塊,單擊右鍵,彈出菜單中點(diǎn)擊Generate Output Products,使得該系統(tǒng)輸出生效。
![]() 彈出下面的對(duì)話框,點(diǎn)擊Generate。 zstar_zynq_ps模塊目前還不是當(dāng)前工程的頂層模塊,必須再次選中它,然后在右鍵菜單中點(diǎn)擊Create HDL Wrapper。
![]() 若彈出如下對(duì)話框,使用默認(rèn)設(shè)置,點(diǎn)擊OK繼續(xù)。
![]() 最后,在Flow Navigator的Program and Debug下,點(diǎn)擊Generate Bitstream編譯整個(gè)工程以生成可燒錄PL的bit文件。
![]() 參考文檔《玩轉(zhuǎn)Zynq-工具篇:導(dǎo)出PS硬件配置和新建SDK工程.pdf》。 在Zstar板子上,設(shè)置跳線帽P3為JTAG模式,即PIN2-3短接。 連接好串口線(USB線連接PC的USB端口和Zstar板的UART接口)和Xilinx下載線(下載器連接PC的USB端口和Zstar板的JTAG插座)。使用5V電源給板子供電。
![]() 確認(rèn)當(dāng)前設(shè)備管理器中識(shí)別到的COM口號(hào),配置好打開(kāi)PuTTY串口調(diào)試界面。
![]() 接著參考《玩轉(zhuǎn)Zynq-工具篇:SDK在線運(yùn)行裸跑程序.pdf》將zstar.bit文件和Helloworld.elf文件燒錄到Zynq中運(yùn)行起來(lái)。
![]() SDK Log窗口中,也會(huì)打印輸出相應(yīng)的SDK工作信息。
![]() 回到PuTTY中,我們可以看到也已經(jīng)打印出了我們期盼已久的Hello World(不好意思,不是Hello Zynq,不過(guò)沒(méi)關(guān)系,Hello Zynq要你自己嘗試改C源碼再跑一遍就OK)。
![]() 恭喜你,完成的Zynq系統(tǒng)Cortex A9的運(yùn)行,裸跑了一個(gè)Hello World程序。 ![]() |