Zynq PS之MIO、EMIO調試

2023-01-05 19:29:16 來源:51CTO博客

原理框圖

本文用于點亮PSMIO52和PLL15接的LED燈。

1.1.1Vivado中添加&配置Zynq UltraScale+ MPSoc IP

1.1.1.1UART設置(僅用于調試,非必需)

1.1.1.2MIO、EMIO設置

EMIO=1表示只選用1個EMIO,它的編號是78,通過pinL14去點D2燈。


(資料圖片)

MIO52用于點D1燈。

1.1.1.3DDR配置

硬件設計中選擇的DDR4型號是MT40A2G8VA-062E IT,DDR配置如下圖:

Other Options設置如下:

1.1.2執行Generate Output Products

右鍵bd,選擇Generate the Output Products。

Generate the Output Products就是vivado用IP的形式(.v)實現bd框圖。

1.1.3執行Create HDL Wrapper

右鍵bd,選擇Create HDL Wrapper。

Create a HDL wrapper就是產生1個*_wrapper.v的頂層文件。

1.1.4執行File -> Export ->Export Hardware

因為MIO、EMIO涉及到PS、PL的操作,因此需要執行綜合和實現,并約束引腳,如下圖:

依次執行Generate Bitstream,Export Hardware(需勾選Include bitstream)即可。

1.1.5執行Launch SDK

打開SDK后的Project Explorer界面如下:

1.1.6新建FSBL工程

File->New->Application Project,界面如下:

Next后選擇ZYNQ MP FSBL,見下圖。

點擊Finish,Project Explorer內容更新為:

hello_app_prj和hello_app_prj_bsp為新增的文件夾。

1.1.7新建Hello World工程

File->New->Application Project,界面如下:

Next后選擇Hello World,見下圖:

點擊Finish,Project Explorer內容更新為:

hello_world和hello_world_bsp為新增的文件夾。

打開helloworld.c內容修改為:

#include #include "platform.h"#include "xil_printf.h"#include "sleep.h"#include "xgpiops.h"http://ps_led#define MIO52_LED 53//pl_led#define EMIO_78 78#define GPIO_DEVICE_ID XPAR_XGPIOPS_0_DEVICE_IDint main(){    XGpioPs_Config *ConfigPtr;    XGpioPs Gpio;    init_platform();    //根據器件id,查找器件的配置信息,    ConfigPtr = XGpioPs_LookupConfig(GPIO_DEVICE_ID);    //初始化GPIO驅動    XGpioPs_CfgInitialize(&Gpio, ConfigPtr,ConfigPtr->BaseAddr);    //把gpio的方向設置為輸出(0:輸入,1:輸出)    XGpioPs_SetDirectionPin(&Gpio, MIO52_LED, 1);    XGpioPs_SetDirectionPin(&Gpio, EMIO_78, 1);    //設置輸出使能(0:關閉/1:打開)    XGpioPs_SetOutputEnablePin(&Gpio, MIO52_LED, 1);    XGpioPs_SetOutputEnablePin(&Gpio, EMIO_78, 1);    while(1){        print("Hello World\n\r");        // 寫數據到GPIO的輸出引腳:點亮        XGpioPs_WritePin(&Gpio, MIO52_LED, 0x0);        XGpioPs_WritePin(&Gpio, EMIO_78, 0x0);        sleep(1);        // 寫數據到GPIO的輸出引腳:點亮        XGpioPs_WritePin(&Gpio, MIO52_LED, 0x1);        XGpioPs_WritePin(&Gpio, EMIO_78, 0x1);        sleep(1);    }    cleanup_platform();    return 0;}

接上串口線,執行debug或run,Run Configuration設置如下:

因為有bit,所以需要勾選Program FPGA,測試發現不勾選PL Powerup時,EMIO的點燈不起作用。

代碼經過上板實測通過。

標簽: 硬件設計 不起作用

上一篇:熱門:達夢數據庫DM8安裝準備及注意事項
下一篇:SREWorks v1.4 版本發布 | 離線安裝 & 前端重構