Zynq PS之MIO、EMIO调试

目录

原理框图

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

 UART设置(仅用于调试,非必需)

MIO、EMIO设置

DDR配置

 执行Generate Output Products

执行Create HDL Wrapper

执行File -> Export ->Export Hardware

执行Launch SDK

新建FSBL工程

新建Hello World工程


原理框图

本文用于点亮PS MIO52和PL L15接的LED灯。

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

 UART设置(仅用于调试,非必需)

MIO、EMIO设置

 

EMIO=1表示只选用1个EMIO,它的编号是78,通过pinL14去点D2灯。

MIO52用于点D1灯。

DDR配置

Other Options设置如下:

 

 执行Generate Output Products

右键bd,选择Generate the Output Products。

Generate the Output Products就是vivado用IP的形式(.v)实现bd框图。

执行Create HDL Wrapper

右键bd,选择Create HDL Wrapper。

 Create a HDL wrapper就是产生1个*_wrapper.v的顶层文件。

执行File -> Export ->Export Hardware

因为MIO、EMIO涉及到PS、PL的操作,因此需要执行综合和实现,并约束引脚,如下图:

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

 

执行Launch SDK

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

新建FSBL工程

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

 Next后选择ZYNQ MP FSBL,见下图。

点击Finish,Project Explorer内容更新为:

 

hello_app_prj和hello_app_prj_bsp为新增的文件夹。

新建Hello World工程

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

 Next后选择Hello World,见下图:

点击Finish,Project Explorer内容更新为:

 

 打开helloworld.c内容修改为:

 

#include <stdio.h>
#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_ID


int 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的点灯不起作用。

代码经过上板实测通过。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力不期待

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值