Zedboard(二)使用Vivado+SDK開發嵌入式應用程序——實例一
本次介紹用Vivado構建Zedboard開發板的硬件平臺+SDK開發應用程序(Zedboard裸機開發)
過程如下:
一、運行Vivado,建立新工程
指定好工程路徑,下一步,選擇RTL Project,勾選“Do not specify sources at this time”(先不添加源文件和引腳約束)
接下來選擇對應的開發板,勾選Board,選擇Zedboard XXXX
最後的界面顯示了新建工程的相關信息:
點擊finish完成。
二、添加處理器zynq-7000(IP)內核
點擊左側菜單欄Flow Navigator->IP Intergrstor->Create Block Design
填上名字,選好所在文件夾(其實就是下圖的Sources)
點擊開發界面中的Add IP的加號,通過輸入關鍵詞來搜索需要添加的IP核
選中IP核後,系統會以圖形界面的形式把IP核顯示出來:
點擊上圖淺綠色條帶中的Run Block Automation
勾選apply board preset,將這個IP核相關的輸入/輸出信號映射到芯片具體的引腳上,並添加必要的約束。
點擊OK按鈕後啟動自動化,完成後結果如下圖:
通過雙擊圖中的IP核(圖案會變成橙色)可以更改其內部配置。
默認狀態下使能了M_AXI_GP0,可以將PL部分帶AXI從接口的IP連接到PS進行控制。這裏我們暫時不用到PL部分,所以把其禁用,否則驗證設計時會報錯。雙擊方塊,見下圖
完成配置後,右擊圖案,選擇“Validate Design”進行規則檢查。
如果沒錯誤則出現以下提示:
接下來是生成輸出文件並封裝成HDL形式
為上述添加的模塊生成相關的綜合、實現及仿真文件,點擊Flow Navigator->IP Intergrstor->Generator Block Design
生成輸出文件後,將其封裝成頂層HDL文件,Source窗口右擊core(添加的IP核名字),選擇Create HDL Wrapper
完成後,Source窗口多了一個HDL文件Core_wrapper.v
至此,我們完成了一個IP核的內部設計並將其封裝成基本的HDL形式(可以作為一個模塊被其他設計調用),接下來就可以進行RTL分析、綜合、實現和生成硬件比特流文件
下一步,我們將生成比特流文件:
左側導航欄Flow Navigator->Program and Debug->Generate Bitstream,如果之前沒有進行綜合和實現,則系統會提示是否進行,點擊yes即可。
三、使用SDK完成軟件開發
在上一步中我們已經完成了處理器硬件架構的設計,如果此時將比特流文件下載到ZYNQ-7000芯片內部,則此時的芯片將是一款用戶自己定制的處理器,但它還缺乏軟件程序。
這一節,我們將硬件平臺信息導入到SDK
打開工程core,選擇IMPLEMENTATION(這一步是必須的,否則後面會報錯)
接著File->Exprot->Exprot Hardware for SDK,將硬件平臺信息、硬件比特文件全部導入SDK平臺並打開SDK軟件(打開後SDK的system.hdf就是)
註意勾選加入比特流文件
生成完成好,我們就完成了硬件平臺的構建,下一步就是進入SDK進行應用軟件開發了。
File->Launch SDK,SDK開始運行。
左側欄可以看到硬件平臺信息已經被導入。
下一步是創建BSP(板級驅動包)和Application Project(應用程序)
BSP是在硬件平臺上運行程序必不可少的組件,在SDK中選擇File->New->Board Support Package
*裸機開發選standalone
點擊finish以後會出現新創建BSP的配置信息:
這裏我們默認配置即可,點OK
接下來就是建立應用工程,在SDK中選擇File->New->Application Project
命名和選擇信息,完成後點擊Next,
選擇Hello World作為工程模板,Finish。這時左側的工程瀏覽器就出現了剛剛建立的工程文件夾,下拉菜單src中找到helloworld.c,雙擊就可以編輯了
編輯好代碼,點擊保存,然後編譯
在console中查看編譯報告,如果沒有出現錯誤,則編譯成功。下一步就可以連接Zedboard進行板級調試了。
四、進行板級調試
完成應用程序的編寫並編譯成功以後,下一步便是連接PC和Zedboard進行調試。
首先需要2根Micro-USB連接線,分別連接J14(UART)和J17(JTAG),如下圖所示。
這裏稍微說明下J14和J17兩個接口的作用:
(1)J14是USB轉UART串口,在這裏是用來輸出板卡的信息的(比如最簡單是輸出“Hello World”語句,要連接這條線才能在SDK的Console中顯示)
(2)J17是USB-JTAG配置端口,用來配置板卡信息
連接好線後,將跳帽JP7-11全部接地(進入JTAG模式),如下圖所示:
接通Zedboard電源,打開電源開關ON,通過PC的“設備管理器”,查看端口。
註意要辨別哪個COM端口是UART的,後面要用到。
回到SDK,右擊工程lidar->Run As->Run configurations
雙擊Xilinx C/C++ application(GDB),出現“工程名 Debug”,選中後選中右側的STDIO Connection頁
勾選"connect STDIO xxxx",將Port下拉選中UART對應的COM號(比如我的是COM4),下面是數值設置為115200,點擊Apply然後Close
設置好以後,我們就可以開始板級調試了,點擊菜單欄的按鈕進入Run模型(當然在上面你Apply之後直接點Run也是一樣的效果)
*如果是要一步一步調試,則點擊按鈕,進入Debug模式。
*可能會提示沒有配置FPGA,跳過就好。
通過Console就可以查看輸出了。
至此,一個簡單的應用程序就完成了。
回顧一下,整個流程下來包括了以下幾個階段:
1.搭建硬件平臺(在vivado中進行)
2.將硬件平臺信息(包括比特流文件)導入SDK
3.在SDK中建立驅動包和應用工程
4.連接PC和開發板,進行板級調試
Zedboard(二)使用Vivado+SDK開發嵌入式應用程序——實例一