【第二季】CH11_ ZYNQ軟硬調試高級技巧


【第二季】CH11_ ZYNQ軟硬調試高級技巧

軟件和硬件的完美結合才是SOC的優勢和長處,那么開發ZYNQ就需要掌握軟件和硬件開發的調試技巧,這樣才能同時分析軟件或者硬件的運行情況,找到問題,最終解決。那么本章將通過一個簡單的例子帶大家使用vivado+SDK進行系統的調試。

11.1 方案框架

這個實驗中,我們將在上一章工程的基礎上添加一個名為MATH_IP的 Custom IP.並且添加Mark Debug觀察AXI4-Lite總線上的工作情況,添加VIO CORE觀察MATH_IP的工作情況,添加ILA CORE觀察LED的PIN腳輸出情況。

11.2 硬件工程搭建

Step1:做好備份后,直接打開上一章節的硬件工程。

Step2:在Project manager區中單擊Project settings。

wpsA506.tmp

Step3:選擇IP設置區中的repository manager。

wpsA507.tmp

Step:4:單擊+號圖標,將math_ip_0的路徑添加進去(math_ip可在我們附帶的第十一章程序文件夾中的Miz_ip_lib文件夾中找到),單擊OK。

wpsA518.tmp

Step5:雙擊ZYNQ processing System圖標,配置IP。

wpsA519.tmp

Step6:展開PS-PL Cross Trigger interface >Input Cross Trigger, Cross Trigger Input 0設置為:CPU0 DBG REQ、Output Cross Trigger設置為CPU0 DBG ACK,單擊OK完成修改。

wpsA51A.tmp

Step7:單擊 IP iconwpsA52A.tmp 搜索單詞“math ”之后雙擊添加IPCORE。

wpsA52B.tmp

Step8:單擊Click on Run Connection Automation。

wpsA52C.tmp

Step9:勾選math_ip_0 and S_AX之后單擊OK。

wpsA53D.tmp

這個mathi_ip實際上是一個簡單的硬件加法器。雖然這個簡單的加法器在這里沒有實用意義,但是如果換成了硬件算法,那么就具備實用價值了。紅色的方框內ain_vio和bin_vio是我們准備通過邏輯分析抓去的觀察信號。

wpsA53E.tmp

Step10:單擊IP icon wpsA53F.tmp 添加 ila CORE

wpsA550.tmp

Step11:雙擊打開ILA CORE

wpsA551.tmp

Step12:雙擊打開ILA CORE

General Options設置如下

wpsA552.tmp

Probe_Ports設置如下,之后單擊OK

wpsA562.tmp

Step13:連接Probe0到GPIO_LED。

Step14:連接CLK接口到FCLK_CLK0接口

Step15:連接TRIGG_IN 和 TRIGGER_OUT_0、TRIG_OUT和TRIGGER_IN_0

Step16:添加 IP icon wpsA563.tmp 添加vio。

wpsA564.tmp

Step17:雙擊 VIO core修改參數

General Options 設置如下,輸入proble為1 輸出為3

wpsA575.tmp

Probe_in設置位寬為9

wpsA576.tmp

Probe_out0設置位寬:1;Probe_out1設置位寬:8;Probe_out2設置位寬:8;

wpsA577.tmp

Step18:連接

PROBE_IN -> result

PROBE_OUT0 -> sel

PROBE_OUT1 -> ain_vio

PROBE_OUT2 -> bin_vio

CLK-> FCLK_CKL0

wpsA587.tmp

Step19:連接好的系統整體電路。

wpsA588.tmp

Step20:選中AXI Interconnect 和math_0 CORE之間的S_AXI總線

Step21:右擊選擇Mark Debug

wpsA589.tmp

Setp22:接下來依然是,右鍵單擊Block文件,文件選擇Generate the Output Products。

Step23:繼續右鍵單擊Block文件,選擇Create a HDL wrapper,根據Block文件內容產生一個HDL 的頂層文件,並選擇讓vivado自動完成。

Setp24:單擊Run Synthesis,如果有 Save 對話框彈出選擇保存。

Setp25:綜合結束后選擇Synthesized Design option單擊 OK。

Step26:在如下對話框中找到Unassigned debug nets(如果對話框沒有出現選擇 菜單->Window > Debug)

wpsA59A.tmp

Step27:右擊 Unassigned Debug Nets 選擇Set up Debug… 之后單擊 Next

Step28:刪除紅色錯誤的信號然后單擊Next 到結束

wpsA59B.tmp

Step29:生成Bit文件。

11.3 加載到SDK

Step1:導出硬件。

Step2:新建一個空SDK工程,並添加一個main.c的文件。

Step3:在main.c文件中添加以下程序,按Ctrl+S保存后自動開始編譯。

/*

* main.c

*

*  Created on: 2016年11月8日

*      Author: Administrator

*/

#include <stdio.h>

#include "xparameters.h"

#include "xil_io.h"

#include "sleep.h"

#include "xil_types.h"

#define XGpio_axi_WriteReg(BaseAddr, RegOffset, Data) \

Xil_Out32((BaseAddr) + (u32)(RegOffset), (u32)(Data))

#define XPAR_GPIO_LITE_ML_0 XPAR_GPIO_LITE_ML_0_BASEADDR

#define GPIO_LITE_ML_REG0 0

#define MATH_IP_BASE XPAR_MATH_IP_0_BASEADDR

#define MATH_REG0 0

#define MATH_REG1 4

#define MATH_REG2 0

int main()

{

u8 i=0;

u8 val=0;

Xil_Out32(MATH_IP_BASE+MATH_REG0,0X42);

Xil_Out32(MATH_IP_BASE+MATH_REG1,0X12);

val = Xil_In32(MATH_IP_BASE+MATH_REG2);

xil_printf("val=%x",val);

XGpio_axi_WriteReg(XPAR_GPIO_LITE_ML_0,GPIO_LITE_ML_REG0,0X00);

while(1)

{

for(i=0;i<=3;i++)

{

XGpio_axi_WriteReg(XPAR_GPIO_LITE_ML_0,GPIO_LITE_ML_REG0,1<<i);

usleep(500000);

}

i=0;

}

}

Step4:右擊工程,選擇Debug as ->Debug configuration。

Step5:選中system Debugger,雙擊創建一個系統調試。

wpsA59C.tmp

Step6:設置系統調試。

wpsA5AD.tmp

Step7:回到VIVADO單擊Open Target->Auto Connect

wpsA5AE.tmp

Step8:加載完成后的界面

wpsA5AF.tmp

Step9:選擇菜單->window->Debugprobes 選擇AXI_WVALID做為觸發信號

wpsA5BF.tmp

Step10:設置觸發條件為1

wpsA5C0.tmp

Step11:設置觸發位置為512

wpsA5C1.tmp

Step12:單擊箭頭所指向啟動觸發

wpsA5D2.tmp

Step13:進入等待觸發狀態

wpsA5D3.tmp

Step14:打開系統自帶的串口調試軟件。

Step15:在以下位置加入斷點(在圖中位置雙擊即可加入斷點),方便調試。

wpsA5D4.tmp

Step16:單擊運行wpsA5E4.tmp后VIVADO  HW_ILA2 窗口采集到波形輸出,可以看到AXI總線的工作時序。

wpsA5E5.tmp

Step17:同時可以觀察到VIO核采集到的數據

wpsA5E6.tmp

Step18:當再次單擊wpsA5F7.tmp后控制台輸出0X54

Step19:HW_ILA1 窗口采集到的數據是GPIO_LED的值為0x02,同時可觀察到開發板上的LED2亮起。

wpsA5F8.tmp

11.4 本章小結

在這個實驗中,筆者添加了一個用戶自定義的IP CORE 並且通過使用VIO CORE觀察其數據。通過ILA CORE觀察 AXI總線的通信時序情況,以及EMIO 的輸出情況。其中難點就是SDK 和VIVAOD的聯合調試。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM