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"//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 版本发布 | 离线安装 & 前端重构