1. 程式人生 > >ZYBOZ7從入門到進階-3 zyboz7裸機實現Hello World

ZYBOZ7從入門到進階-3 zyboz7裸機實現Hello World

版權宣告:本文為博主原創文章,未經博主允許不得轉載。https://blog.csdn.net/a646123070

上一節,我們已經學會了純PL端的LED點燈實驗,也學會了如何建立一個空的專案,現在我們來學習一下PS端的裸機執行Hello World。

1、建立新工程

首先,按照ZYBOZ7從入門到進階-2中的教程建立一個新工程。

2、新增處理器zynq-7000(IP)核心

在Flow Navigatot視窗下的IP INTEGRATOR子視窗點選create block design按鈕,新建一個block design,填好檔名字和選好所在位置之後點選OK。

建立完成後的block design如下圖所示。

點選Diagram開發介面中的Add IP的加號,通過輸入關鍵詞(ZYNQ)來搜尋需要新增的IP核

選中IP核後,系統會以圖形介面的形式把IP核顯示出來

點選上圖淺綠色條帶中的Run Block Automation

勾選apply board preset,將這個IP核相關的輸入/輸出訊號對映到晶片具體的引腳上,並新增必要的約束。點選OK按鈕後啟動自動化,完成後結果如下圖

通過雙擊圖中的IP核(圖案會變成橙色)可以更改其內部配置。
預設狀態下使能了M_AXI_GP0,可以將PL部分帶AXI從介面的IP連線到PS進行控制。這裡我們需要把PL端和PS端的時鐘連線起來,即把M_AXI_GP0_ACLK與FCLK_CLK0連線起來。

完成配置後,右擊圖案,選擇“Validate Design”(或者使用快捷鍵F6)進行規則檢查。

3、生成輸出檔案並封裝成HDL形式

點選Flow Navigator->IP Intergrstor->Generator Block Design,在彈出的介面選擇generate。

生成輸出檔案後,將其封裝成頂層HDL檔案,Source視窗右擊core(新增的IP核名字),選擇Create HDL Wrapper

完成後,Source視窗多了一個HDL檔案Core_wrapper.v

現在,我們已經完成了一個IP核的內部設計並將其封裝成基本的HDL形式(可以作為一個模組被其他設計呼叫),接下來就可以按照ZYBOZ7從入門到進階-2中的RTL分析、綜合、實現和生成硬體位元流檔案的方法進行RTL分析、綜合、實現和生成硬體位元流檔案

4、利用SDK進行軟體開發

在上一步中我們已經完成了處理器硬體架構的設計,如果此時將位元流檔案下載到ZYNQ-Z7晶片內部,則此時的晶片將是一款使用者自己定製的處理器,但它還缺乏軟體程式。
這一節,我們將硬體平臺資訊匯入到SDK。接著File->Exprot->Exprot Hardware ,將硬體平臺資訊、硬體位元檔案全部匯入SDK平臺。

注意勾選加入位元流檔案

生成完成好,我們就完成了硬體平臺的構建,下一步就是進入SDK進行應用軟體開發了。我們可以通過File->Launch SDK開啟。下圖可以看到硬體平臺資訊已經被匯入

5、建立BSP(板級驅動包)和Application Project(應用程式)

在SDK中選擇File->New->Application Project,填寫專案的名字,在Board Support Package 選項中,我們可以新建板級驅動包,或者使用之前建好的,這裡我們使用新建的板級驅動包。

填寫完成之後點選Next,選擇Hello World模板,點選Finish。

這時左側的工程瀏覽器就出現了剛剛建立的工程資料夾,下拉選單src中找到helloworld.c,雙擊就可以編輯。本文無需編輯。

6、進行板級除錯

首先用usb線連線電腦和開發板,供電方式選擇usb供電,開發板選擇從jtag啟動。(這兩項都是利用跳帽進行選擇的)

然後把開發板的電源開關撥到ON,通過PC的“裝置管理器”,檢視埠。本文使用的埠為COM11

然後回到SDK,在SDK Terminal視窗點選“+”號,填寫串列埠資訊。埠選擇裝置管理器看到的埠,波特率為115200,最後點選OK。(這裡也可以使用第三方的串列埠除錯軟體進行連線)

接著右擊工程Hello->Run As->Run configurations

接著在彈出的頁面,雙擊Xilinx C/C++ application (system Debugger),保持設定,然後點選Run,最後在SDK Terminal視窗就會看到Hello World。

至此,一個簡單的應用程式就完成了。
回顧一下,整個流程下來包括了以下幾個階段:
  1.搭建硬體平臺(在vivado中進行)
  2.將硬體平臺資訊(包括位元流檔案)匯入SDK
  3.在SDK中建立驅動包和應用工程
  4.連線PC和開發板,進行板級除錯

文中使用到的資源、工程我已打包上傳到csdn資源中心。
作者學生一枚,文中難免有錯誤,指教、改錯請→[email protected]