前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Zynq PS之MIO、EMIO调试

Zynq PS之MIO、EMIO调试

作者头像
黑马Amos
发布于 2023-03-21 05:40:11
发布于 2023-03-21 05:40:11
1.1K00
代码可运行
举报
文章被收录于专栏:李家杂货铺zi李家杂货铺zi
运行总次数:0
代码可运行

目录

原理框图

 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内容修改为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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的点灯不起作用。

代码经过上板实测通过。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-01-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原理框图
  •  Vivado中添加&配置Zynq UltraScale+ MPSoc IP
    •  UART设置(仅用于调试,非必需)
    • MIO、EMIO设置
    • DDR配置
  •  执行Generate Output Products
  • 执行Create HDL Wrapper
  • 执行File -> Export ->Export Hardware
  • 执行Launch SDK
  • 新建FSBL工程
  • 新建Hello World工程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档